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

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.JComponent;
  4. import com.sun.java.swing.JSlider;
  5. import com.sun.java.swing.KeyStroke;
  6. import com.sun.java.swing.LookAndFeel;
  7. import com.sun.java.swing.Timer;
  8. import com.sun.java.swing.UIManager;
  9. import com.sun.java.swing.plaf.ComponentUI;
  10. import com.sun.java.swing.plaf.SliderUI;
  11. import java.awt.Color;
  12. import java.awt.Component;
  13. import java.awt.Dimension;
  14. import java.awt.Graphics;
  15. import java.awt.IllegalComponentStateException;
  16. import java.awt.Insets;
  17. import java.awt.Polygon;
  18. import java.awt.Rectangle;
  19. import java.beans.PropertyChangeEvent;
  20. import java.beans.PropertyChangeListener;
  21. import java.io.Serializable;
  22. import java.util.Dictionary;
  23. import java.util.Enumeration;
  24.  
  25. public class BasicSliderUI extends SliderUI implements Serializable, PropertyChangeListener {
  26.    public final int POSITIVE_SCROLL = 1;
  27.    public final int NEGATIVE_SCROLL = -1;
  28.    public final int MIN_SCROLL = -2;
  29.    public final int MAX_SCROLL = 2;
  30.    protected ScrollListener scrollListener;
  31.    protected Timer scrollTimer;
  32.    protected JSlider slider;
  33.    protected Rectangle labelRect = new Rectangle(0, 0, 0, 0);
  34.    protected int trackBuffer;
  35.    private static final int TICK_SPACE = 8;
  36.    private static final Dimension PREFERRED_HORIZONTAL_SIZE = new Dimension(164, 21);
  37.    private static final Dimension PREFERRED_VERTICAL_SIZE = new Dimension(21, 164);
  38.    private static final Dimension MINIMUM_HORIZONTAL_SIZE = new Dimension(36, 21);
  39.    private static final Dimension MINIMUM_VERTICAL_SIZE = new Dimension(21, 36);
  40.    private transient boolean isDragging;
  41.    private TrackListener trackListener;
  42.    private ModelListener modelListener;
  43.    private SizingListener sizeListener;
  44.    private FListener focusListener;
  45.    private Rectangle thumbRect = new Rectangle(0, 0, 0, 0);
  46.    private Color shadowColor;
  47.    private Color highlightColor;
  48.    private Color focusColor;
  49.  
  50.    public Color getShadowColor() {
  51.       return this.shadowColor;
  52.    }
  53.  
  54.    public Color getHighlightColor() {
  55.       return this.highlightColor;
  56.    }
  57.  
  58.    public Color getFocusColor() {
  59.       return this.focusColor;
  60.    }
  61.  
  62.    public static ComponentUI createUI(JComponent var0) {
  63.       return new BasicSliderUI((JSlider)var0);
  64.    }
  65.  
  66.    public BasicSliderUI(JSlider var1) {
  67.    }
  68.  
  69.    public void installUI(JComponent var1) {
  70.       this.slider = (JSlider)var1;
  71.       LookAndFeel.installBorder(this.slider, "Slider.border");
  72.       LookAndFeel.installColors(this.slider, "Slider.background", "Slider.foreground");
  73.       this.highlightColor = UIManager.getColor("Slider.highlight");
  74.       this.shadowColor = UIManager.getColor("Slider.shadow");
  75.       this.focusColor = UIManager.getColor("Slider.focus");
  76.       this.isDragging = false;
  77.       this.trackListener = new TrackListener(this);
  78.       this.modelListener = new ModelListener(this);
  79.       this.sizeListener = new SizingListener(this);
  80.       this.focusListener = new FListener(this);
  81.       this.scrollListener = new ScrollListener(this);
  82.       this.scrollTimer = new Timer(100, this.scrollListener);
  83.       this.scrollTimer.setInitialDelay(300);
  84.       this.slider.addMouseListener(this.trackListener);
  85.       this.slider.addMouseMotionListener(this.trackListener);
  86.       this.slider.addFocusListener(this.focusListener);
  87.       this.slider.addComponentListener(this.sizeListener);
  88.       this.slider.addPropertyChangeListener(this);
  89.       this.slider.getModel().addChangeListener(this.modelListener);
  90.       this.slider.setEnabled(this.slider.isEnabled());
  91.       this.slider.setOpaque(true);
  92.       this.calculateThumbBounds();
  93.       this.recalcLabelRect();
  94.       this.recalcTrackBuffer();
  95.       this.calculateThumbBounds();
  96.       this.slider.registerKeyboardAction(new ActionScroller(this, this.slider, 1, false), KeyStroke.getKeyStroke(39, 0), 0);
  97.       this.slider.registerKeyboardAction(new ActionScroller(this, this.slider, -1, false), KeyStroke.getKeyStroke(40, 0), 0);
  98.       this.slider.registerKeyboardAction(new ActionScroller(this, this.slider, -1, true), KeyStroke.getKeyStroke(34, 0), 0);
  99.       this.slider.registerKeyboardAction(new ActionScroller(this, this.slider, -1, false), KeyStroke.getKeyStroke(37, 0), 0);
  100.       this.slider.registerKeyboardAction(new ActionScroller(this, this.slider, 1, false), KeyStroke.getKeyStroke(38, 0), 0);
  101.       this.slider.registerKeyboardAction(new ActionScroller(this, this.slider, 1, true), KeyStroke.getKeyStroke(33, 0), 0);
  102.       this.slider.registerKeyboardAction(new ActionScroller(this, this.slider, -2, true), KeyStroke.getKeyStroke(36, 0), 0);
  103.       this.slider.registerKeyboardAction(new ActionScroller(this, this.slider, 2, true), KeyStroke.getKeyStroke(35, 0), 0);
  104.    }
  105.  
  106.    public void uninstallUI(JComponent var1) {
  107.       if (var1 != this.slider) {
  108.          throw new IllegalComponentStateException(this + " was asked to deinstall() " + var1 + " when it only knows about " + this.slider + ".");
  109.       } else {
  110.          LookAndFeel.uninstallBorder(this.slider);
  111.          this.scrollTimer.stop();
  112.          this.scrollTimer = null;
  113.          this.slider.getModel().removeChangeListener(this.modelListener);
  114.          this.slider.removeMouseListener(this.trackListener);
  115.          this.slider.removeMouseMotionListener(this.trackListener);
  116.          this.slider.removeFocusListener(this.focusListener);
  117.          this.slider.removeComponentListener(this.sizeListener);
  118.          this.slider.removePropertyChangeListener(this);
  119.          this.slider.resetKeyboardActions();
  120.          this.thumbRect = null;
  121.          this.slider = null;
  122.       }
  123.    }
  124.  
  125.    public Dimension getPreferredHorizontalSize() {
  126.       return PREFERRED_HORIZONTAL_SIZE;
  127.    }
  128.  
  129.    public Dimension getPreferredVerticalSize() {
  130.       return PREFERRED_VERTICAL_SIZE;
  131.    }
  132.  
  133.    public Dimension getMinimumHorizontalSize() {
  134.       return MINIMUM_HORIZONTAL_SIZE;
  135.    }
  136.  
  137.    public Dimension getMinimumVerticalSize() {
  138.       return MINIMUM_VERTICAL_SIZE;
  139.    }
  140.  
  141.    public Dimension getPreferredSize(JComponent var1) {
  142.       Dimension var2;
  143.       if (this.slider.getOrientation() == 1) {
  144.          var2 = new Dimension(this.getPreferredVerticalSize());
  145.          if (this.slider.getPaintTicks()) {
  146.             var2.width += this.getScrollTickRect().width + 1;
  147.          }
  148.  
  149.          if (this.slider.getPaintLabels()) {
  150.             var2.width += this.getLabelRect().width + 1;
  151.          }
  152.       } else {
  153.          var2 = new Dimension(this.getPreferredHorizontalSize());
  154.          if (this.slider.getPaintTicks()) {
  155.             var2.height += this.getScrollTickRect().height + 1;
  156.          }
  157.  
  158.          if (this.slider.getPaintLabels()) {
  159.             var2.height += this.getLabelRect().height + 1;
  160.          }
  161.       }
  162.  
  163.       var2.width += this.slider.getInsets().left + this.slider.getInsets().right;
  164.       var2.height += this.slider.getInsets().top + this.slider.getInsets().bottom;
  165.       return var2;
  166.    }
  167.  
  168.    public Dimension getMinimumSize(JComponent var1) {
  169.       Dimension var2;
  170.       if (this.slider.getOrientation() == 1) {
  171.          var2 = new Dimension(this.getMinimumVerticalSize());
  172.          if (this.slider.getPaintTicks()) {
  173.             var2.width += this.getTickSpace() + 1;
  174.          }
  175.  
  176.          if (this.slider.getPaintLabels()) {
  177.             var2.width += this.getLabelRect().width + 1;
  178.          }
  179.       } else {
  180.          var2 = new Dimension(this.getMinimumHorizontalSize());
  181.          if (this.slider.getPaintTicks()) {
  182.             var2.height += this.getTickSpace() + 1;
  183.          }
  184.  
  185.          if (this.slider.getPaintLabels()) {
  186.             var2.height += this.getLabelRect().height + 1;
  187.          }
  188.       }
  189.  
  190.       var2.width += this.slider.getInsets().left + this.slider.getInsets().right;
  191.       var2.height += this.slider.getInsets().top + this.slider.getInsets().bottom;
  192.       return var2;
  193.    }
  194.  
  195.    public Dimension getMaximumSize(JComponent var1) {
  196.       Dimension var2 = this.getPreferredSize(var1);
  197.       if (this.slider.getOrientation() == 1) {
  198.          var2.height = 32767;
  199.       } else {
  200.          var2.width = 32767;
  201.       }
  202.  
  203.       return var2;
  204.    }
  205.  
  206.    protected Rectangle getFullContentArea() {
  207.       Rectangle var1 = new Rectangle();
  208.       Insets var2 = this.slider.getInsets();
  209.       Dimension var3 = this.slider.getSize();
  210.       var1.x = var2.left;
  211.       var1.y = var2.top;
  212.       var1.width = var3.width - (var2.left + var2.right);
  213.       var1.height = var3.height - (var2.top + var2.bottom);
  214.       return var1;
  215.    }
  216.  
  217.    public Rectangle getScrollTrackRect() {
  218.       Rectangle var1 = this.getFullContentArea();
  219.       if (this.slider.getPaintTicks() || this.slider.getPaintLabels()) {
  220.          if (this.slider.getOrientation() == 0) {
  221.             var1.setSize(var1.width, this.getScrollTickRect().y - 1 - var1.y);
  222.          } else {
  223.             var1.setSize(this.getScrollTickRect().x - 1 - var1.x, var1.height);
  224.          }
  225.       }
  226.  
  227.       return var1;
  228.    }
  229.  
  230.    public Rectangle getScrollTickRect() {
  231.       Rectangle var1 = this.getFullContentArea();
  232.       if (this.slider.getPaintTicks()) {
  233.          Rectangle var2 = this.getLabelRect();
  234.          if (this.slider.getOrientation() == 1) {
  235.             if (this.slider.getPaintLabels()) {
  236.                var1.setLocation(var2.x - 1 - this.getTickSize(), var1.y);
  237.             } else {
  238.                var1.setLocation(var1.x + (var1.width - 1) - this.getTickSize(), var1.y);
  239.             }
  240.  
  241.             var1.setSize(this.getTickSize(), var1.height);
  242.          } else {
  243.             if (this.slider.getPaintLabels()) {
  244.                var1.setLocation(var1.x, var2.y - 1 - this.getTickSize());
  245.             } else {
  246.                var1.setLocation(var1.x, var1.y + (var1.height - 1) - this.getTickSize());
  247.             }
  248.  
  249.             var1.setSize(var1.width, this.getTickSize());
  250.          }
  251.       } else {
  252.          var1.setLocation(this.labelRect.x, this.labelRect.y);
  253.          if (this.slider.getOrientation() == 1) {
  254.             var1.setSize(0, var1.height);
  255.          } else {
  256.             var1.setSize(var1.width, 0);
  257.          }
  258.       }
  259.  
  260.       return var1;
  261.    }
  262.  
  263.    public Rectangle getLabelRect() {
  264.       return this.labelRect;
  265.    }
  266.  
  267.    protected void recalcLabelRect() {
  268.       Rectangle var1 = this.getFullContentArea();
  269.       if (this.slider.getPaintLabels()) {
  270.          if (this.slider.getOrientation() == 0) {
  271.             int var2 = this.getHeightOfTallestLabel();
  272.             var1.y = var1.y + (var1.height - 1) - var2;
  273.             var1.height = var2;
  274.          } else {
  275.             int var3 = this.getWidthOfWidestLabel();
  276.             var1.x = var1.x + (var1.width - 1) - var3;
  277.             var1.width = var3;
  278.          }
  279.       } else if (this.slider.getOrientation() == 1) {
  280.          var1.setLocation(var1.x + (var1.width - 1), var1.y);
  281.          var1.setSize(0, var1.height);
  282.       } else {
  283.          var1.setLocation(var1.x, var1.y + (var1.height - 1));
  284.          var1.setSize(var1.width, 0);
  285.       }
  286.  
  287.       this.labelRect = var1;
  288.    }
  289.  
  290.    public void propertyChange(PropertyChangeEvent var1) {
  291.       if (var1.getPropertyName().equals("labelTable")) {
  292.          this.recalcLabelRect();
  293.          this.recalcTrackBuffer();
  294.       }
  295.  
  296.    }
  297.  
  298.    protected void recalcTrackBuffer() {
  299.       if (this.slider.getPaintLabels() && this.slider.getLabelTable() != null) {
  300.          Component var1 = this.getHighestValueLabel();
  301.          Component var2 = this.getLowestValueLabel();
  302.          if (this.slider.getOrientation() == 0) {
  303.             this.trackBuffer = Math.max(var1.getBounds().width, var2.getBounds().width) / 2;
  304.             this.trackBuffer = Math.max(this.trackBuffer, this.getThumbRect().width / 2);
  305.          } else {
  306.             this.trackBuffer = Math.max(var1.getBounds().height, var2.getBounds().height) / 2;
  307.             this.trackBuffer = Math.max(this.trackBuffer, this.getThumbRect().height / 2);
  308.          }
  309.       } else if (this.slider.getOrientation() == 0) {
  310.          this.trackBuffer = this.getThumbRect().width / 2;
  311.       } else {
  312.          this.trackBuffer = this.getThumbRect().height / 2;
  313.       }
  314.    }
  315.  
  316.    protected int getWidthOfWidestLabel() {
  317.       Dictionary var1 = this.slider.getLabelTable();
  318.       int var2 = 0;
  319.       Component var4;
  320.       if (var1 != null) {
  321.          for(Enumeration var3 = var1.keys(); var3.hasMoreElements(); var2 = Math.max(var4.getPreferredSize().width, var2)) {
  322.             var4 = (Component)var1.get(var3.nextElement());
  323.          }
  324.       }
  325.  
  326.       return var2;
  327.    }
  328.  
  329.    protected int getHeightOfTallestLabel() {
  330.       Dictionary var1 = this.slider.getLabelTable();
  331.       int var2 = 0;
  332.       Component var4;
  333.       if (var1 != null) {
  334.          for(Enumeration var3 = var1.keys(); var3.hasMoreElements(); var2 = Math.max(var4.getPreferredSize().height, var2)) {
  335.             var4 = (Component)var1.get(var3.nextElement());
  336.          }
  337.       }
  338.  
  339.       return var2;
  340.    }
  341.  
  342.    protected int getWidthOfHighValueLabel() {
  343.       Component var1 = this.getHighestValueLabel();
  344.       int var2 = 0;
  345.       if (var1 != null) {
  346.          var2 = var1.getPreferredSize().width;
  347.       }
  348.  
  349.       return var2;
  350.    }
  351.  
  352.    protected int getWidthOfLowValueLabel() {
  353.       Component var1 = this.getLowestValueLabel();
  354.       int var2 = 0;
  355.       if (var1 != null) {
  356.          var2 = var1.getPreferredSize().width;
  357.       }
  358.  
  359.       return var2;
  360.    }
  361.  
  362.    protected int getHeightOfHighValueLabel() {
  363.       Component var1 = this.getHighestValueLabel();
  364.       int var2 = 0;
  365.       if (var1 != null) {
  366.          var2 = var1.getPreferredSize().height;
  367.       }
  368.  
  369.       return var2;
  370.    }
  371.  
  372.    protected int getHeightOfLowValueLabel() {
  373.       Component var1 = this.getLowestValueLabel();
  374.       int var2 = 0;
  375.       if (var1 != null) {
  376.          var2 = var1.getPreferredSize().height;
  377.       }
  378.  
  379.       return var2;
  380.    }
  381.  
  382.    protected Component getLowestValueLabel() {
  383.       Dictionary var1 = this.slider.getLabelTable();
  384.       Component var2 = null;
  385.       if (var1 != null) {
  386.          Enumeration var3 = var1.keys();
  387.          if (var3.hasMoreElements()) {
  388.             int var4;
  389.             int var5;
  390.             for(var4 = (Integer)var3.nextElement(); var3.hasMoreElements(); var4 = Math.min(var5, var4)) {
  391.                var5 = (Integer)var3.nextElement();
  392.             }
  393.  
  394.             var2 = (Component)var1.get(new Integer(var4));
  395.          }
  396.       }
  397.  
  398.       return var2;
  399.    }
  400.  
  401.    protected Component getHighestValueLabel() {
  402.       Dictionary var1 = this.slider.getLabelTable();
  403.       Component var2 = null;
  404.       if (var1 != null) {
  405.          Enumeration var3 = var1.keys();
  406.          if (var3.hasMoreElements()) {
  407.             int var4;
  408.             int var5;
  409.             for(var4 = (Integer)var3.nextElement(); var3.hasMoreElements(); var4 = Math.max(var5, var4)) {
  410.                var5 = (Integer)var3.nextElement();
  411.             }
  412.  
  413.             var2 = (Component)var1.get(new Integer(var4));
  414.          }
  415.       }
  416.  
  417.       return var2;
  418.    }
  419.  
  420.    public int getTickSpace() {
  421.       return 8;
  422.    }
  423.  
  424.    public int getTickSize() {
  425.       return this.getTickSpace();
  426.    }
  427.  
  428.    public void paint(Graphics var1, JComponent var2) {
  429.       this.paintTrack(var1);
  430.       if (this.slider.getPaintTicks()) {
  431.          this.paintTicks(var1);
  432.       }
  433.  
  434.       if (this.slider.getPaintLabels()) {
  435.          this.paintLabels(var1);
  436.       }
  437.  
  438.       this.paintFocus(var1);
  439.       this.paintThumb(var1);
  440.    }
  441.  
  442.    public void paintFocus(Graphics var1) {
  443.       if (this.slider.hasFocus()) {
  444.          Rectangle var2 = this.slider.getBounds();
  445.          var2.x = 0;
  446.          var2.y = 0;
  447.          if (this.slider.getBorder() != null) {
  448.             var2 = this.getFullContentArea();
  449.          }
  450.  
  451.          var1.setColor(this.getFocusColor());
  452.          BasicGraphicsUtils.drawDashedRect(var1, var2.x + 1, var2.y + 1, var2.width - 2, var2.height - 2);
  453.       }
  454.  
  455.    }
  456.  
  457.    public void paintTrack(Graphics var1) {
  458.       Rectangle var7 = this.getScrollTrackRect();
  459.       int var2;
  460.       int var3;
  461.       if (this.slider.getOrientation() == 0) {
  462.          int var6 = this.trackBuffer;
  463.          var2 = var6;
  464.          var3 = var7.height / 2 - 2;
  465.          int var4 = var7.width - this.trackBuffer * 2;
  466.          var1.translate(var7.x + var6, var7.y + var3);
  467.          var1.setColor(this.getShadowColor());
  468.          var1.drawLine(0, 0, var4 - 1, 0);
  469.          var1.drawLine(0, 1, 0, 2);
  470.          var1.setColor(this.getHighlightColor());
  471.          var1.drawLine(0, 3, var4, 3);
  472.          var1.drawLine(var4, 0, var4, 3);
  473.          var1.setColor(Color.black);
  474.          var1.drawLine(1, 1, var4 - 2, 1);
  475.       } else {
  476.          int var8 = this.trackBuffer;
  477.          var2 = var7.width / 2 - 2;
  478.          var3 = var8;
  479.          int var5 = var7.height - this.trackBuffer * 2;
  480.          var1.translate(var7.x + var2, var7.y + var8);
  481.          var1.setColor(this.getShadowColor());
  482.          var1.drawLine(0, 0, 0, var5 - 1);
  483.          var1.drawLine(1, 0, 2, 0);
  484.          var1.setColor(this.getHighlightColor());
  485.          var1.drawLine(3, 0, 3, var5);
  486.          var1.drawLine(0, var5, 3, var5);
  487.          var1.setColor(Color.black);
  488.          var1.drawLine(1, 1, 1, var5 - 2);
  489.       }
  490.  
  491.       var1.translate(-(var7.x + var2), -(var7.y + var3));
  492.    }
  493.  
  494.    public void paintTicks(Graphics var1) {
  495.       Rectangle var2 = this.getScrollTickRect();
  496.       var1.translate(var2.x, var2.y);
  497.       var1.setColor(this.slider.getBackground());
  498.       var1.fillRect(0, 0, var2.width, var2.height);
  499.       var1.setColor(Color.black);
  500.       int var3 = this.slider.getMajorTickSpacing();
  501.       int var4 = this.slider.getMinorTickSpacing();
  502.       if (this.slider.getOrientation() == 0) {
  503.          int var5 = this.slider.getMinimum();
  504.          int var6 = 0;
  505.          if (this.slider.getMinorTickSpacing() > 0) {
  506.             while(var5 <= this.slider.getMaximum()) {
  507.                var6 = this.xPositionForValue(var5);
  508.                this.paintMinorTickForHorizSlider(var1, var2, var6);
  509.                var5 += this.slider.getMinorTickSpacing();
  510.             }
  511.          }
  512.  
  513.          if (this.slider.getMajorTickSpacing() > 0) {
  514.             for(int var7 = this.slider.getMinimum(); var7 <= this.slider.getMaximum(); var7 += this.slider.getMajorTickSpacing()) {
  515.                var6 = this.xPositionForValue(var7);
  516.                this.paintMajorTickForHorizSlider(var1, var2, var6);
  517.             }
  518.          }
  519.       } else {
  520.          int var8 = this.slider.getMinimum();
  521.          int var12 = 0;
  522.          if (this.slider.getMinorTickSpacing() > 0) {
  523.             while(var8 <= this.slider.getMaximum()) {
  524.                var12 = this.yPositionForValue(var8);
  525.                this.paintMinorTickForVertSlider(var1, var2, var12);
  526.                var8 += this.slider.getMinorTickSpacing();
  527.             }
  528.          }
  529.  
  530.          if (this.slider.getMajorTickSpacing() > 0) {
  531.             for(int var9 = this.slider.getMinimum(); var9 <= this.slider.getMaximum(); var9 += this.slider.getMajorTickSpacing()) {
  532.                var12 = this.yPositionForValue(var9);
  533.                this.paintMajorTickForVertSlider(var1, var2, var12);
  534.             }
  535.          }
  536.       }
  537.  
  538.       var1.translate(-var2.x, -var2.y);
  539.    }
  540.  
  541.    protected void paintMinorTickForHorizSlider(Graphics var1, Rectangle var2, int var3) {
  542.       var1.drawLine(var3, 0, var3, var2.height / 2 - 1);
  543.    }
  544.  
  545.    protected void paintMajorTickForHorizSlider(Graphics var1, Rectangle var2, int var3) {
  546.       var1.drawLine(var3, 0, var3, var2.height - 2);
  547.    }
  548.  
  549.    protected void paintMinorTickForVertSlider(Graphics var1, Rectangle var2, int var3) {
  550.       var1.drawLine(0, var3, var2.width / 2 - 1, var3);
  551.    }
  552.  
  553.    protected void paintMajorTickForVertSlider(Graphics var1, Rectangle var2, int var3) {
  554.       var1.drawLine(0, var3, var2.width - 2, var3);
  555.    }
  556.  
  557.    public void paintLabels(Graphics var1) {
  558.       Rectangle var2 = this.getLabelRect();
  559.       var1.translate(var2.x, var2.y);
  560.       Dictionary var3 = this.slider.getLabelTable();
  561.       if (var3 != null) {
  562.          Enumeration var4 = var3.keys();
  563.  
  564.          while(var4.hasMoreElements()) {
  565.             Integer var5 = (Integer)var4.nextElement();
  566.             Component var6 = (Component)var3.get(var5);
  567.             if (this.slider.getOrientation() == 0) {
  568.                this.paintHorizontalLabel(var1, var5, var6);
  569.             } else {
  570.                this.paintVerticalLabel(var1, var5, var6);
  571.             }
  572.          }
  573.       }
  574.  
  575.       var1.translate(-var2.x, -var2.y);
  576.    }
  577.  
  578.    protected void paintHorizontalLabel(Graphics var1, int var2, Component var3) {
  579.       int var4 = this.xPositionForValue(var2);
  580.       int var5 = var4 - var3.getPreferredSize().width / 2;
  581.       var1.translate(var5, 0);
  582.       var3.paint(var1);
  583.       var1.translate(-var5, 0);
  584.    }
  585.  
  586.    protected void paintVerticalLabel(Graphics var1, int var2, Component var3) {
  587.       int var4 = this.yPositionForValue(var2);
  588.       int var5 = var4 - var3.getPreferredSize().height / 2;
  589.       var1.translate(0, var5);
  590.       var3.paint(var1);
  591.       var1.translate(0, -var5);
  592.    }
  593.  
  594.    public void paintThumb(Graphics var1) {
  595.       Rectangle var2 = this.getThumbRect();
  596.       int var3 = var2.width;
  597.       int var4 = var2.height;
  598.       var1.translate(var2.x, var2.y);
  599.       if (this.slider.isEnabled()) {
  600.          var1.setColor(this.slider.getBackground());
  601.       } else {
  602.          var1.setColor(this.slider.getBackground().darker());
  603.       }
  604.  
  605.       if (!this.slider.getPaintTicks()) {
  606.          var1.fillRect(0, 0, var3, var4);
  607.          var1.setColor(Color.black);
  608.          var1.drawLine(0, var4 - 1, var3 - 1, var4 - 1);
  609.          var1.drawLine(var3 - 1, 0, var3 - 1, var4 - 1);
  610.          var1.setColor(BasicGraphicsUtils.controlHighlight);
  611.          var1.drawLine(0, 0, 0, var4 - 2);
  612.          var1.drawLine(1, 0, var3 - 2, 0);
  613.          var1.setColor(BasicGraphicsUtils.controlShadow);
  614.          var1.drawLine(1, var4 - 2, var3 - 2, var4 - 2);
  615.          var1.drawLine(var3 - 2, 1, var3 - 2, var4 - 3);
  616.       } else if (this.slider.getOrientation() == 0) {
  617.          int var5 = var3 / 2;
  618.          var1.fillRect(1, 1, var3 - 3, var4 - 1 - var5);
  619.          Polygon var6 = new Polygon();
  620.          var6.addPoint(1, var4 - var5);
  621.          var6.addPoint(var5 - 1, var4 - 1);
  622.          var6.addPoint(var3 - 2, var4 - 1 - var5);
  623.          var1.fillPolygon(var6);
  624.          var1.setColor(BasicGraphicsUtils.controlHighlight);
  625.          var1.drawLine(0, 0, var3 - 2, 0);
  626.          var1.drawLine(0, 1, 0, var4 - 1 - var5);
  627.          var1.drawLine(0, var4 - var5, var5 - 1, var4 - 1);
  628.          var1.setColor(Color.black);
  629.          var1.drawLine(var3 - 1, 0, var3 - 1, var4 - 2 - var5);
  630.          var1.drawLine(var3 - 1, var4 - 1 - var5, var3 - 1 - var5, var4 - 1);
  631.          var1.setColor(BasicGraphicsUtils.controlShadow);
  632.          var1.drawLine(var3 - 2, 1, var3 - 2, var4 - 2 - var5);
  633.          var1.drawLine(var3 - 2, var4 - 1 - var5, var3 - 1 - var5, var4 - 2);
  634.       } else {
  635.          int var7 = var4 / 2;
  636.          var1.fillRect(1, 1, var3 - 1 - var7, var4 - 3);
  637.          Polygon var8 = new Polygon();
  638.          var8.addPoint(var3 - var7 - 1, 0);
  639.          var8.addPoint(var3 - 1, var7);
  640.          var8.addPoint(var3 - 1 - var7, var4 - 2);
  641.          var1.fillPolygon(var8);
  642.          var1.setColor(BasicGraphicsUtils.controlHighlight);
  643.          var1.drawLine(0, 0, 0, var4 - 2);
  644.          var1.drawLine(1, 0, var3 - 1 - var7, 0);
  645.          var1.drawLine(var3 - var7 - 1, 0, var3 - 1, var7);
  646.          var1.setColor(Color.black);
  647.          var1.drawLine(0, var4 - 1, var3 - 2 - var7, var4 - 1);
  648.          var1.drawLine(var3 - 1 - var7, var4 - 1, var3 - 1, var4 - 1 - var7);
  649.          var1.setColor(BasicGraphicsUtils.controlShadow);
  650.          var1.drawLine(1, var4 - 2, var3 - 2 - var7, var4 - 2);
  651.          var1.drawLine(var3 - 1 - var7, var4 - 2, var3 - 2, var4 - var7 - 1);
  652.       }
  653.  
  654.       var1.translate(-var2.x, -var2.y);
  655.    }
  656.  
  657.    public void setThumbBounds(int var1, int var2, int var3, int var4) {
  658.       Rectangle var5 = new Rectangle(this.thumbRect.x, this.thumbRect.y, this.thumbRect.width, this.thumbRect.height);
  659.       this.thumbRect.setBounds(var1, var2, var3, var4);
  660.       Rectangle var6 = var5.union(this.thumbRect);
  661.       this.slider.repaint(var6.x, var6.y, var6.width, var6.height);
  662.    }
  663.  
  664.    public void setThumbLocation(int var1, int var2) {
  665.       Rectangle var3 = new Rectangle(this.thumbRect.x, this.thumbRect.y, this.thumbRect.width, this.thumbRect.height);
  666.       this.thumbRect.setLocation(var1, var2);
  667.       Rectangle var4 = var3.union(this.thumbRect);
  668.       this.slider.repaint(var4.x, var4.y, var4.width, var4.height);
  669.    }
  670.  
  671.    public Rectangle getThumbRect() {
  672.       return this.thumbRect;
  673.    }
  674.  
  675.    public void scrollByBlock(int var1) {
  676.       JSlider var2 = this.slider;
  677.       synchronized(var2){}
  678.  
  679.       try {
  680.          int var4 = this.slider.getValue();
  681.          int var5 = this.slider.getMaximum() / 10;
  682.          int var6 = var5 * (var1 > 0 ? 1 : -1);
  683.          this.slider.setValue(var4 + var6);
  684.       } catch (Throwable var8) {
  685.          throw var8;
  686.       }
  687.  
  688.    }
  689.  
  690.    public void scrollByUnit(int var1) {
  691.       JSlider var2 = this.slider;
  692.       synchronized(var2){}
  693.  
  694.       try {
  695.          int var4 = this.slider.getValue();
  696.          int var5 = var1 > 0 ? 1 : -1;
  697.          this.slider.setValue(var4 + var5);
  698.       } catch (Throwable var7) {
  699.          throw var7;
  700.       }
  701.  
  702.    }
  703.  
  704.    protected void scrollDueToClickInTrack(int var1) {
  705.       this.scrollByBlock(var1);
  706.    }
  707.  
  708.    protected int xPositionForValue(int var1) {
  709.       int var2 = this.slider.getMinimum();
  710.       this.slider.getMaximum();
  711.       Rectangle var3 = this.getScrollTrackRect();
  712.       int var4 = var3.width - this.trackBuffer * 2;
  713.       int var5 = this.slider.getMaximum() - this.slider.getMinimum();
  714.       double var6 = (double)var4 / (double)var5;
  715.       int var8 = var3.x + this.trackBuffer;
  716.       int var9 = var3.x + (var3.width - 1) - this.trackBuffer;
  717.       int var10;
  718.       if (!this.slider.getInverted()) {
  719.          var10 = (int)((long)var8 + Math.round(var6 * (double)(var1 - var2)));
  720.       } else {
  721.          var10 = (int)((long)var9 - Math.round(var6 * (double)(var1 - var2)));
  722.       }
  723.  
  724.       var10 = Math.max(var8, var10);
  725.       var10 = Math.min(var9, var10);
  726.       return var10;
  727.    }
  728.  
  729.    protected int yPositionForValue(int var1) {
  730.       int var2 = this.slider.getMinimum();
  731.       int var3 = this.slider.getMaximum();
  732.       Rectangle var4 = this.getScrollTrackRect();
  733.       int var5 = var4.height - this.trackBuffer * 2;
  734.       int var6 = this.slider.getMaximum() - this.slider.getMinimum();
  735.       double var7 = (double)var5 / (double)var6;
  736.       int var9 = var4.y + this.trackBuffer;
  737.       int var10 = var4.y + (var4.height - 1) - this.trackBuffer;
  738.       int var11;
  739.       if (!this.slider.getInverted()) {
  740.          var11 = (int)((long)var9 + Math.round(var7 * (double)(var3 - var1)));
  741.       } else {
  742.          var11 = (int)((long)var9 + Math.round(var7 * (double)(var1 - var2)));
  743.       }
  744.  
  745.       var11 = Math.max(var9, var11);
  746.       var11 = Math.min(var10, var11);
  747.       return var11;
  748.    }
  749.  
  750.    public void calculateThumbBounds() {
  751.       if (this.slider.getOrientation() == 1) {
  752.          this.setThumbBounds(this.getScrollTrackRect().x, this.yPositionForValue(this.slider.getValue()) - this.getThumbRect().height / 2, this.getScrollTrackRect().width, 11);
  753.       } else {
  754.          this.setThumbBounds(this.xPositionForValue(this.slider.getValue()) - this.getThumbRect().width / 2, this.getScrollTrackRect().y, 11, this.getScrollTrackRect().height);
  755.       }
  756.    }
  757.  
  758.    // $FF: synthetic method
  759.    static boolean access$0(BasicSliderUI var0) {
  760.       return var0.isDragging;
  761.    }
  762.  
  763.    // $FF: synthetic method
  764.    static void access$1(BasicSliderUI var0, boolean var1) {
  765.       var0.isDragging = var1;
  766.    }
  767.  
  768.    // $FF: synthetic method
  769.    static TrackListener access$2(BasicSliderUI var0) {
  770.       return var0.trackListener;
  771.    }
  772. }
  773.