home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / plaf / metal / MetalTabbedPaneUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  7.9 KB  |  404 lines

  1. package com.sun.java.swing.plaf.metal;
  2.  
  3. import com.sun.java.swing.Icon;
  4. import com.sun.java.swing.JComponent;
  5. import com.sun.java.swing.JTabbedPane;
  6. import com.sun.java.swing.UIManager;
  7. import com.sun.java.swing.plaf.ComponentUI;
  8. import com.sun.java.swing.plaf.basic.BasicTabbedPaneUI;
  9. import java.awt.Color;
  10. import java.awt.Component;
  11. import java.awt.Dimension;
  12. import java.awt.FontMetrics;
  13. import java.awt.Graphics;
  14. import java.awt.Insets;
  15. import java.awt.Rectangle;
  16.  
  17. public class MetalTabbedPaneUI extends BasicTabbedPaneUI {
  18.    protected static Insets tabsOnTopTabAreaInsets = new Insets(4, 2, 0, 6);
  19.    protected static Insets tabsOnLeftTabAreaInsets = new Insets(6, 4, 0, 0);
  20.    protected static Insets tabsOnBottomTabAreaInsets = new Insets(0, 2, 4, 6);
  21.    protected static Insets tabsOnRightTabAreaInsets = new Insets(0, 0, 6, 4);
  22.    protected int minTabWidth = 40;
  23.    protected Color selectColor;
  24.    protected Color selectHighlight;
  25.  
  26.    public static ComponentUI createUI(JComponent var0) {
  27.       return new MetalTabbedPaneUI();
  28.    }
  29.  
  30.    protected void installDefaults(JComponent var1) {
  31.       JTabbedPane var10000 = (JTabbedPane)var1;
  32.       super.installDefaults(var1);
  33.       this.selectColor = UIManager.getColor("TabbedPane.selected");
  34.       this.selectHighlight = UIManager.getColor("TabbedPane.selectHighlight");
  35.    }
  36.  
  37.    protected void paintTabBorder(Graphics var1, JTabbedPane var2, int var3, int var4, int var5, int var6, int var7, int var8, boolean var9) {
  38.       int var10 = var6 + (var8 - 1);
  39.       int var11 = var5 + (var7 - 1);
  40.       switch (var3) {
  41.          case 1:
  42.          default:
  43.             this.paintTopTabBorder(var2, var4, var1, var5, var6, var7, var8, var10, var11, var9);
  44.             return;
  45.          case 2:
  46.             this.paintLeftTabBorder(var2, var4, var1, var5, var6, var7, var8, var10, var11, var9);
  47.             return;
  48.          case 3:
  49.             this.paintBottomTabBorder(var2, var4, var1, var5, var6, var7, var8, var10, var11, var9);
  50.             return;
  51.          case 4:
  52.             this.paintRightTabBorder(var2, var4, var1, var5, var6, var7, var8, var10, var11, var9);
  53.       }
  54.    }
  55.  
  56.    protected void paintTopTabBorder(JTabbedPane var1, int var2, Graphics var3, int var4, int var5, int var6, int var7, int var8, int var9, boolean var10) {
  57.       int var11 = ((BasicTabbedPaneUI)this).getRunForTab(var1, var1.getTabCount(), var2);
  58.       int var12 = ((BasicTabbedPaneUI)this).lastIndexInRun(var11, var1.getTabCount());
  59.       int var13 = super.tabRuns[var11];
  60.       if (this.shouldFillGap(var1, var11, var2, var4, var5)) {
  61.          var3.translate(var4, var5);
  62.          var3.setColor(this.selectColor);
  63.          var3.fillRect(1, 0, 5, 3);
  64.          var3.fillRect(1, 3, 2, 2);
  65.          var3.translate(-var4, -var5);
  66.       }
  67.  
  68.       var3.translate(var4, var5);
  69.       int var14 = var7 - 1;
  70.       int var15 = var6 - 1;
  71.       var3.setColor(super.tabDarkShadow);
  72.       var3.drawLine(1, 5, 6, 0);
  73.       var3.drawLine(6, 0, var15, 0);
  74.       if (var2 == var12) {
  75.          var3.drawLine(var15, 1, var15, var14);
  76.       }
  77.  
  78.       if (var2 != super.tabRuns[super.runCount - 1]) {
  79.          var3.drawLine(0, 0, 0, var14);
  80.       } else {
  81.          var3.drawLine(0, 6, 0, var14);
  82.       }
  83.  
  84.       var3.setColor(var10 ? this.selectHighlight : super.tabHighlight);
  85.       var3.drawLine(1, 6, 6, 1);
  86.       var3.drawLine(6, 1, var15, 1);
  87.       var3.drawLine(1, 6, 1, var14);
  88.       if (var2 == var13 && var2 != super.tabRuns[super.runCount - 1]) {
  89.          var3.setColor(var1.getSelectedIndex() == super.tabRuns[var11 + 1] ? this.selectHighlight : super.tabHighlight);
  90.          var3.drawLine(1, 0, 1, 4);
  91.       }
  92.  
  93.       var3.translate(-var4, -var5);
  94.    }
  95.  
  96.    protected boolean shouldFillGap(JTabbedPane var1, int var2, int var3, int var4, int var5) {
  97.       if (var2 == super.runCount - 1) {
  98.          return false;
  99.       } else {
  100.          int var6 = var1.getSelectedIndex();
  101.          if (((BasicTabbedPaneUI)this).getRunForTab(var1, var1.getTabCount(), var6) == var2 + 1) {
  102.             Rectangle var7 = super.rects[var6];
  103.             int var8 = var7.x + (var7.width - 1);
  104.             return var7.x < var4 + 4 && var8 > var4 + 1;
  105.          } else {
  106.             return false;
  107.          }
  108.       }
  109.    }
  110.  
  111.    protected void paintLeftTabBorder(JTabbedPane var1, int var2, Graphics var3, int var4, int var5, int var6, int var7, int var8, int var9, boolean var10) {
  112.       int var11 = ((BasicTabbedPaneUI)this).getRunForTab(var1, var1.getTabCount(), var2);
  113.       int var12 = ((BasicTabbedPaneUI)this).lastIndexInRun(var11, var1.getTabCount());
  114.       int var13 = super.tabRuns[var11];
  115.       var3.translate(var4, var5);
  116.       int var14 = var7 - 1;
  117.       int var15 = var6 - 1;
  118.       if (var2 != var13) {
  119.          var3.setColor(var1.getSelectedIndex() == var2 - 1 ? this.selectColor : ((Component)var1).getBackground());
  120.          var3.fillRect(2, 0, 4, 3);
  121.          var3.drawLine(2, 3, 2, 3);
  122.       }
  123.  
  124.       var3.setColor(var10 ? this.selectHighlight : super.tabHighlight);
  125.       var3.drawLine(1, 6, 6, 1);
  126.       var3.drawLine(6, 1, var15, 1);
  127.       var3.drawLine(1, 6, 1, var14);
  128.       if (var2 != var13) {
  129.          var3.setColor(var1.getSelectedIndex() == var2 - 1 ? this.selectHighlight : super.tabHighlight);
  130.          var3.drawLine(1, 0, 1, 4);
  131.       }
  132.  
  133.       var3.setColor(super.tabDarkShadow);
  134.       var3.drawLine(1, 5, 6, 0);
  135.       var3.drawLine(6, 0, var15, 0);
  136.       if (var2 != var13) {
  137.          var3.drawLine(0, 0, 0, var14);
  138.       } else {
  139.          var3.drawLine(0, 6, 0, var14);
  140.       }
  141.  
  142.       if (var2 == var12) {
  143.          var3.drawLine(0, var14, var15, var14);
  144.       }
  145.  
  146.       var3.translate(-var4, -var5);
  147.    }
  148.  
  149.    protected void paintBottomTabBorder(JTabbedPane var1, int var2, Graphics var3, int var4, int var5, int var6, int var7, int var8, int var9, boolean var10) {
  150.       int var11 = ((BasicTabbedPaneUI)this).getRunForTab(var1, var1.getTabCount(), var2);
  151.       int var12 = ((BasicTabbedPaneUI)this).lastIndexInRun(var11, var1.getTabCount());
  152.       int var13 = super.tabRuns[var11];
  153.       int var14 = var7 - 1;
  154.       int var15 = var6 - 1;
  155.       if (this.shouldFillGap(var1, var11, var2, var4, var5)) {
  156.          var3.translate(var4, var5);
  157.          var3.setColor(this.selectColor);
  158.          var3.fillRect(1, var14 - 4, 3, 5);
  159.          var3.fillRect(4, var14 - 1, 2, 2);
  160.          var3.translate(-var4, -var5);
  161.       }
  162.  
  163.       var3.translate(var4, var5);
  164.       var3.setColor(super.tabDarkShadow);
  165.       var3.drawLine(1, var14 - 5, 6, var14);
  166.       var3.drawLine(6, var14, var15, var14);
  167.       if (var2 == var12) {
  168.          var3.drawLine(var15, 0, var15, var14);
  169.       }
  170.  
  171.       if (var2 != super.tabRuns[super.runCount - 1]) {
  172.          var3.drawLine(0, 0, 0, var14);
  173.       } else {
  174.          var3.drawLine(0, 0, 0, var14 - 6);
  175.       }
  176.  
  177.       var3.setColor(var10 ? this.selectHighlight : super.tabHighlight);
  178.       var3.drawLine(1, var14 - 6, 6, var14 - 1);
  179.       var3.drawLine(1, 0, 1, var14 - 6);
  180.       if (var2 == var13 && var2 != super.tabRuns[super.runCount - 1]) {
  181.          var3.setColor(var1.getSelectedIndex() == super.tabRuns[var11 + 1] ? this.selectHighlight : super.tabHighlight);
  182.          var3.drawLine(1, var14 - 4, 1, var14);
  183.       }
  184.  
  185.       var3.translate(-var4, -var5);
  186.    }
  187.  
  188.    protected void paintRightTabBorder(JTabbedPane var1, int var2, Graphics var3, int var4, int var5, int var6, int var7, int var8, int var9, boolean var10) {
  189.       int var11 = ((BasicTabbedPaneUI)this).getRunForTab(var1, var1.getTabCount(), var2);
  190.       int var12 = ((BasicTabbedPaneUI)this).lastIndexInRun(var11, var1.getTabCount());
  191.       int var13 = super.tabRuns[var11];
  192.       var3.translate(var4, var5);
  193.       int var14 = var7 - 1;
  194.       int var15 = var6 - 1;
  195.       if (var2 != var13) {
  196.          var3.setColor(var1.getSelectedIndex() == var2 - 1 ? this.selectColor : ((Component)var1).getBackground());
  197.          var3.fillRect(var15 - 5, 0, 5, 3);
  198.          var3.fillRect(var15 - 2, 3, 2, 2);
  199.       }
  200.  
  201.       var3.setColor(var10 ? this.selectHighlight : super.tabHighlight);
  202.       var3.drawLine(var15 - 6, 1, var15 - 1, 6);
  203.       var3.drawLine(0, 1, var15 - 6, 1);
  204.       var3.drawLine(0, 1, 0, var14);
  205.       var3.setColor(super.tabDarkShadow);
  206.       var3.drawLine(var15 - 6, 0, var15, 6);
  207.       var3.drawLine(0, 0, var15 - 6, 0);
  208.       if (var2 != var13) {
  209.          var3.drawLine(var15, 0, var15, var14);
  210.       } else {
  211.          var3.drawLine(var15, 6, var15, var14);
  212.       }
  213.  
  214.       if (var2 == var12) {
  215.          var3.drawLine(0, var14, var15, var14);
  216.       }
  217.  
  218.       var3.translate(-var4, -var5);
  219.    }
  220.  
  221.    protected void paintTabBackground(Graphics var1, JTabbedPane var2, int var3, int var4, int var5, int var6, int var7, int var8, boolean var9) {
  222.       if (var9) {
  223.          var1.setColor(this.selectColor);
  224.       } else {
  225.          var1.setColor(((Component)var2).getBackground());
  226.       }
  227.  
  228.       switch (var3) {
  229.          case 1:
  230.          default:
  231.             var1.fillRect(var5 + 4, var6 + 2, var7 - 1 - 3, var8 - 1 - 1);
  232.             var1.fillRect(var5 + 2, var6 + 5, 2, var8 - 5);
  233.             return;
  234.          case 2:
  235.             var1.fillRect(var5 + 5, var6 + 1, var7 - 5, var8 - 1);
  236.             var1.fillRect(var5 + 2, var6 + 4, 3, var8 - 4);
  237.             return;
  238.          case 3:
  239.             var1.fillRect(var5 + 2, var6, var7 - 2, var8 - 3);
  240.             var1.fillRect(var5 + 5, var6 + (var8 - 1) - 3, var7 - 5, 3);
  241.             return;
  242.          case 4:
  243.             var1.fillRect(var5 + 1, var6 + 1, var7 - 5, var8 - 1);
  244.             var1.fillRect(var5 + (var7 - 1) - 3, var6 + 5, 3, var8 - 1);
  245.       }
  246.    }
  247.  
  248.    protected Insets getTabAreaInsets(JTabbedPane var1, int var2) {
  249.       Insets var3;
  250.       switch (var2) {
  251.          case 1:
  252.          default:
  253.             var3 = tabsOnTopTabAreaInsets;
  254.             break;
  255.          case 2:
  256.             var3 = tabsOnLeftTabAreaInsets;
  257.             break;
  258.          case 3:
  259.             var3 = tabsOnBottomTabAreaInsets;
  260.             break;
  261.          case 4:
  262.             var3 = tabsOnRightTabAreaInsets;
  263.       }
  264.  
  265.       return var3;
  266.    }
  267.  
  268.    protected int calculateXNudge(JTabbedPane var1, int var2, int var3, boolean var4) {
  269.       return 0;
  270.    }
  271.  
  272.    protected int calculateYNudge(JTabbedPane var1, int var2, int var3, boolean var4) {
  273.       return 0;
  274.    }
  275.  
  276.    public void paint(Graphics var1, JComponent var2) {
  277.       JTabbedPane var3 = (JTabbedPane)var2;
  278.       int var4 = var3.getTabPlacement();
  279.       Insets var5 = var2.getInsets();
  280.       Dimension var6 = ((Component)var2).getSize();
  281.       var1.setColor(((Component)var2).getBackground());
  282.       switch (var4) {
  283.          case 1:
  284.          default:
  285.             var1.fillRect(var5.left, var5.top, var6.width - var5.right - var5.left, ((BasicTabbedPaneUI)this).totalTabHeight(var3, var4, super.runCount));
  286.             this.paintHighlightBelowTab(var3);
  287.             break;
  288.          case 2:
  289.             var1.fillRect(var5.left, var5.top, ((BasicTabbedPaneUI)this).totalTabWidth(var3, var4, super.runCount), var6.height - var5.bottom - var5.top);
  290.             break;
  291.          case 3:
  292.             int var7 = ((BasicTabbedPaneUI)this).totalTabHeight(var3, var4, super.runCount);
  293.             var1.fillRect(var5.left, var6.height - var5.bottom - var7, var6.width - var5.left - var5.right, var7);
  294.             break;
  295.          case 4:
  296.             int var8 = ((BasicTabbedPaneUI)this).totalTabWidth(var3, var4, super.runCount);
  297.             var1.fillRect(var6.width - var5.right - var8, var5.top, var8, var6.height - var5.top - var5.bottom);
  298.       }
  299.  
  300.       super.paint(var1, var2);
  301.    }
  302.  
  303.    protected void paintHighlightBelowTab(JTabbedPane var1) {
  304.    }
  305.  
  306.    protected void paintFocusIndicator(Graphics var1, JTabbedPane var2, int var3, Rectangle[] var4, int var5, Rectangle var6, Rectangle var7, boolean var8) {
  307.       if (((JComponent)var2).hasFocus() && var8) {
  308.          Rectangle var9 = var4[var5];
  309.          var1.setColor(super.focus);
  310.          var1.translate(var9.x, var9.y);
  311.          int var10 = var9.width - 1;
  312.          int var11 = var9.height - 1;
  313.          switch (var3) {
  314.             case 1:
  315.             case 2:
  316.             default:
  317.                var1.drawLine(2, 6, 6, 2);
  318.                var1.drawLine(2, 6, 2, var11 - 1);
  319.                var1.drawLine(6, 2, var10, 2);
  320.                var1.drawLine(var10, 2, var10, var11 - 1);
  321.                var1.drawLine(2, var11 - 1, var10, var11 - 1);
  322.                break;
  323.             case 3:
  324.                var1.drawLine(2, var11 - 6, 6, var11 - 2);
  325.                var1.drawLine(6, var11 - 2, var10, var11 - 2);
  326.                var1.drawLine(2, 0, 2, var11 - 6);
  327.                var1.drawLine(2, 0, var10, 0);
  328.                var1.drawLine(var10, 0, var10, var11 - 2);
  329.                break;
  330.             case 4:
  331.                var1.drawLine(var10 - 6, 2, var10 - 2, 6);
  332.                var1.drawLine(1, 2, var10 - 6, 2);
  333.                var1.drawLine(var10 - 2, 6, var10 - 2, var11);
  334.                var1.drawLine(1, 2, 1, var11);
  335.                var1.drawLine(1, var11, var10 - 2, var11);
  336.          }
  337.  
  338.          var1.translate(-var9.x, -var9.y);
  339.       }
  340.  
  341.    }
  342.  
  343.    protected void paintContentBorderTopEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  344.       var1.setColor(super.tabDarkShadow);
  345.       var1.drawLine(var4 - 1, var5, var6 - 2, var5);
  346.    }
  347.  
  348.    protected void paintContentBorderBottomEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  349.       var1.setColor(super.tabDarkShadow);
  350.       var1.drawLine(var4, var5 + (var7 - 1), var4 + (var6 - 1), var5 + (var7 - 1));
  351.    }
  352.  
  353.    protected void paintContentBorderLeftEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  354.       var1.setColor(super.tabDarkShadow);
  355.       var1.drawLine(var4, var5, var4, var5 + (var7 - 1));
  356.    }
  357.  
  358.    protected void paintContentBorderRightEdge(Graphics var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  359.       var1.setColor(super.tabDarkShadow);
  360.       var1.drawLine(var4 + (var6 - 1), var5, var4 + (var6 - 1), var5 + (var7 - 1));
  361.    }
  362.  
  363.    protected int maxTabHeight(JTabbedPane var1, FontMetrics var2) {
  364.       int var3 = var2.getHeight();
  365.       boolean var4 = false;
  366.  
  367.       for(int var5 = 0; var5 < var1.getTabCount(); ++var5) {
  368.          Icon var6 = var1.getIconAt(var5);
  369.          if (var6 != null && var6.getIconHeight() > var3) {
  370.             var4 = true;
  371.             break;
  372.          }
  373.       }
  374.  
  375.       return super.maxTabHeight(var1, var2) - (var4 ? BasicTabbedPaneUI.spacingHeight * 2 : 0);
  376.    }
  377.  
  378.    protected int getTabOverlay(JTabbedPane var1, int var2) {
  379.       if (var2 != 2 && var2 != 4) {
  380.          return 0;
  381.       } else {
  382.          int var3 = ((BasicTabbedPaneUI)this).maxTabHeight(var1);
  383.          return var3 / 2;
  384.       }
  385.    }
  386.  
  387.    protected void normalizeTabRuns(JTabbedPane var1, int var2, int var3, int var4, int var5) {
  388.       if (var2 == 1 || var2 == 3) {
  389.          super.normalizeTabRuns(var1, var2, var3, var4, var5);
  390.       }
  391.  
  392.    }
  393.  
  394.    protected void rotateTabRuns(JTabbedPane var1, int var2, int var3) {
  395.    }
  396.  
  397.    protected boolean shouldPadRun(JTabbedPane var1, int var2, int var3) {
  398.       return super.runCount > 1 && var3 < super.runCount - 1;
  399.    }
  400.  
  401.    protected void padSelectedTab(JTabbedPane var1, int var2, int var3) {
  402.    }
  403. }
  404.