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

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