You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by od...@apache.org on 2007/08/16 11:57:11 UTC
svn commit: r566638 - in /harmony/enhanced/classlib/trunk/modules/swing/src:
main/java/common/javax/swing/plaf/basic/BasicSliderUI.java
test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java
Author: odeakin
Date: Thu Aug 16 02:57:11 2007
New Revision: 566638
URL: http://svn.apache.org/viewvc?view=rev&rev=566638
Log:
Apply patch HARMONY-4445 ([classlib][swing] JSlider thumb can't move if JSlider.getMaximum()=Integer.MAX_VALUE)
Modified:
harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSliderUI.java
harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java
Modified: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSliderUI.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSliderUI.java?view=diff&rev=566638&r1=566637&r2=566638
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSliderUI.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/plaf/basic/BasicSliderUI.java Thu Aug 16 02:57:11 2007
@@ -1095,21 +1095,29 @@
}
protected int xPositionForValue(final int value) {
- int size = slider.getMaximum() - slider.getMinimum();
- int result = drawInverted() ^ !slider.getComponentOrientation().isLeftToRight()
- ? trackRect.x + trackRect.width - (trackRect.width * (value - slider.getMinimum()) / size)
- : trackRect.x + trackRect.width * (value - slider.getMinimum()) / size;
+ // Changed according to JIRA 4445
+ double valueToSizeRatio = (double) value
+ / (double) (slider.getMaximum() - slider.getMinimum());
+
+ if ((drawInverted() ^ !slider.getComponentOrientation().isLeftToRight())) {
+ return (int) (trackRect.x + trackRect.width - (trackRect.width * valueToSizeRatio));
+ } else {
+ return (int) (trackRect.x + trackRect.width * valueToSizeRatio);
+ }
- return result;
}
protected int yPositionForValue(final int value) {
- int size = slider.getMaximum() - slider.getMinimum();
- int result = drawInverted() ^ (!slider.getComponentOrientation().isLeftToRight() && slider.getOrientation() == JSlider.HORIZONTAL)
- ? trackRect.y + trackRect.height * (value - slider.getMinimum()) / size
- : trackRect.y + trackRect.height - (trackRect.height * (value - slider.getMinimum()) / size);
+ // Changed according to JIRA 4445
+ double valueToSizeRatio = (double) value
+ / (double) (slider.getMaximum() - slider.getMinimum());
- return result;
+ if ((drawInverted() ^ (!slider.getComponentOrientation()
+ .isLeftToRight() && slider.getOrientation() == JSlider.HORIZONTAL))) {
+ return (int) (trackRect.y + trackRect.height * valueToSizeRatio);
+ } else {
+ return (int) (trackRect.y + trackRect.height - (trackRect.height * valueToSizeRatio));
+ }
}
public int valueForYPosition(final int yPos) {
Modified: harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java?view=diff&rev=566638&r1=566637&r2=566638
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/plaf/basic/BasicSliderUITest.java Thu Aug 16 02:57:11 2007
@@ -23,6 +23,7 @@
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JSlider;
+import javax.swing.SwingConstants;
import javax.swing.SwingTestCase;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
@@ -340,5 +341,57 @@
3, true);
assertTrue(m.isEnabled());
}
+
+ /**
+ * Regression test for HARMONY-4445
+ */
+ public void testMinMaxValue() {
+
+ slider.setMaximum(Integer.MAX_VALUE);
+ slider.setMinimum(0);
+ slider.setBounds(0,0,100,100);
+
+ int half = Integer.MAX_VALUE / 2;
+
+ // UI slightly modified to omit unneeded actions - no functional changes
+ // according to spec
+ BasicSliderUI tested = new BasicSliderUI(slider) {
+ @Override
+ protected void installKeyboardActions(JSlider unneded) {
+ // Empty. In real BasicSliderUI this method installs Keyboard
+ // actions
+ }
+
+ @Override
+ protected void installDefaults(JSlider unneded) {
+ // Empty. In real BasicSliderUI this method installs defaults
+ // (colors and fonts)
+ }
+
+ @Override
+ protected void installListeners(JSlider unneded) {
+ // Empty. In real BasicSliderUI this method installs listeners
+ }
+ };
+
+ tested.installUI(slider);
+ assertEquals(tested.xPositionForValue(half),
+ getCenterHorisontalPosition(tested));
+
+ slider.setOrientation(SwingConstants.VERTICAL);
+ tested.installUI(slider);
+
+ assertEquals(tested.yPositionForValue(half),
+ getCenterVerticalPosition(tested));
+
+ }
+
+ private int getCenterVerticalPosition(BasicSliderUI ui) {
+ return ui.trackRect.y + (ui.trackRect.height / 2);
+ }
+
+ private int getCenterHorisontalPosition(BasicSliderUI ui) {
+ return ui.trackRect.x + (ui.trackRect.width / 2);
+ }
}