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