home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / plaf / metal / MetalScrollButton.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  3.5 KB  |  214 lines

  1. package javax.swing.plaf.metal;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import javax.swing.AbstractButton;
  8. import javax.swing.JComponent;
  9. import javax.swing.UIManager;
  10. import javax.swing.plaf.ColorUIResource;
  11. import javax.swing.plaf.basic.BasicArrowButton;
  12.  
  13. public class MetalScrollButton extends BasicArrowButton {
  14.    private static Color shadowColor;
  15.    private static Color highlightColor;
  16.    private boolean isFreeStanding = false;
  17.    private int buttonWidth;
  18.  
  19.    public MetalScrollButton(int var1, int var2, boolean var3) {
  20.       super(var1);
  21.       shadowColor = UIManager.getColor("ScrollBar.darkShadow");
  22.       highlightColor = UIManager.getColor("ScrollBar.highlight");
  23.       this.buttonWidth = var2;
  24.       this.isFreeStanding = var3;
  25.    }
  26.  
  27.    public int getButtonWidth() {
  28.       return this.buttonWidth;
  29.    }
  30.  
  31.    public Dimension getMaximumSize() {
  32.       return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
  33.    }
  34.  
  35.    public Dimension getMinimumSize() {
  36.       return this.getPreferredSize();
  37.    }
  38.  
  39.    public Dimension getPreferredSize() {
  40.       if (((BasicArrowButton)this).getDirection() == 1) {
  41.          return new Dimension(this.buttonWidth, this.buttonWidth - 2);
  42.       } else if (((BasicArrowButton)this).getDirection() == 5) {
  43.          return new Dimension(this.buttonWidth, this.buttonWidth - (this.isFreeStanding ? 1 : 2));
  44.       } else if (((BasicArrowButton)this).getDirection() == 3) {
  45.          return new Dimension(this.buttonWidth - (this.isFreeStanding ? 1 : 2), this.buttonWidth);
  46.       } else {
  47.          return ((BasicArrowButton)this).getDirection() == 7 ? new Dimension(this.buttonWidth - 2, this.buttonWidth) : new Dimension(0, 0);
  48.       }
  49.    }
  50.  
  51.    public void paint(Graphics var1) {
  52.       boolean var2 = ((Component)this).getParent().isEnabled();
  53.       ColorUIResource var3 = var2 ? MetalLookAndFeel.getControlInfo() : MetalLookAndFeel.getControlDisabled();
  54.       boolean var4 = ((AbstractButton)this).getModel().isPressed();
  55.       int var5 = ((JComponent)this).getWidth();
  56.       int var6 = ((JComponent)this).getHeight();
  57.       int var7 = var5;
  58.       int var8 = var6;
  59.       int var9 = (var6 + 1) / 4;
  60.       int var10 = (var6 + 1) / 2;
  61.       if (var4) {
  62.          var1.setColor(MetalLookAndFeel.getControlShadow());
  63.       } else {
  64.          var1.setColor(((Component)this).getBackground());
  65.       }
  66.  
  67.       var1.fillRect(0, 0, var5, var6);
  68.       if (((BasicArrowButton)this).getDirection() == 1) {
  69.          if (!this.isFreeStanding) {
  70.             var5 += 2;
  71.          }
  72.  
  73.          var1.setColor(var3);
  74.          int var11 = (var6 + 1 - var9) / 2;
  75.          int var12 = var7 / 2;
  76.  
  77.          for(int var13 = 0; var13 < var9; ++var13) {
  78.             var1.drawLine(var12 - var13, var11 + var13, var12 + var13 + 1, var11 + var13);
  79.          }
  80.  
  81.          if (var2) {
  82.             var1.setColor(highlightColor);
  83.             if (!var4) {
  84.                var1.drawLine(1, 1, var5 - 3, 1);
  85.                var1.drawLine(1, 1, 1, var6 - 1);
  86.             }
  87.  
  88.             var1.drawLine(var5 - 1, 1, var5 - 1, var6 - 1);
  89.             var1.setColor(shadowColor);
  90.             var1.drawLine(0, 0, var5 - 2, 0);
  91.             var1.drawLine(0, 0, 0, var6 - 1);
  92.             var1.drawLine(var5 - 2, 2, var5 - 2, var6 - 1);
  93.          } else {
  94.             MetalUtils.drawDisabledBorder(var1, 0, 0, var5, var6 + 1);
  95.          }
  96.  
  97.          if (!this.isFreeStanding) {
  98.             var5 -= 2;
  99.          }
  100.       } else if (((BasicArrowButton)this).getDirection() == 5) {
  101.          if (!this.isFreeStanding) {
  102.             var5 += 2;
  103.             ++var6;
  104.          }
  105.  
  106.          var1.setColor(var3);
  107.          int var21 = (var8 + 1 - var9) / 2 + var9 - 1;
  108.          int var24 = var7 / 2;
  109.  
  110.          for(int var27 = 0; var27 < var9; ++var27) {
  111.             var1.drawLine(var24 - var27, var21 - var27, var24 + var27 + 1, var21 - var27);
  112.          }
  113.  
  114.          if (var2) {
  115.             var1.setColor(highlightColor);
  116.             if (!var4) {
  117.                var1.drawLine(1, 0, var5 - 3, 0);
  118.                var1.drawLine(1, 0, 1, var6 - 3);
  119.             }
  120.  
  121.             var1.drawLine(1, var6 - 1, var5 - 1, var6 - 1);
  122.             var1.drawLine(var5 - 1, 0, var5 - 1, var6 - 1);
  123.             var1.setColor(shadowColor);
  124.             var1.drawLine(0, 0, 0, var6 - 2);
  125.             var1.drawLine(var5 - 2, 0, var5 - 2, var6 - 2);
  126.             var1.drawLine(2, var6 - 2, var5 - 2, var6 - 2);
  127.          } else {
  128.             MetalUtils.drawDisabledBorder(var1, 0, -1, var5, var6 + 1);
  129.          }
  130.  
  131.          if (!this.isFreeStanding) {
  132.             var5 -= 2;
  133.             --var6;
  134.          }
  135.       } else if (((BasicArrowButton)this).getDirection() == 3) {
  136.          if (!this.isFreeStanding) {
  137.             var6 += 2;
  138.             ++var5;
  139.          }
  140.  
  141.          var1.setColor(var3);
  142.          int var22 = (var7 + 1 - var9) / 2 + var9 - 1;
  143.          int var25 = var8 / 2;
  144.  
  145.          for(int var28 = 0; var28 < var9; ++var28) {
  146.             var1.drawLine(var22 - var28, var25 - var28, var22 - var28, var25 + var28 + 1);
  147.          }
  148.  
  149.          if (var2) {
  150.             var1.setColor(highlightColor);
  151.             if (!var4) {
  152.                var1.drawLine(0, 1, var5 - 3, 1);
  153.                var1.drawLine(0, 1, 0, var6 - 3);
  154.             }
  155.  
  156.             var1.drawLine(var5 - 1, 1, var5 - 1, var6 - 1);
  157.             var1.drawLine(0, var6 - 1, var5 - 1, var6 - 1);
  158.             var1.setColor(shadowColor);
  159.             var1.drawLine(0, 0, var5 - 2, 0);
  160.             var1.drawLine(var5 - 2, 2, var5 - 2, var6 - 2);
  161.             var1.drawLine(0, var6 - 2, var5 - 2, var6 - 2);
  162.          } else {
  163.             MetalUtils.drawDisabledBorder(var1, -1, 0, var5 + 1, var6);
  164.          }
  165.  
  166.          if (!this.isFreeStanding) {
  167.             var6 -= 2;
  168.             --var5;
  169.          }
  170.       } else if (((BasicArrowButton)this).getDirection() == 7) {
  171.          if (!this.isFreeStanding) {
  172.             var6 += 2;
  173.             ++var5;
  174.             var1.translate(-1, 0);
  175.          }
  176.  
  177.          var1.setColor(var3);
  178.          int var23 = (var7 + 1 - var9) / 2;
  179.          int var26 = var8 / 2;
  180.  
  181.          for(int var29 = 0; var29 < var9; ++var29) {
  182.             var1.drawLine(var23 + var29, var26 - var29, var23 + var29, var26 + var29 + 1);
  183.          }
  184.  
  185.          if (var2) {
  186.             var1.setColor(highlightColor);
  187.             if (!var4) {
  188.                var1.drawLine(1, 1, var5 - 1, 1);
  189.                var1.drawLine(1, 1, 1, var6 - 3);
  190.             }
  191.  
  192.             var1.drawLine(1, var6 - 1, var5 - 1, var6 - 1);
  193.             var1.setColor(shadowColor);
  194.             var1.drawLine(0, 0, var5 - 1, 0);
  195.             var1.drawLine(0, 0, 0, var6 - 2);
  196.             var1.drawLine(2, var6 - 2, var5 - 1, var6 - 2);
  197.          } else {
  198.             MetalUtils.drawDisabledBorder(var1, 0, 0, var5 + 1, var6);
  199.          }
  200.  
  201.          if (!this.isFreeStanding) {
  202.             var6 -= 2;
  203.             --var5;
  204.             var1.translate(1, 0);
  205.          }
  206.       }
  207.  
  208.    }
  209.  
  210.    public void setFreeStanding(boolean var1) {
  211.       this.isFreeStanding = var1;
  212.    }
  213. }
  214.