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 / MetalScrollButton.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  3.5 KB  |  200 lines

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