home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.sun.java.swing.plaf.metal; import com.sun.java.swing.Icon; import com.sun.java.swing.JComponent; import com.sun.java.swing.JTabbedPane; import com.sun.java.swing.UIManager; import com.sun.java.swing.plaf.ComponentUI; import com.sun.java.swing.plaf.basic.BasicTabbedPaneUI; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Insets; import java.awt.Rectangle; public class MetalTabbedPaneUI extends BasicTabbedPaneUI { protected static Insets tabsOnTopTabAreaInsets = new Insets(4, 2, 0, 6); protected static Insets tabsOnLeftTabAreaInsets = new Insets(6, 4, 0, 0); protected static Insets tabsOnBottomTabAreaInsets = new Insets(0, 2, 4, 6); protected static Insets tabsOnRightTabAreaInsets = new Insets(0, 0, 6, 4); protected int minTabWidth = 40; protected Color selectColor; protected Color selectHighlight; public static ComponentUI createUI(JComponent var0) { return new MetalTabbedPaneUI(); } protected void installDefaults(JComponent var1) { JTabbedPane var10000 = (JTabbedPane)var1; super.installDefaults(var1); this.selectColor = UIManager.getColor("TabbedPane.selected"); this.selectHighlight = UIManager.getColor("TabbedPane.selectHighlight"); } protected void paintTabBorder(Graphics var1, JTabbedPane var2, int var3, int var4, int var5, int var6, int var7, int var8, boolean var9) { int var10 = var6 + (var8 - 1); int var11 = var5 + (var7 - 1); switch (var3) { case 1: default: this.paintTopTabBorder(var2, var4, var1, var5, var6, var7, var8, var10, var11, var9); return; case 2: this.paintLeftTabBorder(var2, var4, var1, var5, var6, var7, var8, var10, var11, var9); return; case 3: this.paintBottomTabBorder(var2, var4, var1, var5, var6, var7, var8, var10, var11, var9); return; case 4: this.paintRightTabBorder(var2, var4, var1, var5, var6, var7, var8, var10, var11, var9); } } protected void paintTopTabBorder(JTabbedPane var1, int var2, Graphics var3, int var4, int var5, int var6, int var7, int var8, int var9, boolean var10) { int var11 = ((BasicTabbedPaneUI)this).getRunForTab(var1, var1.getTabCount(), var2); int var12 = ((BasicTabbedPaneUI)this).lastIndexInRun(var11, var1.getTabCount()); int var13 = super.tabRuns[var11]; if (this.shouldFillGap(var1, var11, var2, var4, var5)) { var3.translate(var4, var5); var3.setColor(this.selectColor); var3.fillRect(1, 0, 5, 3); var3.fillRect(1, 3, 2, 2); var3.translate(-var4, -var5); } var3.translate(var4, var5); int var14 = var7 - 1; int var15 = var6 - 1; var3.setColor(super.tabDarkShadow); var3.drawLine(1, 5, 6, 0); var3.drawLine(6, 0, var15, 0); if (var2 == var12) { var3.drawLine(var15, 1, var15, var14); } if (var2 != super.tabRuns[super.runCount - 1]) { var3.drawLine(0, 0, 0, var14); } else { var3.drawLine(0, 6, 0, var14); } var3.setColor(var10 ? this.selectHighlight : super.tabHighlight); var3.drawLine(1, 6, 6, 1); var3.drawLine(6, 1, var15, 1); var3.drawLine(1, 6, 1, var14); if (var2 == var13 && var2 != super.tabRuns[super.runCount - 1]) { var3.setColor(var1.getSelectedIndex() == super.tabRuns[var11 + 1] ? this.selectHighlight : super.tabHighlight); var3.drawLine(1, 0, 1, 4); } var3.translate(-var4, -var5); } protected boolean shouldFillGap(JTabbedPane var1, int var2, int var3, int var4, int var5) { if (var2 == super.runCount - 1) { return false; } else { int var6 = var1.getSelectedIndex(); if (((BasicTabbedPaneUI)this).getRunForTab(var1, var1.getTabCount(), var6) == var2 + 1) { Rectangle var7 = super.rects[var6]; int var8 = var7.x + (var7.width - 1); return var7.x < var4 + 4 && var8 > var4 + 1; } else { return false; } } } protected void paintLeftTabBorder(JTabbedPane var1, int var2, Graphics var3, int var4, int var5, int var6, int var7, int var8, int var9, boolean var10) { int var11 = ((BasicTabbedPaneUI)this).getRunForTab(var1, var1.getTabCount(), var2); int var12 = ((BasicTabbedPaneUI)this).lastIndexInRun(var11, var1.getTabCount()); int var13 = super.tabRuns[var11]; var3.translate(var4, var5); int var14 = var7 - 1; int var15 = var6 - 1; if (var2 != var13) { var3.setColor(var1.getSelectedIndex() == var2 - 1 ? this.selectColor : ((Component)var1).getBackground()); var3.fillRect(2, 0, 4, 3); var3.drawLine(2, 3, 2, 3); } var3.setColor(var10 ? this.selectHighlight : super.tabHighlight); var3.drawLine(1, 6, 6, 1); var3.drawLine(6, 1, var15, 1); var3.drawLine(1, 6, 1, var14); if (var2 != var13) { var3.setColor(var1.getSelectedIndex() == var2 - 1 ? this.selectHighlight : super.tabHighlight); var3.drawLine(1, 0, 1, 4); } var3.setColor(super.tabDarkShadow); var3.drawLine(1, 5, 6, 0); var3.drawLine(6, 0, var15, 0); if (var2 != var13) { var3.drawLine(0, 0, 0, var14); } else { var3.drawLine(0, 6, 0, var14); } if (var2 == var12) { var3.drawLine(0, var14, var15, var14); } var3.translate(-var4, -var5); } protected void paintBottomTabBorder(JTabbedPane var1, int var2, Graphics var3, int var4, int var5, int var6, int var7, int var8, int var9, boolean var10) { int var11 = ((BasicTabbedPaneUI)this).getRunForTab(var1, var1.getTabCount(), var2); int var12 = ((BasicTabbedPaneUI)this).lastIndexInRun(var11, var1.getTabCount()); int var13 = super.tabRuns[var11]; int var14 = var7 - 1; int var15 = var6 - 1; if (this.shouldFillGap(var1, var11, var2, var4, var5)) { var3.translate(var4, var5); var3.setColor(this.selectColor); var3.fillRect(1, var14 - 4, 3, 5); var3.fillRect(4, var14 - 1, 2, 2); var3.translate(-var4, -var5); } var3.translate(var4, var5); var3.setColor(super.tabDarkShadow); var3.drawLine(1, var14 - 5, 6, var14); var3.drawLine(6, var14, var15, var14); if (var2 == var12) { var3.drawLine(var15, 0, var15, var14); } if (var2 != super.tabRuns[super.runCount - 1]) { var3.drawLine(0, 0, 0, var14); } else { var3.drawLine(0, 0, 0, var14 - 6); } var3.setColor(var10 ? this.selectHighlight : super.tabHighlight); var3.drawLine(1, var14 - 6, 6, var14 - 1); var3.drawLine(1, 0, 1, var14 - 6); if (var2 == var13 && var2 != super.tabRuns[super.runCount - 1]) { var3.setColor(var1.getSelectedIndex() == super.tabRuns[var11 + 1] ? this.selectHighlight : super.tabHighlight); var3.drawLine(1, var14 - 4, 1, var14); } var3.translate(-var4, -var5); } protected void paintRightTabBorder(JTabbedPane var1, int var2, Graphics var3, int var4, int var5, int var6, int var7, int var8, int var9, boolean var10) { int var11 = ((BasicTabbedPaneUI)this).getRunForTab(var1, var1.getTabCount(), var2); int var12 = ((BasicTabbedPaneUI)this).lastIndexInRun(var11, var1.getTabCount()); int var13 = super.tabRuns[var11]; var3.translate(var4, var5); int var14 = var7 - 1; int var15 = var6 - 1; if (var2 != var13) { var3.setColor(var1.getSelectedIndex() == var2 - 1 ? this.selectColor : ((Component)var1).getBackground()); var3.fillRect(var15 - 5, 0, 5, 3); var3.fillRect(var15 - 2, 3, 2, 2); } var3.setColor(var10 ? this.selectHighlight : super.tabHighlight); var3.drawLine(var15 - 6, 1, var15 - 1, 6); var3.drawLine(0, 1, var15 - 6, 1); var3.drawLine(0, 1, 0, var14); var3.setColor(super.tabDarkShadow); var3.drawLine(var15 - 6, 0, var15, 6); var3.drawLine(0, 0, var15 - 6, 0); if (var2 != var13) { var3.drawLine(var15, 0, var15, var14); } else { var3.drawLine(var15, 6, var15, var14); } if (var2 == var12) { var3.drawLine(0, var14, var15, var14); } var3.translate(-var4, -var5); } protected void paintTabBackground(Graphics var1, JTabbedPane var2, int var3, int var4, int var5, int var6, int var7, int var8, boolean var9) { if (var9) { var1.setColor(this.selectColor); } else { var1.setColor(((Component)var2).getBackground()); } switch (var3) { case 1: default: var1.fillRect(var5 + 4, var6 + 2, var7 - 1 - 3, var8 - 1 - 1); var1.fillRect(var5 + 2, var6 + 5, 2, var8 - 5); return; case 2: var1.fillRect(var5 + 5, var6 + 1, var7 - 5, var8 - 1); var1.fillRect(var5 + 2, var6 + 4, 3, var8 - 4); return; case 3: var1.fillRect(var5 + 2, var6, var7 - 2, var8 - 3); var1.fillRect(var5 + 5, var6 + (var8 - 1) - 3, var7 - 5, 3); return; case 4: var1.fillRect(var5 + 1, var6 + 1, var7 - 5, var8 - 1); var1.fillRect(var5 + (var7 - 1) - 3, var6 + 5, 3, var8 - 1); } } protected Insets getTabAreaInsets(JTabbedPane var1, int var2) { Insets var3; switch (var2) { case 1: default: var3 = tabsOnTopTabAreaInsets; break; case 2: var3 = tabsOnLeftTabAreaInsets; break; case 3: var3 = tabsOnBottomTabAreaInsets; break; case 4: var3 = tabsOnRightTabAreaInsets; } return var3; } protected int calculateXNudge(JTabbedPane var1, int var2, int var3, boolean var4) { return 0; } protected int calculateYNudge(JTabbedPane var1, int var2, int var3, boolean var4) { return 0; } public void paint(Graphics var1, JComponent var2) { JTabbedPane var3 = (JTabbedPane)var2; int var4 = var3.getTabPlacement(); Insets var5 = var2.getInsets(); Dimension var6 = ((Component)var2).getSize(); var1.setColor(((Component)var2).getBackground()); switch (var4) { case 1: default: var1.fillRect(var5.left, var5.top, var6.width - var5.right - var5.left, ((BasicTabbedPaneUI)this).totalTabHeight(var3, var4, super.runCount)); this.paintHighlightBelowTab(var3); break; case 2: var1.fillRect(var5.left, var5.top, ((BasicTabbedPaneUI)this).totalTabWidth(var3, var4, super.runCount), var6.height - var5.bottom - var5.top); break; case 3: int var7 = ((BasicTabbedPaneUI)this).totalTabHeight(var3, var4, super.runCount); var1.fillRect(var5.left, var6.height - var5.bottom - var7, var6.width - var5.left - var5.right, var7); break; case 4: int var8 = ((BasicTabbedPaneUI)this).totalTabWidth(var3, var4, super.runCount); var1.fillRect(var6.width - var5.right - var8, var5.top, var8, var6.height - var5.top - var5.bottom); } super.paint(var1, var2); } protected void paintHighlightBelowTab(JTabbedPane var1) { } protected void paintFocusIndicator(Graphics var1, JTabbedPane var2, int var3, Rectangle[] var4, int var5, Rectangle var6, Rectangle var7, boolean var8) { if (((JComponent)var2).hasFocus() && var8) { Rectangle var9 = var4[var5]; var1.setColor(super.focus); var1.translate(var9.x, var9.y); int var10 = var9.width - 1; int var11 = var9.height - 1; switch (var3) { case 1: case 2: default: var1.drawLine(2, 6, 6, 2); var1.drawLine(2, 6, 2, var11 - 1); var1.drawLine(6, 2, var10, 2); var1.drawLine(var10, 2, var10, var11 - 1); var1.drawLine(2, var11 - 1, var10, var11 - 1); break; case 3: var1.drawLine(2, var11 - 6, 6, var11 - 2); var1.drawLine(6, var11 - 2, var10, var11 - 2); var1.drawLine(2, 0, 2, var11 - 6); var1.drawLine(2, 0, var10, 0); var1.drawLine(var10, 0, var10, var11 - 2); break; case 4: var1.drawLine(var10 - 6, 2, var10 - 2, 6); var1.drawLine(1, 2, var10 - 6, 2); var1.drawLine(var10 - 2, 6, var10 - 2, var11); var1.drawLine(1, 2, 1, var11); var1.drawLine(1, var11, var10 - 2, var11); } var1.translate(-var9.x, -var9.y); } } protected void paintContentBorderTopEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) { var1.setColor(super.tabDarkShadow); var1.drawLine(var4 - 1, var5, var6 - 2, var5); } protected void paintContentBorderBottomEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) { var1.setColor(super.tabDarkShadow); var1.drawLine(var4, var5 + (var7 - 1), var4 + (var6 - 1), var5 + (var7 - 1)); } protected void paintContentBorderLeftEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) { var1.setColor(super.tabDarkShadow); var1.drawLine(var4, var5, var4, var5 + (var7 - 1)); } protected void paintContentBorderRightEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) { var1.setColor(super.tabDarkShadow); var1.drawLine(var4 + (var6 - 1), var5, var4 + (var6 - 1), var5 + (var7 - 1)); } protected int maxTabHeight(JTabbedPane var1, FontMetrics var2) { int var3 = var2.getHeight(); boolean var4 = false; for(int var5 = 0; var5 < var1.getTabCount(); ++var5) { Icon var6 = var1.getIconAt(var5); if (var6 != null && var6.getIconHeight() > var3) { var4 = true; break; } } return super.maxTabHeight(var1, var2) - (var4 ? BasicTabbedPaneUI.spacingHeight * 2 : 0); } protected int getTabOverlay(JTabbedPane var1, int var2) { if (var2 != 2 && var2 != 4) { return 0; } else { int var3 = ((BasicTabbedPaneUI)this).maxTabHeight(var1); return var3 / 2; } } protected void normalizeTabRuns(JTabbedPane var1, int var2, int var3, int var4, int var5) { if (var2 == 1 || var2 == 3) { super.normalizeTabRuns(var1, var2, var3, var4, var5); } } protected void rotateTabRuns(JTabbedPane var1, int var2, int var3) { } protected boolean shouldPadRun(JTabbedPane var1, int var2, int var3) { return super.runCount > 1 && var3 < super.runCount - 1; } protected void padSelectedTab(JTabbedPane var1, int var2, int var3) { } }