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

Anthony Petrov anthony.petrov at oracle.com
Fri Nov 16 12:34:31 UTC 2012


The fix looks fine to me.

--
best regards,
Anthony

On 11/15/2012 2:26 AM, Pete Brunet wrote:
>   Some more code has been added.  A counter has been added to each of 
> the three files.  It is incremented when addPropertyChangeListener is 
> called and decremented when removePropertyChangeListener is called.  
> Only when the count is zero, i.e. the first add and last remove, do 
> specific handlers (see below) get added/removed.
> 
> Component.java: This code has Component and Focus handlers.
> 
> Container.java: This code has a Container handler.
> 
> JComponent.java:  This code has Container and Focus handlers.
> 
> See http://cr.openjdk.java.net/~ptbrunet/7179482/webrev.01/
> 
> Pete
> 
> -------- Original Message --------
> Subject: 	<Swing Dev> Please review fix for 7179482 : 
> Component.accessibleContext and JComponent.accessibleContext refactoring
> Date: 	Fri, 09 Nov 2012 15:27:33 -0600
> From: 	Pete Brunet <peter.brunet at oracle.com>
> Reply-To: 	peter.brunet at oracle.com
> To: 	awt-dev <awt-dev at openjdk.java.net>, swing-dev at openjdk.java.net
> 
> 
> 
> 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