This patch (committed) implements the stubbed methods in AccessibleJSlider and fixes
a bug in the AccessibleJComponent class (the changeSupport field is not necessary,
and isn't used by the firePropertyChange() methods):
2006-03-23 David Gilbert <[EMAIL PROTECTED]>
* javax/swing/JComponent.java
(AccessibleJComponent.changeSupport): Removed field,
(AccessibleJComponent.AccessibleJComponent): Updated for removed field,
(AccessibleJComponent.addPropertyChangeListener): Call super,
(AccessibleJComponent.removePropertyChangeListener): Likewise,
* javax/swing/JSlider.java
(AccessibleJSlider.getAccessibleStateSet): Implemented,
(AccessibleJSlider.getAccessibleRole): Likewise,
(AccessibleJSlider.getAccessibleValue): Likewise,
(AccessibleJSlider.getCurrentAccessibleValue): Likewise,
(AccessibleJSlider.setCurrentAccessibleValue): Likewise,
(AccessibleJSlider.getMinimumAccessibleValue): Likewise,
(AccessibleJSlider.getMaximumAccessibleValue): Likewise,
(getAccessibleContext): Added API docs.
Regards,
Dave
Index: javax/swing/JComponent.java
===================================================================
RCS file: /sources/classpath/classpath/javax/swing/JComponent.java,v
retrieving revision 1.107
diff -u -r1.107 JComponent.java
--- javax/swing/JComponent.java 21 Mar 2006 04:21:36 -0000 1.107
+++ javax/swing/JComponent.java 23 Mar 2006 16:59:38 -0000
@@ -67,7 +67,6 @@
import java.awt.peer.LightweightPeer;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
import java.beans.PropertyVetoException;
import java.beans.VetoableChangeListener;
import java.io.Serializable;
@@ -161,14 +160,9 @@
protected ContainerListener accessibleContainerHandler;
protected FocusListener accessibleFocusHandler;
- /**
- * Manages the property change listeners;
- */
- private PropertyChangeSupport changeSupport;
-
protected AccessibleJComponent()
{
- changeSupport = new PropertyChangeSupport(this);
+ // nothing to do here
}
/**
@@ -178,7 +172,8 @@
*/
public void addPropertyChangeListener(PropertyChangeListener listener)
{
- changeSupport.addPropertyChangeListener(listener);
+ // TODO: figure out what is done differently here, if anything...
+ super.addPropertyChangeListener(listener);
}
/**
@@ -188,7 +183,8 @@
*/
public void removePropertyChangeListener(PropertyChangeListener listener)
{
- changeSupport.removePropertyChangeListener(listener);
+ // TODO: figure out what is done differently here, if anything...
+ super.removePropertyChangeListener(listener);
}
/**
Index: javax/swing/JSlider.java
===================================================================
RCS file: /sources/classpath/classpath/javax/swing/JSlider.java,v
retrieving revision 1.21
diff -u -r1.21 JSlider.java
--- javax/swing/JSlider.java 23 Mar 2006 10:42:30 -0000 1.21
+++ javax/swing/JSlider.java 23 Mar 2006 16:59:40 -0000
@@ -52,6 +52,7 @@
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleState;
import javax.accessibility.AccessibleStateSet;
import javax.accessibility.AccessibleValue;
import javax.swing.event.ChangeEvent;
@@ -118,10 +119,9 @@
private static final long serialVersionUID = -1441275936141218479L;
/**
- * DOCUMENT ME!
+ * Provides the accessibility features for the <code>JSlider</code>
+ * component.
*/
- // FIXME: This inner class is a complete stub and needs to be implemented
- // properly.
protected class AccessibleJSlider extends JComponent.AccessibleJComponent
implements AccessibleValue
{
@@ -136,82 +136,96 @@
}
/**
- * DOCUMENT ME!
+ * Returns a set containing the current state of the [EMAIL PROTECTED]
JSlider}
+ * component.
*
- * @return DOCUMENT ME!
+ * @return The accessible state set.
*/
public AccessibleStateSet getAccessibleStateSet()
- throws NotImplementedException
{
- return null;
+ AccessibleStateSet result = super.getAccessibleStateSet();
+ if (orientation == JSlider.HORIZONTAL)
+ result.add(AccessibleState.HORIZONTAL);
+ else if (orientation == JSlider.VERTICAL)
+ result.add(AccessibleState.VERTICAL);
+ return result;
}
/**
- * DOCUMENT ME!
+ * Returns the accessible role for the <code>JSlider</code> component.
*
- * @return DOCUMENT ME!
+ * @return [EMAIL PROTECTED] AccessibleRole#SLIDER}.
*/
public AccessibleRole getAccessibleRole()
throws NotImplementedException
{
- return null;
+ return AccessibleRole.SLIDER;
}
/**
- * DOCUMENT ME!
+ * Returns an object that provides access to the accessible value.
*
- * @return DOCUMENT ME!
+ * @return The accessible value.
*/
public AccessibleValue getAccessibleValue()
- throws NotImplementedException
{
- return null;
+ return this;
}
/**
- * DOCUMENT ME!
+ * Returns the current value of the [EMAIL PROTECTED] JSlider} component,
as an
+ * [EMAIL PROTECTED] Integer}.
*
- * @return DOCUMENT ME!
+ * @return The current value of the [EMAIL PROTECTED] JSlider} component.
*/
public Number getCurrentAccessibleValue()
- throws NotImplementedException
{
- return null;
+ return new Integer(getValue());
}
/**
- * setCurrentAccessibleValue
+ * Sets the current value of the [EMAIL PROTECTED] JSlider} component and
sends a
+ * [EMAIL PROTECTED] PropertyChangeEvent} (with the property name
+ * [EMAIL PROTECTED] AccessibleContext#ACCESSIBLE_VALUE_PROPERTY}) to all
registered
+ * listeners. If the supplied value is <code>null</code>, this method
+ * does nothing and returns <code>false</code>.
*
- * @param value0 TODO
+ * @param value the new slider value (<code>null</code> permitted).
*
- * @return boolean
+ * @return <code>true</code> if the slider value is updated, and
+ * <code>false</code> otherwise.
*/
- public boolean setCurrentAccessibleValue(Number value0)
- throws NotImplementedException
+ public boolean setCurrentAccessibleValue(Number value)
{
- return false;
+ if (value == null)
+ return false;
+ Number oldValue = getCurrentAccessibleValue();
+ setValue(value.intValue());
+ firePropertyChange(AccessibleContext.ACCESSIBLE_VALUE_PROPERTY,
oldValue,
+ new Integer(getValue()));
+ return true;
}
/**
- * getMinimumAccessibleValue
+ * Returns the minimum value of the [EMAIL PROTECTED] JSlider} component,
as an
+ * [EMAIL PROTECTED] Integer}.
*
- * @return Number
+ * @return The minimum value of the [EMAIL PROTECTED] JSlider} component.
*/
public Number getMinimumAccessibleValue()
- throws NotImplementedException
{
- return null;
+ return new Integer(getMinimum());
}
/**
- * getMaximumAccessibleValue
+ * Returns the maximum value of the [EMAIL PROTECTED] JSlider} component,
as an
+ * [EMAIL PROTECTED] Integer}.
*
- * @return Number
+ * @return The maximum value of the [EMAIL PROTECTED] JSlider} component.
*/
public Number getMaximumAccessibleValue()
- throws NotImplementedException
{
- return null;
+ return new Integer(getMaximum());
}
}
@@ -933,9 +947,10 @@
}
/**
- * DOCUMENT ME!
+ * Returns the object that provides accessibility features for this
+ * <code>JSlider</code> component.
*
- * @return DOCUMENT ME!
+ * @return The accessible context (an instance of [EMAIL PROTECTED]
AccessibleJSlider}).
*/
public AccessibleContext getAccessibleContext()
{