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()
   {

Reply via email to