23 * questions.
24 */
25 package java.awt;
26
27 import java.awt.dnd.DropTarget;
28
29 import java.awt.event.*;
30
31 import java.awt.peer.ContainerPeer;
32 import java.awt.peer.ComponentPeer;
33 import java.awt.peer.LightweightPeer;
34
35 import java.beans.PropertyChangeListener;
36
37 import java.io.IOException;
38 import java.io.ObjectInputStream;
39 import java.io.ObjectOutputStream;
40 import java.io.ObjectStreamField;
41 import java.io.PrintStream;
42 import java.io.PrintWriter;
43
44 import java.lang.ref.WeakReference;
45 import java.security.AccessController;
46
47 import java.util.ArrayList;
48 import java.util.EventListener;
49 import java.util.HashSet;
50 import java.util.Set;
51
52 import javax.accessibility.*;
53
54 import sun.util.logging.PlatformLogger;
55
56 import sun.awt.AppContext;
57 import sun.awt.AWTAccessor;
58 import sun.awt.AWTAccessor.MouseEventAccessor;
59 import sun.awt.PeerEvent;
60 import sun.awt.SunToolkit;
61
62 import sun.awt.dnd.SunDropTargetEvent;
3837 }
3838
3839 /**
3840 * Number of PropertyChangeListener objects registered. It's used
3841 * to add/remove ContainerListener to track target Container's state.
3842 */
3843 private transient volatile int propertyListenersCount = 0;
3844
3845 /**
3846 * The handler to fire {@code PropertyChange}
3847 * when children are added or removed
3848 */
3849 protected ContainerListener accessibleContainerHandler = null;
3850
3851 /**
3852 * Fire {@code PropertyChange} listener, if one is registered,
3853 * when children are added or removed.
3854 * @since 1.3
3855 */
3856 protected class AccessibleContainerHandler
3857 implements ContainerListener {
3858 public void componentAdded(ContainerEvent e) {
3859 Component c = e.getChild();
3860 if (c != null && c instanceof Accessible) {
3861 AccessibleAWTContainer.this.firePropertyChange(
3862 AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
3863 null, ((Accessible) c).getAccessibleContext());
3864 }
3865 }
3866 public void componentRemoved(ContainerEvent e) {
3867 Component c = e.getChild();
3868 if (c != null && c instanceof Accessible) {
3869 AccessibleAWTContainer.this.firePropertyChange(
3870 AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
3871 ((Accessible) c).getAccessibleContext(), null);
3872 }
3873 }
3874 }
3875
3876 /**
3877 * Adds a PropertyChangeListener to the listener list.
|
23 * questions.
24 */
25 package java.awt;
26
27 import java.awt.dnd.DropTarget;
28
29 import java.awt.event.*;
30
31 import java.awt.peer.ContainerPeer;
32 import java.awt.peer.ComponentPeer;
33 import java.awt.peer.LightweightPeer;
34
35 import java.beans.PropertyChangeListener;
36
37 import java.io.IOException;
38 import java.io.ObjectInputStream;
39 import java.io.ObjectOutputStream;
40 import java.io.ObjectStreamField;
41 import java.io.PrintStream;
42 import java.io.PrintWriter;
43 import java.io.Serializable;
44
45 import java.lang.ref.WeakReference;
46 import java.security.AccessController;
47
48 import java.util.ArrayList;
49 import java.util.EventListener;
50 import java.util.HashSet;
51 import java.util.Set;
52
53 import javax.accessibility.*;
54
55 import sun.util.logging.PlatformLogger;
56
57 import sun.awt.AppContext;
58 import sun.awt.AWTAccessor;
59 import sun.awt.AWTAccessor.MouseEventAccessor;
60 import sun.awt.PeerEvent;
61 import sun.awt.SunToolkit;
62
63 import sun.awt.dnd.SunDropTargetEvent;
3838 }
3839
3840 /**
3841 * Number of PropertyChangeListener objects registered. It's used
3842 * to add/remove ContainerListener to track target Container's state.
3843 */
3844 private transient volatile int propertyListenersCount = 0;
3845
3846 /**
3847 * The handler to fire {@code PropertyChange}
3848 * when children are added or removed
3849 */
3850 protected ContainerListener accessibleContainerHandler = null;
3851
3852 /**
3853 * Fire {@code PropertyChange} listener, if one is registered,
3854 * when children are added or removed.
3855 * @since 1.3
3856 */
3857 protected class AccessibleContainerHandler
3858 implements ContainerListener, Serializable {
3859 private static final long serialVersionUID = -480855353991814677L;
3860
3861 public void componentAdded(ContainerEvent e) {
3862 Component c = e.getChild();
3863 if (c != null && c instanceof Accessible) {
3864 AccessibleAWTContainer.this.firePropertyChange(
3865 AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
3866 null, ((Accessible) c).getAccessibleContext());
3867 }
3868 }
3869 public void componentRemoved(ContainerEvent e) {
3870 Component c = e.getChild();
3871 if (c != null && c instanceof Accessible) {
3872 AccessibleAWTContainer.this.firePropertyChange(
3873 AccessibleContext.ACCESSIBLE_CHILD_PROPERTY,
3874 ((Accessible) c).getAccessibleContext(), null);
3875 }
3876 }
3877 }
3878
3879 /**
3880 * Adds a PropertyChangeListener to the listener list.
|