I made a mistake in my previous patch for the BasicSliderUI class:

http://developer.classpath.org/pipermail/classpath-patches/2006-April/001663.html

It works, but only because the ActionMap is being created for every JSlider instance, and not shared as intended. I used the wrong lookup key for the shared instance, so it is never found and so a new ActionMap is created every time.

This patch (committed) fixes the problem, by using the correct lookup key and then modifying the actions so they act upon the slider/ui coming in via the ActionEvent:

2006-04-18  David Gilbert  <[EMAIL PROTECTED]>

        * javax/swing/plaf/basic/BasicSliderUI.java
        (getActionMap): Fixed lookup key,
        (createActionMap): Modified actions to fetch slider/ui from the event
        source.

Regards,

Dave
Index: javax/swing/plaf/basic/BasicSliderUI.java
===================================================================
RCS file: 
/sources/classpath/classpath/javax/swing/plaf/basic/BasicSliderUI.java,v
retrieving revision 1.28
diff -u -r1.28 BasicSliderUI.java
--- javax/swing/plaf/basic/BasicSliderUI.java   17 Apr 2006 06:39:03 -0000      
1.28
+++ javax/swing/plaf/basic/BasicSliderUI.java   18 Apr 2006 08:34:01 -0000
@@ -2347,7 +2347,7 @@
    */
   ActionMap getActionMap() 
   {
-    ActionMap map = (ActionMap) UIManager.get("JSlider.actionMap");
+    ActionMap map = (ActionMap) UIManager.get("Slider.actionMap");
 
     if (map == null) // first time here
       {
@@ -2375,10 +2375,12 @@
             new AbstractAction("positiveUnitIncrement") {
               public void actionPerformed(ActionEvent event)
               {
+                JSlider slider = (JSlider) event.getSource();
+                BasicSliderUI ui = (BasicSliderUI) slider.getUI();
                 if (slider.getInverted())
-                  scrollByUnit(BasicSliderUI.NEGATIVE_SCROLL);
+                  ui.scrollByUnit(BasicSliderUI.NEGATIVE_SCROLL);
                 else
-                  scrollByUnit(BasicSliderUI.POSITIVE_SCROLL);
+                  ui.scrollByUnit(BasicSliderUI.POSITIVE_SCROLL);
               }
             }
     );
@@ -2386,10 +2388,12 @@
             new AbstractAction("negativeUnitIncrement") {
               public void actionPerformed(ActionEvent event)
               {
+                JSlider slider = (JSlider) event.getSource();
+                BasicSliderUI ui = (BasicSliderUI) slider.getUI();
                 if (slider.getInverted())
-                  scrollByUnit(BasicSliderUI.POSITIVE_SCROLL);
+                  ui.scrollByUnit(BasicSliderUI.POSITIVE_SCROLL);
                 else
-                  scrollByUnit(BasicSliderUI.NEGATIVE_SCROLL);
+                  ui.scrollByUnit(BasicSliderUI.NEGATIVE_SCROLL);
               }
             }
     );
@@ -2397,10 +2401,12 @@
             new AbstractAction("positiveBlockIncrement") {
               public void actionPerformed(ActionEvent event)
               {
+                JSlider slider = (JSlider) event.getSource();
+                BasicSliderUI ui = (BasicSliderUI) slider.getUI();
                 if (slider.getInverted())
-                  scrollByBlock(BasicSliderUI.NEGATIVE_SCROLL);
+                  ui.scrollByBlock(BasicSliderUI.NEGATIVE_SCROLL);
                 else
-                  scrollByBlock(BasicSliderUI.POSITIVE_SCROLL);
+                  ui.scrollByBlock(BasicSliderUI.POSITIVE_SCROLL);
               }
             }
     );
@@ -2408,10 +2414,12 @@
             new AbstractAction("negativeBlockIncrement") {
               public void actionPerformed(ActionEvent event)
               {
+                JSlider slider = (JSlider) event.getSource();
+                BasicSliderUI ui = (BasicSliderUI) slider.getUI();
                 if (slider.getInverted())
-                  scrollByBlock(BasicSliderUI.POSITIVE_SCROLL);
+                  ui.scrollByBlock(BasicSliderUI.POSITIVE_SCROLL);
                 else
-                  scrollByBlock(BasicSliderUI.NEGATIVE_SCROLL);
+                  ui.scrollByBlock(BasicSliderUI.NEGATIVE_SCROLL);
               }
             }
     );
@@ -2419,6 +2427,7 @@
             new AbstractAction("minScroll") {
               public void actionPerformed(ActionEvent event)
               {
+                JSlider slider = (JSlider) event.getSource();
                 if (slider.getInverted())
                   slider.setValue(slider.getMaximum());
                 else
@@ -2430,6 +2439,7 @@
             new AbstractAction("maxScroll") {
               public void actionPerformed(ActionEvent event)
               {
+                JSlider slider = (JSlider) event.getSource();
                 if (slider.getInverted())
                   slider.setValue(slider.getMinimum());
                 else

Reply via email to