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