You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by hi...@apache.org on 2007/01/15 09:58:18 UTC

svn commit: r496250 - in /harmony/enhanced/classlib/trunk/modules/swing/src: main/java/common/javax/swing/plaf/basic/BasicSliderUI.java test/api/java/common/javax/swing/plaf/basic/BasicSliderUITest.java

Author: hindessm
Date: Mon Jan 15 00:58:17 2007
New Revision: 496250

URL: http://svn.apache.org/viewvc?view=rev&rev=496250
Log:
Applying patches from "[#HARMONY-2855] [classlib][swing]
j.s.plaf.basic.BasicSliderUI.uninstallUI should throw
IllegalComponentStateException".

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/common/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=496250&r1=496249&r2=496250
==============================================================================
--- 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 Mon Jan 15 00:58:17 2007
@@ -14,18 +14,13 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-
-/**
- * @author Sergey Burlak
- * @version $Revision$
- */
-
 package javax.swing.plaf.basic;
 
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.Graphics;
+import java.awt.IllegalComponentStateException;
 import java.awt.Insets;
 import java.awt.Point;
 import java.awt.Rectangle;
@@ -59,16 +54,23 @@
 import org.apache.harmony.x.swing.StringConstants;
 import org.apache.harmony.x.swing.Utilities;
 
-
+/**
+ * <b>Note:</b> <code>serialVersionUID</code> fields are added as
+ * a performance optimization only but not as a guarantee of correct
+ * deserialization.
+ */
 public class BasicSliderUI extends SliderUI {
 
     public class ActionScroller extends AbstractAction {
+        private static final long serialVersionUID = -3454576988589353120L;
+
         public ActionScroller(final JSlider slider, final int dir, final boolean block) {
         }
 
         public void actionPerformed(final ActionEvent e) {
         }
 
+        @Override
         public boolean isEnabled() {
             return true;
         }
@@ -88,7 +90,9 @@
         }
     }
 
+
     public class ComponentHandler extends ComponentAdapter {
+        @Override
         public void componentResized(final ComponentEvent e) {
             calculateGeometry();
             slider.repaint();
@@ -175,6 +179,7 @@
             });
         }
 
