home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.plaf.basic;
-
- import com.sun.java.swing.Icon;
- import com.sun.java.swing.JComponent;
- import com.sun.java.swing.JTabbedPane;
- import com.sun.java.swing.KeyStroke;
- import com.sun.java.swing.LookAndFeel;
- import com.sun.java.swing.SwingConstants;
- import com.sun.java.swing.SwingUtilities;
- import com.sun.java.swing.UIManager;
- import com.sun.java.swing.event.ChangeEvent;
- import com.sun.java.swing.event.ChangeListener;
- import com.sun.java.swing.plaf.ComponentUI;
- import com.sun.java.swing.plaf.TabbedPaneUI;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.LayoutManager;
- import java.awt.Rectangle;
- import java.awt.Toolkit;
- import java.awt.event.FocusListener;
- import java.awt.event.MouseListener;
- import java.io.Serializable;
- import java.util.EventObject;
-
- public class BasicTabbedPaneUI extends TabbedPaneUI implements LayoutManager, ChangeListener, Serializable, SwingConstants {
- protected static int spacingHeight = 2;
- protected static int spacingWidth = 4;
- protected static int iconSpacingWidth = 4;
- protected static int selectedTabRaisePad = 3;
- protected static int selectedTabWidenPad = 4;
- protected static Insets contentBorderInsets = new Insets(2, 2, 3, 3);
- protected static Insets tabsOnTopTabInsets = new Insets(3, 2, 0, 2);
- protected static Insets tabsOnLeftTabInsets = new Insets(2, 3, 2, 0);
- protected static Insets tabsOnBottomTabInsets = new Insets(0, 2, 3, 2);
- protected static Insets tabsOnRightTabInsets = new Insets(2, 0, 2, 3);
- protected int overlay = 2;
- protected int xNudge;
- protected int yNudge;
- protected Color tabHighlight;
- protected Color tabShadow;
- protected Color tabDarkShadow;
- protected Color focus;
- protected int[] tabRuns = new int[10];
- protected int runCount;
- protected int selectedRun;
- protected Rectangle[] rects = new Rectangle[0];
- protected int maxTabHeight;
- protected int maxTabWidth;
- protected Component visibleComponent;
- protected MouseListener mouseGetter;
- protected FocusListener focusGetter;
- protected ChangeListener tabChangeListener;
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicTabbedPaneUI();
- }
-
- public void installUI(JComponent var1) {
- ((Container)var1).setLayout(this);
- this.installDefaults(var1);
- this.installListeners(var1);
- this.installKeyboardActions(var1);
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallKeyboardActions(var1);
- this.uninstallListeners(var1);
- this.uninstallDefaults(var1);
- ((Container)var1).setLayout((LayoutManager)null);
- }
-
- protected void installDefaults(JComponent var1) {
- LookAndFeel.installColorsAndFont(var1, "TabbedPane.tabBackground", "TabbedPane.tabForeground", "TabbedPane.font");
- this.tabHighlight = UIManager.getColor("TabbedPane.tabHighlight");
- this.tabShadow = UIManager.getColor("TabbedPane.tabShadow");
- this.tabDarkShadow = UIManager.getColor("TabbedPane.tabDarkShadow");
- this.focus = UIManager.getColor("TabbedPane.focus");
- }
-
- protected void uninstallDefaults(JComponent var1) {
- }
-
- protected void installListeners(JComponent var1) {
- if ((this.mouseGetter = this.createMouseListener(var1)) != null) {
- ((Component)var1).addMouseListener(this.mouseGetter);
- }
-
- if ((this.focusGetter = this.createFocusListener(var1)) != null) {
- ((Component)var1).addFocusListener(this.focusGetter);
- }
-
- if ((this.tabChangeListener = this.createChangeListener(var1)) != null) {
- ((JTabbedPane)var1).addChangeListener(this.tabChangeListener);
- }
-
- }
-
- protected void uninstallListeners(JComponent var1) {
- if (this.mouseGetter != null) {
- ((Component)var1).removeMouseListener(this.mouseGetter);
- this.mouseGetter = null;
- }
-
- if (this.focusGetter != null) {
- ((Component)var1).removeFocusListener(this.focusGetter);
- this.focusGetter = null;
- }
-
- if (this.tabChangeListener != null) {
- ((JTabbedPane)var1).removeChangeListener(this.tabChangeListener);
- }
-
- }
-
- protected MouseListener createMouseListener(JComponent var1) {
- return new MouseGetter(this);
- }
-
- protected FocusListener createFocusListener(JComponent var1) {
- return new FocusGetter(this);
- }
-
- protected ChangeListener createChangeListener(JComponent var1) {
- return this;
- }
-
- protected void installKeyboardActions(JComponent var1) {
- JTabbedPane var2 = (JTabbedPane)var1;
- var1.registerKeyboardAction(new 1(var2, this), KeyStroke.getKeyStroke(39, 0), 0);
- var1.registerKeyboardAction(new 2(var2, this), KeyStroke.getKeyStroke(37, 0), 0);
- var1.registerKeyboardAction(new 3(var2, this), KeyStroke.getKeyStroke(38, 0), 0);
- var1.registerKeyboardAction(new 4(var2, this), KeyStroke.getKeyStroke(40, 0), 0);
- }
-
- protected void uninstallKeyboardActions(JComponent var1) {
- var1.resetKeyboardActions();
- }
-
- public void paint(Graphics var1, JComponent var2) {
- JTabbedPane var3 = (JTabbedPane)var2;
- int var4 = var3.getSelectedIndex();
- int var5 = var3.getTabPlacement();
- int var6 = var3.getTabCount();
- if (var6 != this.rects.length) {
- this.calculateLayoutInfo(var3);
- }
-
- Rectangle var7 = new Rectangle();
- Rectangle var8 = new Rectangle();
- Rectangle var9 = var1.getClipBounds();
- ((JComponent)var3).getInsets();
-
- for(int var10 = this.runCount - 1; var10 >= 0; --var10) {
- int var11 = this.tabRuns[var10];
- int var12 = this.tabRuns[var10 == this.runCount - 1 ? 0 : var10 + 1];
- int var13 = var12 != 0 ? var12 - 1 : var6 - 1;
-
- for(int var14 = var11; var14 <= var13; ++var14) {
- if (this.rects[var14].intersects(var9)) {
- this.paintTab(var1, var3, var5, this.rects, var14, var7, var8);
- }
- }
- }
-
- if (var4 >= 0 && this.getRunForTab(var3, var6, var4) == 0 && this.rects[var4].intersects(var9)) {
- this.paintTab(var1, var3, var5, this.rects, var4, var7, var8);
- }
-
- this.paintContentBorder(var1, var3, var5, var4);
- }
-
- protected void paintTab(Graphics var1, JTabbedPane var2, int var3, Rectangle[] var4, int var5, Rectangle var6, Rectangle var7) {
- Rectangle var8 = var4[var5];
- int var9 = var2.getSelectedIndex();
- boolean var10 = var9 == var5;
- this.xNudge = this.calculateXNudge(var2, var3, var5, var10);
- this.yNudge = this.calculateYNudge(var2, var3, var5, var10);
- this.paintTabBackground(var1, var2, var3, var5, var8.x, var8.y, var8.width, var8.height, var10);
- this.paintTabBorder(var1, var2, var3, var5, var8.x, var8.y, var8.width, var8.height, var10);
- String var11 = var2.getTitleAt(var5);
- Font var12 = ((Component)var2).getFont();
- FontMetrics var13 = var1.getFontMetrics(var12);
- Icon var14 = this.getIconForTab(var2, var5);
- this.layoutLabel(var3, var13, var11, var14, var8, var6, var7, var10);
- this.paintText(var1, var2, var3, var12, var13, var5, var11, var7, var10);
- this.paintIcon(var1, var2, var3, var5, var14, var6, var10);
- this.paintFocusIndicator(var1, var2, var3, var4, var5, var6, var7, var10);
- }
-
- protected void layoutLabel(int var1, FontMetrics var2, String var3, Icon var4, Rectangle var5, Rectangle var6, Rectangle var7, boolean var8) {
- var7.x = var7.y = var6.x = var6.y = 0;
- SwingUtilities.layoutCompoundLabel(var2, var3, var4, 0, 0, 0, 4, var5, var6, var7, iconSpacingWidth);
- }
-
- protected void paintIcon(Graphics var1, JTabbedPane var2, int var3, int var4, Icon var5, Rectangle var6, boolean var7) {
- if (var5 != null) {
- var5.paintIcon(var2, var1, var6.x + this.xNudge, var6.y + this.yNudge);
- }
-
- }
-
- protected void paintText(Graphics var1, JTabbedPane var2, int var3, Font var4, FontMetrics var5, int var6, String var7, Rectangle var8, boolean var9) {
- var1.setFont(var4);
- if (var2.isEnabledAt(var6)) {
- var1.setColor(var2.getForegroundAt(var6));
- var1.drawString(var7, var8.x + this.xNudge, var8.y + var5.getAscent() + this.yNudge);
- } else {
- var1.setColor(var2.getBackgroundAt(var6).brighter());
- var1.drawString(var7, var8.x + this.xNudge, var8.y + var5.getAscent() + this.yNudge);
- var1.setColor(var2.getBackgroundAt(var6).darker());
- var1.drawString(var7, var8.x + this.xNudge - 1, var8.y + var5.getAscent() + this.yNudge - 1);
- }
- }
-
- protected int calculateXNudge(JTabbedPane var1, int var2, int var3, boolean var4) {
- Rectangle var5 = this.rects[var3];
- int var6 = 0;
- switch (var2) {
- case 1:
- case 3:
- default:
- var6 = var5.width % 2;
- break;
- case 2:
- var6 = var4 ? -1 : 1;
- break;
- case 4:
- var6 = var4 ? 1 : -1;
- }
-
- return var6;
- }
-
- protected int calculateYNudge(JTabbedPane var1, int var2, int var3, boolean var4) {
- Rectangle var5 = this.rects[var3];
- int var6 = 0;
- switch (var2) {
- case 1:
- default:
- var6 = var4 ? -1 : 1;
- break;
- case 2:
- case 4:
- var6 = var5.height % 2;
- break;
- case 3:
- var6 = var4 ? 1 : -1;
- }
-
- return var6;
- }
-
- protected void paintFocusIndicator(Graphics var1, JTabbedPane var2, int var3, Rectangle[] var4, int var5, Rectangle var6, Rectangle var7, boolean var8) {
- Rectangle var9 = var4[var5];
- if (((JComponent)var2).hasFocus() && var8) {
- var1.setColor(this.focus);
- int var10;
- int var11;
- int var12;
- int var13;
- switch (var3) {
- case 1:
- default:
- var10 = var9.x + 3;
- var11 = var9.y + 3;
- var12 = var9.width - 6;
- var13 = var9.height - 5;
- break;
- case 2:
- var10 = var9.x + 3;
- var11 = var9.y + 3;
- var12 = var9.width - 5;
- var13 = var9.height - 6;
- break;
- case 3:
- var10 = var9.x + 3;
- var11 = var9.y + 2;
- var12 = var9.width - 6;
- var13 = var9.height - 5;
- break;
- case 4:
- var10 = var9.x + 2;
- var11 = var9.y + 3;
- var12 = var9.width - 5;
- var13 = var9.height - 6;
- }
-
- BasicGraphicsUtils.drawDashedRect(var1, var10, var11, var12, var13);
- }
-
- }
-
- Rectangle getFocusedTabBounds(JTabbedPane var1) {
- if (this.rects.length != var1.getTabCount()) {
- this.calculateLayoutInfo(var1);
- }
-
- return this.rects[var1.getSelectedIndex()];
- }
-
- protected void paintTabBorder(Graphics var1, JTabbedPane var2, int var3, int var4, int var5, int var6, int var7, int var8, boolean var9) {
- var1.setColor(this.tabHighlight);
- switch (var3) {
- case 1:
- default:
- var1.drawLine(var5, var6 + 2, var5, var6 + var8 - 1);
- var1.drawLine(var5 + 1, var6 + 1, var5 + 1, var6 + 1);
- var1.drawLine(var5 + 2, var6, var5 + var7 - 3, var6);
- var1.setColor(this.tabShadow);
- var1.drawLine(var5 + var7 - 2, var6 + 2, var5 + var7 - 2, var6 + var8 - 1);
- var1.setColor(this.tabDarkShadow);
- var1.drawLine(var5 + var7 - 1, var6 + 2, var5 + var7 - 1, var6 + var8 - 1);
- var1.drawLine(var5 + var7 - 2, var6 + 1, var5 + var7 - 2, var6 + 1);
- return;
- case 2:
- var1.drawLine(var5 + 1, var6 + var8 - 2, var5 + 1, var6 + var8 - 2);
- var1.drawLine(var5, var6 + 2, var5, var6 + var8 - 3);
- var1.drawLine(var5 + 1, var6 + 1, var5 + 1, var6 + 1);
- var1.drawLine(var5 + 2, var6, var5 + var7 - 1, var6);
- var1.setColor(this.tabShadow);
- var1.drawLine(var5 + 2, var6 + var8 - 2, var5 + var7 - 1, var6 + var8 - 2);
- var1.setColor(this.tabDarkShadow);
- var1.drawLine(var5 + 2, var6 + var8 - 1, var5 + var7 - 1, var6 + var8 - 1);
- return;
- case 3:
- var1.drawLine(var5, var6, var5, var6 + var8 - 3);
- var1.drawLine(var5 + 1, var6 + var8 - 2, var5 + 1, var6 + var8 - 2);
- var1.setColor(this.tabShadow);
- var1.drawLine(var5 + 2, var6 + var8 - 2, var5 + var7 - 3, var6 + var8 - 2);
- var1.drawLine(var5 + var7 - 2, var6, var5 + var7 - 2, var6 + var8 - 3);
- var1.setColor(this.tabDarkShadow);
- var1.drawLine(var5 + 2, var6 + var8 - 1, var5 + var7 - 3, var6 + var8 - 1);
- var1.drawLine(var5 + var7 - 2, var6 + var8 - 2, var5 + var7 - 2, var6 + var8 - 2);
- var1.drawLine(var5 + var7 - 1, var6, var5 + var7 - 1, var6 + var8 - 3);
- return;
- case 4:
- var1.drawLine(var5, var6, var5 + var7 - 3, var6);
- var1.setColor(this.tabShadow);
- var1.drawLine(var5, var6 + var8 - 2, var5 + var7 - 3, var6 + var8 - 2);
- var1.drawLine(var5 + var7 - 2, var6 + 2, var5 + var7 - 2, var6 + var8 - 3);
- var1.setColor(this.tabDarkShadow);
- var1.drawLine(var5 + var7 - 2, var6 + 1, var5 + var7 - 2, var6 + 1);
- var1.drawLine(var5 + var7 - 2, var6 + var8 - 2, var5 + var7 - 2, var6 + var8 - 2);
- var1.drawLine(var5 + var7 - 1, var6 + 2, var5 + var7 - 1, var6 + var8 - 3);
- var1.drawLine(var5, var6 + var8 - 1, var5 + var7 - 3, var6 + var8 - 1);
- }
- }
-
- protected void paintTabBackground(Graphics var1, JTabbedPane var2, int var3, int var4, int var5, int var6, int var7, int var8, boolean var9) {
- var1.setColor(var2.getBackgroundAt(var4));
- switch (var3) {
- case 1:
- default:
- var1.fillRect(var5 + 1, var6 + 1, var7 - 3, var8 - 1);
- return;
- case 2:
- var1.fillRect(var5 + 1, var6 + 1, var7 - 2, var8 - 3);
- return;
- case 3:
- var1.fillRect(var5 + 1, var6, var7 - 3, var8 - 1);
- return;
- case 4:
- var1.fillRect(var5, var6 + 1, var7 - 2, var8 - 3);
- }
- }
-
- protected void paintContentBorder(Graphics var1, JTabbedPane var2, int var3, int var4) {
- Rectangle var5 = ((Component)var2).getBounds();
- Insets var6 = ((JComponent)var2).getInsets();
- int var7 = var5.height - (var6.top + var6.bottom);
- int var8 = var5.width - (var6.left + var6.right);
- int var9 = 0;
- int var10 = 0;
- int var11 = var8;
- int var12 = var7;
- switch (var3) {
- case 1:
- default:
- var10 = this.totalTabHeight(var2, var3, this.runCount);
- var12 = var7 - var10;
- break;
- case 2:
- var9 = this.totalTabWidth(var2, var3, this.runCount);
- var11 = var8 - var9;
- break;
- case 3:
- var12 = var7 - this.totalTabHeight(var2, var3, this.runCount);
- break;
- case 4:
- var11 = var8 - this.totalTabWidth(var2, var3, this.runCount);
- }
-
- this.paintContentBorderTopEdge(var1, var3, var4, var9, var10, var11, var12);
- this.paintContentBorderLeftEdge(var1, var3, var4, var9, var10, var11, var12);
- this.paintContentBorderBottomEdge(var1, var3, var4, var9, var10, var11, var12);
- this.paintContentBorderRightEdge(var1, var3, var4, var9, var10, var11, var12);
- }
-
- protected void paintContentBorderTopEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) {
- var1.setColor(this.tabHighlight);
- if (var2 == 1 && var3 >= 0 && this.rects[var3].y + this.rects[var3].height + 1 >= var5) {
- Rectangle var8 = this.rects[var3];
- var1.drawLine(var4, var5, var8.x - 1, var5);
- if (var8.x + var8.width < var4 + var6 - 2) {
- var1.drawLine(var8.x + var8.width, var5, var4 + var6 - 2, var5);
- } else {
- var1.setColor(this.tabShadow);
- var1.drawLine(var4 + var6 - 2, var5, var4 + var6 - 2, var5);
- }
- } else {
- var1.drawLine(var4, var5, var4 + var6 - 2, var5);
- }
- }
-
- protected void paintContentBorderLeftEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) {
- var1.setColor(this.tabHighlight);
- if (var2 == 2 && var3 >= 0 && this.rects[var3].x + this.rects[var3].width + 1 >= var4) {
- Rectangle var8 = this.rects[var3];
- var1.drawLine(var4, var5, var4, var8.y - 1);
- if (var8.y + var8.height < var5 + var7 - 2) {
- var1.drawLine(var4, var8.y + var8.height, var4, var5 + var7 - 2);
- }
-
- } else {
- var1.drawLine(var4, var5, var4, var5 + var7 - 2);
- }
- }
-
- protected void paintContentBorderBottomEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) {
- var1.setColor(this.tabShadow);
- if (var2 == 3 && var3 >= 0 && this.rects[var3].y - 1 <= var7) {
- Rectangle var8 = this.rects[var3];
- var1.drawLine(var4 + 1, var5 + var7 - 2, var8.x - 1, var5 + var7 - 2);
- var1.setColor(this.tabDarkShadow);
- var1.drawLine(var4, var5 + var7 - 1, var8.x - 1, var5 + var7 - 1);
- if (var8.x + var8.width < var4 + var6 - 2) {
- var1.setColor(this.tabShadow);
- var1.drawLine(var8.x + var8.width, var5 + var7 - 2, var4 + var6 - 2, var5 + var7 - 2);
- var1.setColor(this.tabDarkShadow);
- var1.drawLine(var8.x + var8.width, var5 + var7 - 1, var4 + var6 - 1, var5 + var7 - 1);
- }
-
- } else {
- var1.drawLine(var4 + 1, var5 + var7 - 2, var4 + var6 - 2, var5 + var7 - 2);
- var1.setColor(this.tabDarkShadow);
- var1.drawLine(var4, var5 + var7 - 1, var4 + var6 - 1, var5 + var7 - 1);
- }
- }
-
- protected void paintContentBorderRightEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) {
- var1.setColor(this.tabShadow);
- if (var2 == 4 && var3 >= 0 && this.rects[var3].x - 1 <= var6) {
- Rectangle var8 = this.rects[var3];
- var1.drawLine(var4 + var6 - 2, var5 + 1, var4 + var6 - 2, var8.y - 1);
- var1.setColor(this.tabDarkShadow);
- var1.drawLine(var4 + var6 - 1, var5, var4 + var6 - 1, var8.y - 1);
- if (var8.y + var8.height < var5 + var7 - 2) {
- var1.setColor(this.tabShadow);
- var1.drawLine(var4 + var6 - 2, var8.y + var8.height, var4 + var6 - 2, var5 + var7 - 2);
- var1.setColor(this.tabDarkShadow);
- var1.drawLine(var4 + var6 - 1, var8.y + var8.height, var4 + var6 - 1, var5 + var7 - 2);
- }
-
- } else {
- var1.drawLine(var4 + var6 - 2, var5 + 1, var4 + var6 - 2, var5 + var7 - 3);
- var1.setColor(this.tabDarkShadow);
- var1.drawLine(var4 + var6 - 1, var5, var4 + var6 - 1, var5 + var7 - 1);
- }
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- JTabbedPane var2 = (JTabbedPane)var1;
- return this.calculateSize(var2, var2.getTabPlacement(), false);
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- JTabbedPane var2 = (JTabbedPane)var1;
- return this.calculateSize(var2, var2.getTabPlacement(), true);
- }
-
- protected Dimension calculateSize(JTabbedPane var1, int var2, boolean var3) {
- Insets var4 = ((JComponent)var1).getInsets();
- Insets var5 = this.getContentBorderInsets(var1, var2);
- Dimension var6 = new Dimension(0, 0);
- int var7 = var5.top + var5.bottom;
- int var8 = var5.left + var5.right;
- int var9 = 0;
- int var10 = 0;
-
- for(int var11 = 0; var11 < var1.getTabCount(); ++var11) {
- Component var12 = var1.getComponentAt(var11);
- if (var12 instanceof JComponent) {
- if (var12.getFont() == null) {
- var12.setFont(((Component)var1).getFont());
- }
-
- Dimension var13 = var3 ? var12.getMinimumSize() : var12.getPreferredSize();
- if (var13 != null) {
- var10 = Math.max(var13.height, var10);
- var9 = Math.max(var13.width, var9);
- }
- }
- }
-
- var8 += var9;
- var7 += var10;
- int var16 = 0;
- switch (var2) {
- case 1:
- case 3:
- default:
- var16 = this.preferredTotalTabHeight(var1, var2, this.getMetrics(var1), var8);
- var7 += var16;
- break;
- case 2:
- case 4:
- var16 = this.preferredTotalTabWidth(var1, var2, this.getMetrics(var1), var7);
- var8 += var16;
- }
-
- return new Dimension(var8 + var4.left + var4.right, var7 + var4.bottom + var4.top);
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
- }
-
- public void addLayoutComponent(String var1, Component var2) {
- }
-
- public void removeLayoutComponent(Component var1) {
- }
-
- public Dimension preferredLayoutSize(Container var1) {
- return new Dimension(((Component)var1).getBounds().width, ((Component)var1).getBounds().height);
- }
-
- public Dimension minimumLayoutSize(Container var1) {
- return new Dimension(0, 0);
- }
-
- public void layoutContainer(Container var1) {
- JTabbedPane var2 = (JTabbedPane)var1;
- this.layoutTabbedPane(var2, var2.getTabPlacement());
- }
-
- protected void layoutTabbedPane(JTabbedPane var1, int var2) {
- Insets var3 = ((JComponent)var1).getInsets();
- Insets var4 = this.getContentBorderInsets(var1, var2);
- int var5 = var1.getSelectedIndex();
- if (var5 < 0) {
- if (this.visibleComponent != null) {
- this.setVisibleComponent(var1, (Component)null);
- return;
- }
- } else {
- int var10 = 0;
- int var11 = 0;
- Component var12 = var1.getComponentAt(var5);
- boolean var13 = false;
- if (var12 != null) {
- if (var12.getParent() == null && this.visibleComponent != null && SwingUtilities.findFocusOwner(this.visibleComponent) != null) {
- var13 = true;
- }
-
- this.calculateLayoutInfo(var1);
- Rectangle var14 = ((Component)var1).getBounds();
- this.setVisibleComponent(var1, var12);
- int var6;
- int var7;
- switch (var2) {
- case 1:
- default:
- var11 = this.totalTabHeight(var1, var2, this.runCount);
- var6 = var3.left + var4.left;
- var7 = var3.top + var11 + var4.top;
- break;
- case 2:
- var10 = this.totalTabWidth(var1, var2, this.runCount);
- var6 = var3.left + var10 + var4.left;
- var7 = var3.top + var4.top;
- break;
- case 3:
- var11 = this.totalTabHeight(var1, var2, this.runCount);
- var6 = var3.left + var4.left;
- var7 = var3.top + var4.top;
- break;
- case 4:
- var10 = this.totalTabWidth(var1, var2, this.runCount);
- var6 = var3.left + var4.left;
- var7 = var3.top + var4.top;
- }
-
- int var8 = var14.width - var10 - var3.left - var3.right - var4.left - var4.right;
- int var9 = var14.height - var11 - var3.top - var3.bottom - var4.top - var4.bottom;
- var12.setBounds(var6, var7, var8, var9);
- var12.validate();
- if (var13) {
- if (var12.isFocusTraversable()) {
- var12.requestFocus();
- var13 = false;
- } else if (var12 instanceof JComponent && ((JComponent)var12).requestDefaultFocus()) {
- var13 = false;
- }
-
- if (var13) {
- ((JComponent)var1).requestFocus();
- }
- }
- }
- }
-
- }
-
- public void stateChanged(ChangeEvent var1) {
- JTabbedPane var2 = (JTabbedPane)((EventObject)var1).getSource();
- ((Container)var2).doLayout();
- ((Component)var2).repaint();
- }
-
- protected Component getVisibleComponent(JTabbedPane var1) {
- int var2 = var1.getTabCount();
-
- while(var2-- > 0) {
- Component var3 = var1.getComponentAt(var2);
- if (var3 != null && var3.getParent() == var1) {
- return var3;
- }
- }
-
- return null;
- }
-
- protected void setVisibleComponent(JTabbedPane var1, Component var2) {
- if (this.visibleComponent != var2) {
- if (this.visibleComponent != null) {
- ((Container)var1).remove(this.visibleComponent);
- }
-
- if (var2 != null) {
- ((Container)var1).add(var2);
- }
-
- this.visibleComponent = var2;
- }
- }
-
- protected void calculateLayoutInfo(JTabbedPane var1) {
- this.calculateLayoutInfo(var1, var1.getTabPlacement());
- }
-
- protected void calculateLayoutInfo(JTabbedPane var1, int var2) {
- Font var3 = ((Component)var1).getFont();
- int var4 = var1.getTabCount();
- int var5 = var1.getSelectedIndex();
- this.assureRectsCreated(var4);
- this.arrangeTabs(var1, var2, var4, var3);
- this.padSelectedTab(var1, var2, var5);
- }
-
- protected void assureRectsCreated(int var1) {
- int var2 = this.rects.length;
- if (var1 != var2) {
- Rectangle[] var3 = new Rectangle[var1];
- System.arraycopy(this.rects, 0, var3, 0, Math.min(var2, var1));
- this.rects = var3;
-
- for(int var4 = var2; var4 < var1; ++var4) {
- this.rects[var4] = new Rectangle();
- }
- }
-
- }
-
- protected void expandTabRunsArray() {
- int var1 = this.tabRuns.length;
- int[] var2 = new int[var1 + 10];
- System.arraycopy(this.tabRuns, 0, var2, 0, this.runCount);
- this.tabRuns = var2;
- }
-
- protected void arrangeTabs(JTabbedPane var1, int var2, int var3, Font var4) {
- FontMetrics var5 = Toolkit.getDefaultToolkit().getFontMetrics(var4);
- Dimension var6 = ((Component)var1).getSize();
- Insets var7 = ((JComponent)var1).getInsets();
- Insets var8 = this.getTabAreaInsets(var1, var2);
- int var9 = var5.getHeight();
- int var10 = var1.getSelectedIndex();
- boolean var17 = var2 == 2 || var2 == 4;
- int var14;
- int var15;
- int var16;
- switch (var2) {
- case 1:
- default:
- this.maxTabHeight = this.maxTabHeight(var1, var5);
- var14 = var7.left + var8.left;
- var15 = var7.top + var8.top;
- var16 = var6.width - (var7.right + var8.right);
- break;
- case 2:
- this.maxTabWidth = this.maxTabWidth(var1, var5);
- var14 = var7.left + var8.left;
- var15 = var7.top + var8.top;
- var16 = var6.height - (var7.bottom + var8.bottom);
- break;
- case 3:
- this.maxTabHeight = this.maxTabHeight(var1, var5);
- var14 = var7.left + var8.left;
- var15 = var6.height - var7.bottom - var8.bottom - this.maxTabHeight;
- var16 = var6.width - (var7.right + var8.right);
- break;
- case 4:
- this.maxTabWidth = this.maxTabWidth(var1, var5);
- var14 = var6.width - var7.right - var8.right - this.maxTabWidth;
- var15 = var7.top + var8.top;
- var16 = var6.height - (var7.bottom + var8.bottom);
- }
-
- int var11 = this.getTabOverlay(var1, var2);
- this.runCount = 0;
- this.selectedRun = -1;
-
- for(int var12 = 0; var12 < var3; ++var12) {
- Rectangle var18 = this.rects[var12];
- if (!var17) {
- if (var12 > 0) {
- var18.x = this.rects[var12 - 1].x + this.rects[var12 - 1].width;
- } else {
- this.tabRuns[0] = 0;
- this.runCount = 1;
- this.maxTabWidth = 0;
- var18.x = var14;
- }
-
- var18.width = this.tabWidth(var1, var12, var5);
- this.maxTabWidth = Math.max(this.maxTabWidth, var18.width);
- if (var18.x != 2 + var7.left && var18.x + var18.width > var16) {
- if (this.runCount > this.tabRuns.length - 1) {
- this.expandTabRunsArray();
- }
-
- this.tabRuns[this.runCount] = var12;
- ++this.runCount;
- var18.x = var14;
- }
-
- var18.y = var15;
- var18.height = this.maxTabHeight;
- } else {
- if (var12 > 0) {
- var18.y = this.rects[var12 - 1].y + this.rects[var12 - 1].height;
- } else {
- this.tabRuns[0] = 0;
- this.runCount = 1;
- this.maxTabHeight = 0;
- var18.y = var15;
- }
-
- var18.height = this.tabHeight(var1, var12, var9);
- this.maxTabHeight = Math.max(this.maxTabHeight, var18.height);
- if (var18.y != 2 + var7.top && var18.y + var18.height > var16) {
- if (this.runCount > this.tabRuns.length - 1) {
- this.expandTabRunsArray();
- }
-
- this.tabRuns[this.runCount] = var12;
- ++this.runCount;
- var18.y = var15;
- }
-
- var18.x = var14;
- var18.width = this.maxTabWidth;
- }
-
- if (var12 == var10) {
- this.selectedRun = this.runCount - 1;
- }
- }
-
- if (this.runCount > 1) {
- this.normalizeTabRuns(var1, var2, var3, var17 ? var15 : var14, var16);
- this.selectedRun = this.getRunForTab(var1, var3, var10);
- this.rotateTabRuns(var1, var2, this.selectedRun);
- }
-
- for(int var22 = this.runCount - 1; var22 >= 0; --var22) {
- int var19 = this.tabRuns[var22];
- int var20 = this.tabRuns[var22 == this.runCount - 1 ? 0 : var22 + 1];
- int var21 = var20 != 0 ? var20 - 1 : var3 - 1;
- if (!var17) {
- for(int var23 = var19; var23 <= var21; ++var23) {
- Rectangle var25 = this.rects[var23];
- var25.y = var15;
- var25.x += this.getRunIndent(var1, var2, var22);
- }
-
- if (this.shouldPadRun(var1, var2, var22)) {
- this.padRun(var1, var2, var19, var21, var16);
- }
-
- if (var2 == 3) {
- var15 -= this.maxTabHeight - var11;
- } else {
- var15 += this.maxTabHeight - var11;
- }
- } else {
- for(int var13 = var19; var13 <= var21; ++var13) {
- Rectangle var24 = this.rects[var13];
- var24.x = var14;
- var24.y += this.getRunIndent(var1, var2, var22);
- }
-
- if (this.shouldPadRun(var1, var2, var22)) {
- this.padRun(var1, var2, var19, var21, var16);
- }
-
- if (var2 == 4) {
- var14 -= this.maxTabWidth - var11;
- } else {
- var14 += this.maxTabWidth - var11;
- }
- }
- }
-
- }
-
- protected int getTabOverlay(JTabbedPane var1, int var2) {
- return this.overlay;
- }
-
- protected int getRunForTab(JTabbedPane var1, int var2, int var3) {
- for(int var4 = 0; var4 < this.runCount; ++var4) {
- int var5 = this.tabRuns[var4];
- int var6 = this.lastIndexInRun(var4, var2);
- if (var3 >= var5 && var3 <= var6) {
- return var4;
- }
- }
-
- return 0;
- }
-
- protected void rotateTabRuns(JTabbedPane var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var4) {
- int var5 = this.tabRuns[0];
-
- for(int var6 = 1; var6 < this.runCount; ++var6) {
- this.tabRuns[var6 - 1] = this.tabRuns[var6];
- }
-
- this.tabRuns[this.runCount - 1] = var5;
- }
-
- }
-
- protected int getRunIndent(JTabbedPane var1, int var2, int var3) {
- return 0;
- }
-
- protected void normalizeTabRuns(JTabbedPane var1, int var2, int var3, int var4, int var5) {
- boolean var6 = var2 == 2 || var2 == 4;
- int var7 = this.runCount - 1;
- boolean var8 = true;
- double var9 = (double)1.25F;
-
- while(var8) {
- int var11 = this.lastIndexInRun(var7, var3);
- int var12 = this.lastIndexInRun(var7 - 1, var3);
- int var13;
- int var14;
- if (!var6) {
- var13 = this.rects[var11].x + this.rects[var11].width;
- var14 = (int)((double)this.maxTabWidth * var9);
- } else {
- var13 = this.rects[var11].y + this.rects[var11].height;
- var14 = (int)((double)this.maxTabHeight * var9 * (double)2.0F);
- }
-
- if (var5 - var13 > var14) {
- this.tabRuns[var7] = var12;
- if (!var6) {
- this.rects[var12].x = var4;
- } else {
- this.rects[var12].y = var4;
- }
-
- for(int var15 = var12 + 1; var15 <= var11; ++var15) {
- if (!var6) {
- this.rects[var15].x = this.rects[var15 - 1].x + this.rects[var15 - 1].width;
- } else {
- this.rects[var15].y = this.rects[var15 - 1].y + this.rects[var15 - 1].height;
- }
- }
- } else if (var7 == this.runCount - 1) {
- var8 = false;
- }
-
- if (var7 - 1 > 0) {
- --var7;
- } else {
- var7 = this.runCount - 1;
- var9 += (double)0.25F;
- }
- }
-
- }
-
- protected int lastIndexInRun(int var1, int var2) {
- if (this.runCount == 1) {
- return var2 - 1;
- } else {
- int var3 = var1 == this.runCount - 1 ? 0 : var1 + 1;
- return this.tabRuns[var3] == 0 ? var2 - 1 : this.tabRuns[var3] - 1;
- }
- }
-
- protected boolean shouldPadRun(JTabbedPane var1, int var2, int var3) {
- return this.runCount > 1;
- }
-
- protected void padRun(JTabbedPane var1, int var2, int var3, int var4, int var5) {
- Rectangle var6 = this.rects[var4];
- if (var2 != 1 && var2 != 3) {
- int var12 = var6.y + var6.height - this.rects[var3].y;
- int var13 = var5 - (var6.y + var6.height);
- float var14 = (float)var13 / (float)var12;
-
- for(int var15 = var3; var15 <= var4; ++var15) {
- Rectangle var16 = this.rects[var15];
- if (var15 > var3) {
- var16.y = this.rects[var15 - 1].y + this.rects[var15 - 1].height;
- }
-
- var16.height += Math.round((float)var16.height * var14);
- }
-
- var6.height = var5 - var6.y;
- } else {
- int var7 = var6.x + var6.width - this.rects[var3].x;
- int var8 = var5 - (var6.x + var6.width);
- float var9 = (float)var8 / (float)var7;
-
- for(int var10 = var3; var10 <= var4; ++var10) {
- Rectangle var11 = this.rects[var10];
- if (var10 > var3) {
- var11.x = this.rects[var10 - 1].x + this.rects[var10 - 1].width;
- }
-
- var11.width += Math.round((float)var11.width * var9);
- }
-
- var6.width = var5 - var6.x;
- }
- }
-
- protected void padSelectedTab(JTabbedPane var1, int var2, int var3) {
- if (var3 >= 0) {
- Rectangle var4 = this.rects[var3];
- switch (var2) {
- case 1:
- default:
- var4.y -= selectedTabRaisePad - 1;
- var4.height += selectedTabRaisePad;
- var4.x -= selectedTabWidenPad / 2;
- var4.width += selectedTabWidenPad;
- break;
- case 2:
- var4.x -= selectedTabRaisePad - 1;
- var4.width += selectedTabRaisePad;
- var4.y -= selectedTabWidenPad / 2;
- var4.height += selectedTabWidenPad;
- return;
- case 3:
- --var4.y;
- var4.height += selectedTabRaisePad;
- var4.x -= selectedTabWidenPad / 2;
- var4.width += selectedTabWidenPad;
- return;
- case 4:
- --var4.x;
- var4.width += selectedTabRaisePad;
- var4.y -= selectedTabWidenPad / 2;
- var4.height += selectedTabWidenPad;
- return;
- }
- }
-
- }
-
- protected int tabHeight(JTabbedPane var1, int var2, int var3) {
- int var4 = var3;
- Icon var5 = this.getIconForTab(var1, var2);
- if (var5 != null) {
- var4 = Math.max(var3, var5.getIconHeight());
- }
-
- var4 += 2 * spacingHeight + 2;
- return var4;
- }
-
- protected int maxTabHeight(JTabbedPane var1) {
- return this.maxTabHeight(var1, this.getMetrics(var1));
- }
-
- protected int maxTabHeight(JTabbedPane var1, FontMetrics var2) {
- int var3 = var1.getTabCount();
- int var4 = 0;
- int var5 = var2.getHeight();
-
- for(int var6 = 0; var6 < var3; ++var6) {
- var4 = Math.max(this.tabHeight(var1, var6, var5), var4);
- }
-
- return var4;
- }
-
- protected int tabWidth(JTabbedPane var1, int var2, FontMetrics var3) {
- String var4 = var1.getTitleAt(var2);
- Icon var5 = this.getIconForTab(var1, var2);
- int var6 = 2 * spacingWidth + 3;
- if (var5 != null) {
- var6 += var5.getIconWidth() + iconSpacingWidth;
- }
-
- var6 += var3.stringWidth(var4);
- return var6;
- }
-
- protected int maxTabWidth(JTabbedPane var1) {
- return this.maxTabWidth(var1, this.getMetrics(var1));
- }
-
- protected int maxTabWidth(JTabbedPane var1, FontMetrics var2) {
- int var3 = var1.getTabCount();
- int var4 = 0;
-
- for(int var5 = 0; var5 < var3; ++var5) {
- var4 = Math.max(this.tabWidth(var1, var5, var2), var4);
- }
-
- return var4;
- }
-
- protected Icon getIconForTab(JTabbedPane var1, int var2) {
- return !var1.isEnabledAt(var2) && var1.getDisabledIconAt(var2) != null ? var1.getDisabledIconAt(var2) : var1.getIconAt(var2);
- }
-
- protected Insets getContentBorderInsets(JTabbedPane var1, int var2) {
- return contentBorderInsets;
- }
-
- protected Insets getTabAreaInsets(JTabbedPane var1, int var2) {
- Insets var3;
- switch (var2) {
- case 1:
- default:
- var3 = tabsOnTopTabInsets;
- break;
- case 2:
- var3 = tabsOnLeftTabInsets;
- break;
- case 3:
- var3 = tabsOnBottomTabInsets;
- break;
- case 4:
- var3 = tabsOnRightTabInsets;
- }
-
- return var3;
- }
-
- protected FontMetrics getMetrics(JTabbedPane var1) {
- Font var2 = ((Component)var1).getFont();
- return Toolkit.getDefaultToolkit().getFontMetrics(var2);
- }
-
- public Rectangle getTabBounds(JTabbedPane var1, int var2) {
- this.calculateLayoutInfo(var1);
- return this.rects[var2];
- }
-
- public int getTabRunCount(JTabbedPane var1) {
- return this.runCount;
- }
-
- protected int totalTabHeight(JTabbedPane var1, int var2, int var3) {
- Insets var4 = this.getTabAreaInsets(var1, var2);
- int var5 = this.getTabOverlay(var1, var2);
- return var3 * (this.maxTabHeight - var5) + var5 + var4.top + var4.bottom;
- }
-
- protected int totalTabWidth(JTabbedPane var1, int var2, int var3) {
- Insets var4 = this.getTabAreaInsets(var1, var2);
- int var5 = this.getTabOverlay(var1, var2);
- return var3 * (this.maxTabWidth - var5) + var5 + var4.left + var4.right;
- }
-
- protected int preferredTotalTabHeight(JTabbedPane var1, int var2, FontMetrics var3, int var4) {
- int var5 = var1.getTabCount();
- int var6 = 0;
- if (var5 > 0) {
- int var7 = 1;
- byte var8 = 0;
- this.maxTabHeight = this.maxTabHeight(var1, var3);
-
- for(int var9 = 0; var9 < var5; ++var9) {
- int var10 = this.tabWidth(var1, var9, var3);
- if (var8 != 0 && var8 + var10 > var4) {
- ++var7;
- var8 = 0;
- }
- }
-
- var6 = this.totalTabHeight(var1, var2, var7);
- }
-
- return var6;
- }
-
- protected int preferredTotalTabWidth(JTabbedPane var1, int var2, FontMetrics var3, int var4) {
- int var5 = var1.getTabCount();
- int var6 = 0;
- if (var5 > 0) {
- int var7 = 1;
- byte var8 = 0;
- int var9 = var3.getHeight();
- this.maxTabWidth = this.maxTabWidth(var1, var3);
-
- for(int var10 = 0; var10 < var5; ++var10) {
- int var11 = this.tabHeight(var1, var10, var9);
- if (var8 != 0 && var8 + var11 > var4) {
- ++var7;
- var8 = 0;
- }
- }
-
- var6 = this.totalTabWidth(var1, var2, var7);
- }
-
- return var6;
- }
-
- protected void navigateSelectedTab(JTabbedPane var1, int var2, int var3) {
- int var4 = var1.getSelectedIndex();
- int var5 = var1.getTabCount();
- switch (var2) {
- case 1:
- case 3:
- default:
- switch (var3) {
- case 1:
- int var9 = this.getTabRunOffset(var1, var2, var5, var4, false);
- this.selectAdjacentRunTab(var1, var2, var4, var9);
- return;
- case 3:
- this.selectNextTab(var1, var4);
- return;
- case 5:
- int var8 = this.getTabRunOffset(var1, var2, var5, var4, true);
- this.selectAdjacentRunTab(var1, var2, var4, var8);
- return;
- case 7:
- this.selectPrevTab(var1, var4);
- return;
- default:
- return;
- }
- case 2:
- case 4:
- switch (var3) {
- case 1:
- this.selectPrevTab(var1, var4);
- return;
- case 3:
- int var7 = this.getTabRunOffset(var1, var2, var5, var4, true);
- this.selectAdjacentRunTab(var1, var2, var4, var7);
- return;
- case 5:
- this.selectNextTab(var1, var4);
- return;
- case 7:
- int var6 = this.getTabRunOffset(var1, var2, var5, var4, false);
- this.selectAdjacentRunTab(var1, var2, var4, var6);
- return;
- default:
- }
- }
- }
-
- public int getPrevTabIndex(JTabbedPane var1, int var2) {
- int var3 = var2 - 1;
- if (var3 < 0) {
- var3 = var1.getTabCount() - 1;
- }
-
- return var3;
- }
-
- public int getNextTabIndex(JTabbedPane var1, int var2) {
- return (var2 + 1) % var1.getTabCount();
- }
-
- public void selectNextTab(JTabbedPane var1, int var2) {
- int var3;
- for(var3 = this.getNextTabIndex(var1, var2); !var1.isEnabledAt(var3) && var3 != var2; var3 = this.getNextTabIndex(var1, var3)) {
- }
-
- var1.setSelectedIndex(var3);
- }
-
- public void selectPrevTab(JTabbedPane var1, int var2) {
- int var3;
- for(var3 = this.getPrevTabIndex(var1, var2); !var1.isEnabledAt(var3) && var3 != var2; var3 = this.getPrevTabIndex(var1, var3)) {
- }
-
- var1.setSelectedIndex(var3);
- }
-
- protected void selectAdjacentRunTab(JTabbedPane var1, int var2, int var3, int var4) {
- if (this.runCount >= 2) {
- Rectangle var6 = this.rects[var3];
- int var5;
- switch (var2) {
- case 1:
- case 3:
- default:
- var5 = this.tabForCoordinate(var1, var6.x + var6.width / 2, var6.y + var6.height / 2 + var4);
- break;
- case 2:
- case 4:
- var5 = this.tabForCoordinate(var1, var6.x + var6.width / 2 + var4, var6.y + var6.height / 2);
- }
-
- if (var5 != -1) {
- while(!var1.isEnabledAt(var5) && var5 != var3) {
- var5 = this.getNextTabIndex(var1, var5);
- }
-
- var1.setSelectedIndex(var5);
- }
-
- }
- }
-
- protected int getTabRunOffset(JTabbedPane var1, int var2, int var3, int var4, boolean var5) {
- int var6 = this.getRunForTab(var1, var3, var4);
- int var7;
- switch (var2) {
- case 1:
- default:
- if (var6 == 0) {
- var7 = var5 ? -(this.totalTabHeight(var1, var2, this.runCount) - this.maxTabHeight(var1)) : -this.maxTabHeight(var1);
- } else if (var6 == this.runCount - 1) {
- var7 = var5 ? this.maxTabHeight(var1) : this.totalTabHeight(var1, var2, this.runCount) - this.maxTabHeight(var1);
- } else {
- var7 = var5 ? this.maxTabHeight(var1) : -this.maxTabHeight(var1);
- }
- break;
- case 2:
- if (var6 == 0) {
- var7 = var5 ? -(this.totalTabWidth(var1, var2, this.runCount) - this.maxTabWidth(var1)) : -this.maxTabWidth(var1);
- } else if (var6 == this.runCount - 1) {
- var7 = var5 ? this.maxTabWidth(var1) : this.totalTabWidth(var1, var2, this.runCount) - this.maxTabWidth(var1);
- } else {
- var7 = var5 ? this.maxTabWidth(var1) : -this.maxTabWidth(var1);
- }
- break;
- case 3:
- if (var6 == 0) {
- var7 = var5 ? this.maxTabHeight(var1) : this.totalTabHeight(var1, var2, this.runCount) - this.maxTabHeight(var1);
- } else if (var6 == this.runCount - 1) {
- var7 = var5 ? -(this.totalTabHeight(var1, var2, this.runCount) - this.maxTabHeight(var1)) : -this.maxTabHeight(var1);
- } else {
- var7 = var5 ? this.maxTabHeight(var1) : -this.maxTabHeight(var1);
- }
- break;
- case 4:
- if (var6 == 0) {
- var7 = var5 ? this.maxTabWidth(var1) : this.totalTabWidth(var1, var2, this.runCount) - this.maxTabWidth(var1);
- } else if (var6 == this.runCount - 1) {
- var7 = var5 ? -(this.totalTabWidth(var1, var2, this.runCount) - this.maxTabWidth(var1)) : -this.maxTabWidth(var1);
- } else {
- var7 = var5 ? this.maxTabWidth(var1) : -this.maxTabWidth(var1);
- }
- }
-
- return var7;
- }
-
- public int tabForCoordinate(JTabbedPane var1, int var2, int var3) {
- int var4 = var1.getTabCount();
- if (var4 != this.rects.length) {
- this.calculateLayoutInfo(var1);
- }
-
- for(int var5 = 0; var5 < var4; ++var5) {
- if (this.rects[var5].contains(var2, var3)) {
- return var5;
- }
- }
-
- return -1;
- }
- }
-