Changeset 4843 in josm for trunk/src/org/openstreetmap/josm/actions/ExpertToggleAction.java
- Timestamp:
- 2012-01-22T09:48:05+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/ExpertToggleAction.java
r4841 r4843 4 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 5 6 import java.awt.Component; 6 7 import java.awt.event.ActionEvent; 7 8 import java.lang.ref.WeakReference; … … 24 25 25 26 private static final List<WeakReference<ExpertModeChangeListener>> listeners = new ArrayList<WeakReference<ExpertModeChangeListener>>(); 27 private static final List<WeakReference<Component>> visibilityToggleListeners = new ArrayList<WeakReference<Component>>(); 28 29 private static ExpertToggleAction INSTANCE = new ExpertToggleAction(); 26 30 27 31 private synchronized static void fireExpertModeChanged(boolean isExpert) { 28 Iterator<WeakReference<ExpertModeChangeListener>> it = listeners.iterator(); 29 while (it.hasNext()) { 30 WeakReference<ExpertModeChangeListener> wr = it.next(); 31 ExpertModeChangeListener listener = wr.get(); 32 if (listener == null) { 33 it.remove(); 34 continue; 32 { 33 Iterator<WeakReference<ExpertModeChangeListener>> it = listeners.iterator(); 34 while (it.hasNext()) { 35 WeakReference<ExpertModeChangeListener> wr = it.next(); 36 ExpertModeChangeListener listener = wr.get(); 37 if (listener == null) { 38 it.remove(); 39 continue; 40 } 41 listener.expertChanged(isExpert); 35 42 } 36 listener.expertChanged(isExpert); 43 } 44 { 45 Iterator<WeakReference<Component>> it = visibilityToggleListeners.iterator(); 46 while (it.hasNext()) { 47 WeakReference<Component> wr = it.next(); 48 Component c = wr.get(); 49 if (c == null) { 50 it.remove(); 51 continue; 52 } 53 c.setVisible(isExpert); 54 } 37 55 } 38 56 } … … 55 73 listeners.add(new WeakReference<ExpertModeChangeListener>(listener)); 56 74 if (fireWhenAdding) { 57 listener.expertChanged( Main.main.menu.expert.isSelected());75 listener.expertChanged(isExpert()); 58 76 } 59 77 } … … 72 90 // collected in the meantime 73 91 if (wr.get() == null || wr.get() == listener) { 92 it.remove(); 93 } 94 } 95 } 96 97 public synchronized static void addVisibilitySwitcher(Component c) { 98 if (c == null) return; 99 for (WeakReference<Component> wr : visibilityToggleListeners) { 100 // already registered ? => abort 101 if (wr.get() == c) return; 102 } 103 visibilityToggleListeners.add(new WeakReference<Component>(c)); 104 c.setVisible(isExpert()); 105 } 106 107 public synchronized static void removeVisibilitySwitcher(Component c) { 108 if (c == null) return; 109 Iterator<WeakReference<Component>> it = visibilityToggleListeners.iterator(); 110 while (it.hasNext()) { 111 WeakReference<Component> wr = it.next(); 112 // remove the listener - and any other listener which god garbage 113 // collected in the meantime 114 if (wr.get() == null || wr.get() == c) { 74 115 it.remove(); 75 116 } … … 126 167 return selected; 127 168 } 169 170 public static ExpertToggleAction getInstance() { 171 return INSTANCE; 172 } 173 174 public static boolean isExpert() { 175 return INSTANCE.isSelected(); 176 } 128 177 }
Note:
See TracChangeset
for help on using the changeset viewer.