<Swing Dev> Please review fix for 7179482 : Component.accessibleContext and JComponent.accessibleContext refactoring

Pete Brunet peter.brunet at oracle.com
Wed Nov 14 20:01:12 UTC 2012


This bug includes a coordination of fixes for both awt (2 files) and
swing (1 file).  Which repo should I use?  jdk8/awt or jdk8/swing?  I'm
guessing the latter.  (AccessibleJComponent inherits from
AccessibleAWTContainer).

Pete

On 11/9/12 3:27 PM, Pete Brunet wrote:
> Please review the following fix planned for JDK8.  Part of the fix will
> go into 7u12 under 7177111.
>
> Problem:
> In the process of evaluating 7177111 the following problems were noticed:
> - Both Component and JComponent have field "accessibleContext".  In
> Component it is package-private and accessed by other classes from
> java.awt, but in JComponent it is protected and therefore this field
> hides the same superclass field from any subclass.  These two fields
> should be refactored to a single protected field in Component.
> - Container.AccessibleAWTContainer has an addPropertyChangeListener but
> not a removePropertyChangeListener.  This method is needed so stale
> listeners can be removed when AT are no longer attached to a Java process.
> - The JComponent.AccessibleJComponent.accessibleFocusHandler field
> functionally duplicates its superclass field,
> Component.AccessibleAWTComponent.accessibleAWTFocusHandler.  When this
> field is used properly there are no logical issues.  However, the
> existence of this field could cause confusion for a developer trying to
> understand the code.  The superclass field is sufficient.
>
> Solution:
> - Change java.awt.Component.accessibleContext from package-private to
> protected.  This will allow use by subclasses and the removal of the
> duplicate field in javax.swing.JComponent.
> - Add
> java.awt.Container.AccessibleAWTContainer.removePropertyChangeListener
> so stale listeners can be removed when an Assistive Technology is no
> longer attached to a Java process.
> - Remove the protected field javax.swing.JComponent.accessibleContext. 
> Instead the protected field java.awt.Component.accessibleContext, will
> be used.  With the change subclasses would now use the protected field
> in the Component superclass.
> - Remove public method javax.swing.JComponent.getAccessibleContext. 
> Instead it superclass public method
> java.awt.Component.getAccessibleContext method would be used.
> - javax.swing.JComponent.AccessibleJComponent.accessibleFocusHandler
> field will be deprecated.  Developers should use the
> java.awt.Component.AccessibleAWTComponent.accessibleAWTFocusHandler
> field instead.
>
> Webrev:  http://cr.openjdk.java.net/~ptbrunet/7179482/webrev.00/
> Bug:  http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7179482
> CCC:  http://ccc.us.oracle.com/7179482




More information about the swing-dev mailing list