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 / MetalSliderUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  6.9 KB  |  272 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.JSlider;
  6. import com.sun.java.swing.UIManager;
  7. import com.sun.java.swing.plaf.ColorUIResource;
  8. import com.sun.java.swing.plaf.ComponentUI;
  9. import com.sun.java.swing.plaf.basic.BasicSliderUI;
  10. import java.awt.Color;
  11. import java.awt.Graphics;
  12. import java.awt.Rectangle;
  13. import java.beans.PropertyChangeEvent;
  14. import java.beans.PropertyChangeListener;
  15.  
  16. public class MetalSliderUI extends BasicSliderUI implements PropertyChangeListener {
  17.    protected final int TICK_BUFFER = 4;
  18.    protected boolean filledSlider = false;
  19.    protected static Color thumbColor;
  20.    protected static Color highlightColor;
  21.    protected static Color darkShadowColor;
  22.    protected static int trackWidth;
  23.    protected static int tickLength;
  24.    protected static Icon horizThumbIcon;
  25.    protected static Icon vertThumbIcon;
  26.    protected final String SLIDER_FILL = "JSlider.isFilled";
  27.  
  28.    public static ComponentUI createUI(JComponent var0) {
  29.       return new MetalSliderUI();
  30.    }
  31.  
  32.    public MetalSliderUI() {
  33.       super((JSlider)null);
  34.    }
  35.  
  36.    public void installUI(JComponent var1) {
  37.       trackWidth = (Integer)UIManager.get("Slider.trackWidth");
  38.       tickLength = (Integer)UIManager.get("Slider.majorTickLength");
  39.       horizThumbIcon = UIManager.getIcon("Slider.horizontalThumbIcon");
  40.       vertThumbIcon = UIManager.getIcon("Slider.verticalThumbIcon");
  41.       super.installUI(var1);
  42.       thumbColor = UIManager.getColor("Slider.thumb");
  43.       highlightColor = UIManager.getColor("Slider.highlight");
  44.       darkShadowColor = UIManager.getColor("Slider.darkShadow");
  45.       super.scrollListener.setScrollByBlock(false);
  46.       var1.addPropertyChangeListener(this);
  47.       Object var2 = var1.getClientProperty("JSlider.isFilled");
  48.       if (var2 != null) {
  49.          this.filledSlider = (Boolean)var2;
  50.       }
  51.  
  52.    }
  53.  
  54.    public void uninstallUI(JComponent var1) {
  55.       var1.removePropertyChangeListener(this);
  56.       super.uninstallUI(var1);
  57.    }
  58.  
  59.    public void propertyChange(PropertyChangeEvent var1) {
  60.       super.propertyChange(var1);
  61.       String var2 = var1.getPropertyName();
  62.       if (var2.equals("JSlider.isFilled")) {
  63.          if (var1.getNewValue() != null) {
  64.             this.filledSlider = (Boolean)var1.getNewValue();
  65.             return;
  66.          }
  67.  
  68.          this.filledSlider = false;
  69.       }
  70.  
  71.    }
  72.  
  73.    public void paintThumb(Graphics var1) {
  74.       Rectangle var2 = ((BasicSliderUI)this).getThumbRect();
  75.       var1.translate(var2.x, var2.y);
  76.       if (super.slider.getOrientation() == 0) {
  77.          horizThumbIcon.paintIcon(super.slider, var1, 0, 0);
  78.       } else {
  79.          vertThumbIcon.paintIcon(super.slider, var1, 0, 0);
  80.       }
  81.  
  82.       var1.translate(-var2.x, -var2.y);
  83.    }
  84.  
  85.    public void paintTrack(Graphics var1) {
  86.       Rectangle var2 = ((BasicSliderUI)this).getScrollTrackRect();
  87.       Object var3 = !super.slider.isEnabled() ? MetalLookAndFeel.getControlShadow() : super.slider.getForeground();
  88.       var1.translate(var2.x, var2.y);
  89.       int var4 = 0;
  90.       int var5 = 0;
  91.       int var6 = 0;
  92.       int var7 = 0;
  93.       if (super.slider.getOrientation() == 0) {
  94.          var4 = super.trackBuffer;
  95.          var5 = var2.height - this.getThumbOverhang() - this.getTrackWidth();
  96.          var6 = var2.width - 1 - super.trackBuffer;
  97.          var7 = var2.height - this.getThumbOverhang() - 1;
  98.          if (super.slider.isEnabled()) {
  99.             MetalUtils.drawFlush3DBorder(var1, var4, var5, this.getTrackLength(), this.getTrackWidth());
  100.          } else {
  101.             Rectangle var8 = ((BasicSliderUI)this).getThumbRect();
  102.             int var9 = var8.x + var8.width / 2;
  103.             var1.setColor((Color)var3);
  104.             var1.drawRect(var4, var5, this.getTrackLength(), this.getTrackWidth() - 2);
  105.             if (this.filledSlider) {
  106.                if (super.slider.isEnabled()) {
  107.                   var1.fillRect(var4, var5, var9 - var4, this.getTrackWidth() - 2);
  108.                } else {
  109.                   var1.fillRect(var9, var5, var6 - var9, this.getTrackWidth() - 2);
  110.                }
  111.             }
  112.          }
  113.       } else {
  114.          var4 = var2.width - this.getThumbOverhang() - this.getTrackWidth();
  115.          var5 = super.trackBuffer;
  116.          var6 = var2.width - this.getThumbOverhang() - 1;
  117.          var7 = var2.height - 1 - super.trackBuffer;
  118.          if (super.slider.isEnabled()) {
  119.             MetalUtils.drawFlush3DBorder(var1, var4, var5, this.getTrackWidth(), this.getTrackLength());
  120.          } else {
  121.             Rectangle var16 = ((BasicSliderUI)this).getThumbRect();
  122.             int var18 = var16.y + var16.height / 2;
  123.             var1.setColor((Color)var3);
  124.             var1.drawRect(var4, var5, this.getTrackWidth() - 2, this.getTrackLength());
  125.             if (this.filledSlider) {
  126.                if (super.slider.isEnabled()) {
  127.                   var1.fillRect(var4, var18, this.getTrackWidth() - 2, var7 - var18);
  128.                } else {
  129.                   var1.fillRect(var4, var5, this.getTrackWidth() - 2, var18 - var4);
  130.                }
  131.             }
  132.          }
  133.       }
  134.  
  135.       if (!this.filledSlider) {
  136.          if (super.slider.isEnabled()) {
  137.             var1.setColor(super.slider.getForeground());
  138.             if (super.slider.getOrientation() == 0) {
  139.                var1.fillRect(var4 + 2, var5 + 2, this.getTrackLength() - 4, this.getTrackWidth() - 4);
  140.                var1.setColor(MetalLookAndFeel.getPrimaryControl());
  141.                var1.drawLine(var4 + 1, var5 + 1, var4 + 1, var7 - 2);
  142.                var1.drawLine(var4 + 1, var5 + 1, var6 - 2, var5 + 1);
  143.                var1.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
  144.                var1.drawLine(var4 + 2, var7 - 1, var6 - 1, var7 - 1);
  145.                var1.drawLine(var6 - 1, var5 + 2, var6 - 1, var7 - 1);
  146.             } else {
  147.                var1.fillRect(var4 + 2, var5 + 2, this.getTrackWidth() - 4, this.getTrackLength() - 4);
  148.                var1.setColor(MetalLookAndFeel.getPrimaryControl());
  149.                var1.drawLine(var4 + 1, var5 + 1, var4 + 1, var7 - 2);
  150.                var1.drawLine(var4 + 1, var5 + 1, var6 - 2, var5 + 1);
  151.                var1.setColor(MetalLookAndFeel.getPrimaryControlDarkShadow());
  152.                var1.drawLine(var6 - 1, var5 + 2, var6 - 1, var7 - 1);
  153.                var1.drawLine(var4 + 2, var7 - 1, var6 - 1, var7 - 1);
  154.             }
  155.          }
  156.       } else {
  157.          ColorUIResource var17 = MetalLookAndFeel.getPrimaryControl();
  158.          ColorUIResource var19 = MetalLookAndFeel.getPrimaryControlDarkShadow();
  159.          var1.setColor(super.slider.getForeground());
  160.          if (super.slider.getOrientation() == 0) {
  161.             Rectangle var10 = ((BasicSliderUI)this).getThumbRect();
  162.             int var11 = var10.x + var10.width / 2;
  163.             if (!super.slider.getInverted()) {
  164.                var1.fillRect(var4 + 2, var5 + 2, var11 - (var4 + 2), this.getTrackWidth() - 4);
  165.                var1.setColor(var17);
  166.                var1.drawLine(var4 + 2, var5 + 1, var11, var5 + 1);
  167.                var1.drawLine(var4 + 1, var5 + 1, var4 + 1, var7 - 1);
  168.                var1.setColor(var19);
  169.                var1.drawLine(var4 + 2, var7 - 1, var11, var7 - 1);
  170.             } else {
  171.                var1.fillRect(var11, var5 + 2, var6 - 1 - var11, this.getTrackWidth() - 4);
  172.                var1.setColor(var17);
  173.                var1.drawLine(var11, var5 + 1, var6 - 2, var5 + 1);
  174.                var1.drawLine(var6 - 1, var5 + 1, var6 - 1, var7 - 1);
  175.                var1.setColor(var19);
  176.                var1.drawLine(var11, var7 - 1, var6 - 2, var7 - 1);
  177.             }
  178.          } else {
  179.             Rectangle var20 = ((BasicSliderUI)this).getThumbRect();
  180.             int var21 = var20.y + var20.height / 2;
  181.             if (!super.slider.getInverted()) {
  182.                var1.fillRect(var4 + 2, var21, this.getTrackWidth() - 4, var7 - 1 - var21);
  183.                var1.setColor(var17);
  184.                var1.drawLine(var4 + 1, var21, var4 + 1, var7 - 2);
  185.                var1.drawLine(var4 + 1, var7 - 1, var6 - 1, var7 - 1);
  186.                var1.setColor(var19);
  187.                var1.drawLine(var6 - 1, var21, var6 - 1, var7 - 2);
  188.             } else {
  189.                var1.fillRect(var4 + 2, var5 + 2, this.getTrackWidth() - 4, var21 - (var5 + 2));
  190.                var1.setColor(var17);
  191.                var1.drawLine(var4 + 1, var5 + 2, var4 + 1, var21);
  192.                var1.drawLine(var4 + 1, var5 + 1, var6 - 1, var5 + 1);
  193.                var1.setColor(var19);
  194.                var1.drawLine(var6 - 1, var5 + 2, var6 - 1, var21);
  195.             }
  196.          }
  197.       }
  198.  
  199.       var1.translate(-var2.x, -var2.y);
  200.    }
  201.  
  202.    public void paintFocus(Graphics var1) {
  203.       if (super.slider.hasFocus()) {
  204.          Rectangle var2 = super.slider.getBounds();
  205.          var2.x = 0;
  206.          var2.y = 0;
  207.          if (super.slider.getBorder() != null) {
  208.             var2 = ((BasicSliderUI)this).getFullContentArea();
  209.          }
  210.  
  211.          var1.setColor(((BasicSliderUI)this).getFocusColor());
  212.          var1.drawRect(var2.x + 1, var2.y + 1, var2.width - 2, var2.height - 2);
  213.       }
  214.  
  215.    }
  216.  
  217.    public void calculateThumbBounds() {
  218.       byte var1 = 15;
  219.       byte var2 = 16;
  220.       if (super.slider.getOrientation() == 0) {
  221.          int var5 = ((BasicSliderUI)this).xPositionForValue(super.slider.getValue()) - ((BasicSliderUI)this).getThumbRect().width / 2;
  222.          int var6 = ((BasicSliderUI)this).getScrollTrackRect().y + ((BasicSliderUI)this).getScrollTrackRect().height - var2;
  223.          ((BasicSliderUI)this).setThumbBounds(var5, var6, var1, var2);
  224.       } else {
  225.          int var3 = ((BasicSliderUI)this).yPositionForValue(super.slider.getValue()) - ((BasicSliderUI)this).getThumbRect().height / 2;
  226.          int var4 = ((BasicSliderUI)this).getScrollTrackRect().x + ((BasicSliderUI)this).getScrollTrackRect().width - var2;
  227.          ((BasicSliderUI)this).setThumbBounds(var4, var3, var2, var1);
  228.       }
  229.    }
  230.  
  231.    public int getTickSpace() {
  232.       return super.slider.getOrientation() == 0 ? tickLength + 4 + 1 : tickLength + 4 + 3;
  233.    }
  234.  
  235.    protected int getTrackWidth() {
  236.       return trackWidth;
  237.    }
  238.  
  239.    protected int getTrackLength() {
  240.       ((BasicSliderUI)this).getFullContentArea();
  241.       return super.slider.getOrientation() == 0 ? ((BasicSliderUI)this).getScrollTrackRect().width - super.trackBuffer * 2 : ((BasicSliderUI)this).getScrollTrackRect().height - super.trackBuffer * 2;
  242.    }
  243.  
  244.    protected int getThumbOverhang() {
  245.       return 4;
  246.    }
  247.  
  248.    protected void scrollDueToClickInTrack(int var1) {
  249.       ((BasicSliderUI)this).scrollByUnit(var1);
  250.    }
  251.  
  252.    protected void paintMinorTickForHorizSlider(Graphics var1, Rectangle var2, int var3) {
  253.       var1.setColor((Color)(super.slider.isEnabled() ? super.slider.getForeground() : MetalLookAndFeel.getControlShadow()));
  254.       var1.drawLine(var3, 4, var3, 4 + tickLength / 2);
  255.    }
  256.  
  257.    protected void paintMajorTickForHorizSlider(Graphics var1, Rectangle var2, int var3) {
  258.       var1.setColor((Color)(super.slider.isEnabled() ? super.slider.getForeground() : MetalLookAndFeel.getControlShadow()));
  259.       var1.drawLine(var3, 4, var3, 4 + (tickLength - 1));
  260.    }
  261.  
  262.    protected void paintMinorTickForVertSlider(Graphics var1, Rectangle var2, int var3) {
  263.       var1.setColor((Color)(super.slider.isEnabled() ? super.slider.getForeground() : MetalLookAndFeel.getControlShadow()));
  264.       var1.drawLine(4, var3, 4 + tickLength / 2, var3);
  265.    }
  266.  
  267.    protected void paintMajorTickForVertSlider(Graphics var1, Rectangle var2, int var3) {
  268.       var1.setColor((Color)(super.slider.isEnabled() ? super.slider.getForeground() : MetalLookAndFeel.getControlShadow()));
  269.       var1.drawLine(4, var3, 4 + tickLength, var3);
  270.    }
  271. }
  272.