+        @Override
         public void mouseReleased(final MouseEvent e) {
             if (trackTimer.isRunning()) {
                 trackTimer.stop();
@@ -200,6 +205,7 @@
             slider.repaint();
         }
 
+        @Override
         public void mousePressed(final MouseEvent e) {
             if (!slider.isFocusOwner()) {
                 slider.requestFocus();
@@ -239,6 +245,7 @@
             return false;
         }
 
+        @Override
         public void mouseDragged(final MouseEvent e) {
             mousePoint = e.getPoint();
             if (inThumb && SwingUtilities.isLeftMouseButton(e)) {
@@ -272,6 +279,7 @@
             }
         }
 
+        @Override
         public void mouseMoved(final MouseEvent e) {
         }
 
@@ -378,8 +386,6 @@
     private static final int UNIT_INCREMENT = 1;
 
     public BasicSliderUI(final JSlider slider) {
-        this.slider = slider;
-
         focusRect = new Rectangle();
         contentRect = new Rectangle();
         labelRect = new Rectangle();
@@ -408,6 +414,7 @@
         return new BasicSliderUI((JSlider)c);
     }
 
+    @Override
     public void installUI(final JComponent c) {
         slider = (JSlider)c;
 
@@ -418,9 +425,12 @@
         calculateGeometry();
     }
 
+    @Override
     public void uninstallUI(final JComponent c) {
-        slider = (JSlider)c;
-
+        if (c != slider) {
+            // TODO Perform i18n after HARMONY-1320 is applied
+            throw new IllegalComponentStateException(this + " was asked to deinstall() " + c + " when it only knows about " + slider);
+        }
         uninstallListeners(slider);
         uninstallKeyboardActions(slider);
     }
@@ -558,6 +568,7 @@
         return new Dimension(width, DEFAULT_SLIDER_MIN_SIZE);
     }
 
+    @Override
     public Dimension getPreferredSize(final JComponent c) {
         if (slider.getOrientation() == JSlider.HORIZONTAL) {
             return getPreferredHorizontalSize();
@@ -566,6 +577,7 @@
         }
     }
 
+    @Override
     public Dimension getMinimumSize(final JComponent c) {
         if (slider.getOrientation() == JSlider.HORIZONTAL) {
             return getMinimumHorizontalSize();
@@ -574,6 +586,7 @@
         }
     }
 
+    @Override
     public Dimension getMaximumSize(final JComponent c) {
         if (slider.getOrientation() == JSlider.HORIZONTAL) {
             return new Dimension(Short.MAX_VALUE, getPreferredHorizontalSize().height);
@@ -811,6 +824,7 @@
         return result;
     }
 
+    @Override
     public void paint(final Graphics g, final JComponent c) {
         Color oldColor = g.getColor();
 
@@ -1063,6 +1077,8 @@
 
     private Action newMaxScrollAction() {
         return new AbstractAction() {
+            private static final long serialVersionUID = -3822301141065864044L;
+
             public void actionPerformed(final ActionEvent e) {
                 if (drawInverted()) {
                     slider.setValue(slider.getMinimum());
@@ -1076,6 +1092,8 @@
 
     private Action newMinScrollAction() {
         return new AbstractAction() {
+            private static final long serialVersionUID = 703565386507416752L;
+
             public void actionPerformed(final ActionEvent e) {
                 if (drawInverted()) {
                     slider.setValue(slider.getMaximum());
@@ -1089,6 +1107,8 @@
 
     private Action newNegativeBlockIncrementAction() {
         return new AbstractAction() {
+            private static final long serialVersionUID = 7818668169396841520L;
+
             public void actionPerformed(final ActionEvent e) {
                 scrollByBlock(NEGATIVE_SCROLL);
             }
@@ -1097,6 +1117,8 @@
 
     private Action newNegativeUnitIncrementAction() {
         return new AbstractAction() {
+            private static final long serialVersionUID = -4366059737366026435L;
+
             public void actionPerformed(final ActionEvent e) {
                 scrollByUnit(NEGATIVE_SCROLL);
             }
@@ -1105,6 +1127,8 @@
 
     private Action newPositiveBlockIncrementAction() {
         return new AbstractAction() {
+            private static final long serialVersionUID = -5999323396935662487L;
+
             public void actionPerformed(final ActionEvent e) {
                 scrollByBlock(POSITIVE_SCROLL);
             }
@@ -1113,6 +1137,8 @@
 
     private Action newPositiveUnitIncrementAction() {
         return new AbstractAction() {
+            private static final long serialVersionUID = 5166413389559469128L;
+
             public void actionPerformed(final ActionEvent e) {
                 scrollByUnit(POSITIVE_SCROLL);
             }

Modified: harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/plaf/basic/BasicSliderUITest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/plaf/basic/BasicSliderUITest.java?view=diff&rev=496250&r1=496249&r2=496250
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/plaf/basic/BasicSliderUITest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/plaf/basic/BasicSliderUITest.java Mon Jan 15 00:58:17 2007
@@ -20,8 +20,11 @@
  */
 package javax.swing.plaf.basic;
 
+import java.awt.IllegalComponentStateException;
 import java.awt.Point;
 import java.util.Hashtable;
+
+import javax.swing.JButton;
 import javax.swing.JLabel;
 import javax.swing.JSlider;
 import javax.swing.SwingTestCase;
@@ -223,6 +226,64 @@
         assertEquals(new Point(200, -500), sliderUI.thumbRect.getLocation());
         sliderUI.setThumbLocation(-200, 500);
         assertEquals(new Point(-200, 500), sliderUI.thumbRect.getLocation());
+    }
+
+    // Regression test for HARMONY-2855
+    public void testBasicSliderUI() throws Exception {
+        assertNull(sliderUI.slider);
+    }
+
+    /**
+     * <code>uninstallUI</code> is called with the same instance of
+     * <code>JSlider</code> to which this UI was installed.
+     */
+    // Regression test for HARMONY-2855
+    public void testUninstallUI01() {
+        sliderUI.installUI(slider);
+        sliderUI.uninstallUI(slider);
+        // No exception is expected
+    }
+
+    /**
+     * <code>uninstallUI</code> is called before <code>installUI</code>
+     * was called.
+     */
+    // Regression test for HARMONY-2855
+    public void testUninstallUI02() {
+        try {
+            sliderUI.uninstallUI(slider);
+            fail("IllegalComponentStateException is expected");
+        } catch (IllegalComponentStateException e) {
+            // expected
+        }
+    }
+
+    /**
+     * <code>uninstallUI</code> is called with another instance of
+     * <code>JSlider</code>.
+     */
+    // Regression test for HARMONY-2855
+    public void testUninstallUI03() {
+        try {
+            sliderUI.uninstallUI(new JSlider());
+            fail("IllegalComponentStateException is expected");
+        } catch (IllegalComponentStateException e) {
+            // expected
+        }
+    }
+
+    /**
+     * <code>uninstallUI</code> is called with instance of another class, i.e.
+     * not <code>JSlider</code> instance.
+     */
+    // Regression test for HARMONY-2855
+    public void testUninstallUI04() {
+        try {
+            sliderUI.uninstallUI(new JButton());
+            fail("IllegalComponentStateException is expected");
+        } catch (IllegalComponentStateException e) {
+            // expected
+        }
     }
     
     /**