src/share/classes/sun/awt/SunDisplayChanger.java
Print this page
@@ -26,13 +26,14 @@
package sun.awt;
import java.awt.IllegalComponentStateException;
import java.util.Collections;
import java.util.Iterator;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import java.util.HashMap;
import java.util.WeakHashMap;
import sun.util.logging.PlatformLogger;
/**
@@ -52,16 +53,18 @@
*
* displayChanged() is also called on Windows when they are moved from one
* screen to another on a system equipped with multiple displays.
*/
public class SunDisplayChanger {
+
private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.multiscreen.SunDisplayChanger");
- // Create a new synchronizedMap with initial capacity of one listener.
+ // Create a new synchronized map with initial capacity of one listener.
// It is asserted that the most common case is to have one GraphicsDevice
// and one top-level Window.
- private Map listeners = Collections.synchronizedMap(new WeakHashMap(1));
+ private Map<DisplayChangedListener, Void> listeners =
+ Collections.synchronizedMap(new WeakHashMap<DisplayChangedListener, Void>(1));
public SunDisplayChanger() {}
/*
* Add a DisplayChangeListener to this SunDisplayChanger so that it is
@@ -111,22 +114,19 @@
// DisplayChangedListener remove itself from its list.
// Because all display change handling is done on the event thread,
// synchronization provides no protection against modifying the listener
// list while in the middle of iterating over it. -bchristi 7/10/2001
- HashMap listClone;
- Set cloneSet;
+ Set<DisplayChangedListener> cloneSet;
synchronized(listeners) {
- listClone = new HashMap(listeners);
+ cloneSet = new HashSet<DisplayChangedListener>(listeners.keySet());
}
- cloneSet = listClone.keySet();
- Iterator itr = cloneSet.iterator();
+ Iterator<DisplayChangedListener> itr = cloneSet.iterator();
while (itr.hasNext()) {
- DisplayChangedListener current =
- (DisplayChangedListener) itr.next();
+ DisplayChangedListener current = itr.next();
try {
if (log.isLoggable(PlatformLogger.FINEST)) {
log.finest("displayChanged for listener: " + current);
}
current.displayChanged();
@@ -158,21 +158,18 @@
// DisplayChangedListener remove itself from its list.
// Because all display change handling is done on the event thread,
// synchronization provides no protection against modifying the listener
// list while in the middle of iterating over it. -bchristi 7/10/2001
- HashMap listClone;
- Set cloneSet;
+ Set<DisplayChangedListener> cloneSet;
synchronized (listeners) {
- listClone = new HashMap(listeners);
+ cloneSet = new HashSet<DisplayChangedListener>(listeners.keySet());
}
- cloneSet = listClone.keySet();
- Iterator itr = cloneSet.iterator();
+ Iterator<DisplayChangedListener> itr = cloneSet.iterator();
while (itr.hasNext()) {
- DisplayChangedListener current =
- (DisplayChangedListener) itr.next();
+ DisplayChangedListener current = itr.next();
try {
if (log.isLoggable(PlatformLogger.FINEST)) {
log.finest("paletteChanged for listener: " + current);
}
current.paletteChanged();