Changeset 4843 in josm
- Timestamp:
- 2012-01-22T09:48:05+01:00 (13 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 7 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 } -
trunk/src/org/openstreetmap/josm/gui/IconToggleButton.java
r4840 r4843 105 105 String hiddenFlagStr = Main.pref.get(getPreferenceKey(), null); 106 106 if (hiddenFlagStr == null) { 107 if (isExpert && ! Main.main.menu.expert.isSelected()) {107 if (isExpert && !ExpertToggleAction.isExpert()) { 108 108 hiddenFlag = true; 109 109 } … … 121 121 if (!b) listener.buttonShown(); else listener.buttonHidden(); 122 122 } 123 if ((b && isExpert && ! Main.main.menu.expert.isSelected()) ||124 (!b && isExpert && Main.main.menu.expert.isSelected())) {123 if ((b && isExpert && !ExpertToggleAction.isExpert()) || 124 (!b && isExpert && ExpertToggleAction.isExpert())) { 125 125 Main.pref.put(getPreferenceKey(), null); 126 126 } else { -
trunk/src/org/openstreetmap/josm/gui/MainMenu.java
r4840 r4843 2 2 package org.openstreetmap.josm.gui; 3 3 4 import java.awt.Toolkit;5 4 import static org.openstreetmap.josm.gui.help.HelpUtil.ht; 6 5 import static org.openstreetmap.josm.tools.I18n.marktr; 7 6 import static org.openstreetmap.josm.tools.I18n.tr; 8 7 8 import java.awt.Component; 9 import java.awt.Toolkit; 9 10 import java.awt.event.KeyEvent; 10 11 … … 159 160 public final HistoryInfoAction historyinfo = new HistoryInfoAction(); 160 161 public final HistoryInfoWebAction historyinfoweb = new HistoryInfoWebAction(); 161 public final ExpertToggleAction expert = new ExpertToggleAction();162 162 163 163 /* Tools menu */ … … 265 265 */ 266 266 public static JMenuItem add(JMenu menu, JosmAction action) { 267 return add(menu, action, false); 268 } 269 270 public static JMenuItem add(JMenu menu, JosmAction action, boolean isExpert) { 267 271 if (action.getShortcut().getAutomatic()) 268 272 return null; 269 273 JMenuItem menuitem = menu.add(action); 270 KeyStroke ks = action.getShortcut().getKeyStroke(); 271 if (ks != null) { 272 menuitem.setAccelerator(ks); 273 } 274 if (isExpert) { 275 ExpertToggleAction.addVisibilitySwitcher(menuitem); 276 } 277 KeyStroke ks = action.getShortcut().getKeyStroke(); 278 if (ks != null) { 279 menuitem.setAccelerator(ks); 280 } 274 281 return menuitem; 275 282 } … … 375 382 fileMenu.add(sessionMenu); 376 383 } 377 add(fileMenu, gpxExport); 384 add(fileMenu, gpxExport, true); 378 385 fileMenu.addSeparator(); 379 386 add(fileMenu, download); … … 386 393 add(fileMenu, upload); 387 394 add(fileMenu, uploadSelection); 388 fileMenu.addSeparator(); 389 add(fileMenu, closeChangesetAction); 395 Component sep = new JPopupMenu.Separator(); 396 fileMenu.add(sep); 397 ExpertToggleAction.addVisibilitySwitcher(sep); 398 add(fileMenu, closeChangesetAction, true); 390 399 fileMenu.addSeparator(); 391 400 add(fileMenu, exit); … … 395 404 editMenu.addSeparator(); 396 405 add(editMenu, copy); 397 add(editMenu, copyCoordinates); 406 add(editMenu, copyCoordinates, true); 398 407 add(editMenu, paste); 399 408 add(editMenu, pasteTags); 400 409 add(editMenu, duplicate); 401 410 add(editMenu, delete); 402 add(editMenu, purge); 411 add(editMenu, purge, true); 403 412 editMenu.addSeparator(); 404 413 add(editMenu,merge); … … 430 439 ViewportFollowToggleAction viewportFollowToggleAction = new ViewportFollowToggleAction(); 431 440 final JCheckBoxMenuItem vft = new JCheckBoxMenuItem(viewportFollowToggleAction); 441 ExpertToggleAction.addVisibilitySwitcher(vft); 432 442 viewMenu.add(vft); 433 443 vft.setAccelerator(viewportFollowToggleAction.getShortcut().getKeyStroke()); … … 450 460 viewMenu.addSeparator(); 451 461 // -- expert mode toggle action 452 final JCheckBoxMenuItem expertItem = new JCheckBoxMenuItem( expert);462 final JCheckBoxMenuItem expertItem = new JCheckBoxMenuItem(ExpertToggleAction.getInstance()); 453 463 viewMenu.add(expertItem); 454 expert.addButtonModel(expertItem.getModel());464 ExpertToggleAction.getInstance().addButtonModel(expertItem.getModel()); 455 465 456 466 add(presetsMenu, presetSearchAction); … … 467 477 add(toolsMenu, distribute); 468 478 add(toolsMenu, ortho); 469 add(toolsMenu, mirror); 479 add(toolsMenu, mirror, true); 470 480 toolsMenu.addSeparator(); 471 add(toolsMenu, followLine); 472 add(toolsMenu, addnode); 473 add(toolsMenu, movenode); 481 add(toolsMenu, followLine, true); 482 add(toolsMenu, addnode, true); 483 add(toolsMenu, movenode, true); 474 484 add(toolsMenu, createCircle); 475 485 toolsMenu.addSeparator(); -
trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java
r4840 r4843 18 18 import org.openstreetmap.josm.Main; 19 19 import org.openstreetmap.josm.actions.ExpertToggleAction; 20 import org.openstreetmap.josm.actions.ExpertToggleAction.ExpertModeChangeListener;21 20 import org.openstreetmap.josm.tools.GBC; 22 21 23 public class DrawingPreference implements PreferenceSetting , ExpertModeChangeListener{22 public class DrawingPreference implements PreferenceSetting { 24 23 25 24 public static class Factory implements PreferenceSettingFactory { … … 39 38 40 39 // Options that affect performance 41 private JLabel performanceLabel = new JLabel(tr("Options that affect drawing performance"));42 40 private JCheckBox useHighlighting = new JCheckBox(tr("Highlight target ways and nodes")); 43 41 private JCheckBox drawHelperLine = new JCheckBox(tr("Draw rubber-band helper line")); … … 119 117 outlineOnly.setToolTipText(tr("This option suppresses the filling of areas, overriding anything specified in the selected style.")); 120 118 119 JLabel performanceLabel = new JLabel(tr("Options that affect drawing performance")); 121 120 panel.add(performanceLabel, GBC.eop().insets(5,10,0,0)); 122 121 panel.add(useAntialiasing, GBC.eop().insets(20,5,0,0)); … … 124 123 panel.add(outlineOnly, GBC.eol().insets(20,0,0,5)); 125 124 125 ExpertToggleAction.addVisibilitySwitcher(performanceLabel); 126 ExpertToggleAction.addVisibilitySwitcher(useAntialiasing); 127 ExpertToggleAction.addVisibilitySwitcher(useHighlighting); 128 ExpertToggleAction.addVisibilitySwitcher(outlineOnly); 129 126 130 panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH)); 127 131 scrollpane = new JScrollPane(panel); 128 132 scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 )); 129 133 gui.displaycontent.addTab(tr("OSM Data"), scrollpane); 130 131 ExpertToggleAction.addExpertModeChangeListener(this, true);132 }133 134 @Override135 public void expertChanged(boolean isExpert) {136 performanceLabel.setVisible(isExpert);137 useAntialiasing.setVisible(isExpert);138 useHighlighting.setVisible(isExpert);139 outlineOnly.setVisible(isExpert);140 134 } 141 135 -
trunk/src/org/openstreetmap/josm/gui/preferences/LafPreference.java
r4840 r4843 22 22 import org.openstreetmap.josm.Main; 23 23 import org.openstreetmap.josm.actions.ExpertToggleAction; 24 import org.openstreetmap.josm.actions.ExpertToggleAction.ExpertModeChangeListener;25 24 import org.openstreetmap.josm.tools.GBC; 26 25 27 public class LafPreference implements PreferenceSetting , ExpertModeChangeListener{26 public class LafPreference implements PreferenceSetting { 28 27 29 28 public static class Factory implements PreferenceSettingFactory { … … 90 89 showLocalizedName.setToolTipText(tr("Show localized name in selection lists, if available")); 91 90 showLocalizedName.setSelected(Main.pref.getBoolean("osm-primitives.localize-name", true)); 92 91 ExpertToggleAction.addVisibilitySwitcher(showLocalizedName); 93 92 94 93 modeless.setToolTipText(tr("Do not require to switch modes (potlatch style workflow)")); 95 94 modeless.setSelected(Main.pref.getBoolean("modeless", false)); 95 ExpertToggleAction.addVisibilitySwitcher(modeless); 96 96 97 97 panel.add(showID, GBC.eop().insets(20, 0, 0, 0)); … … 112 112 scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 )); 113 113 gui.displaycontent.addTab(tr("Look and Feel"), scrollpane); 114 115 ExpertToggleAction.addExpertModeChangeListener(this, true);116 }117 118 @Override119 public void expertChanged(boolean isExpert) {120 showLocalizedName.setVisible(isExpert);121 modeless.setVisible(isExpert);122 114 } 123 115 -
trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
r4840 r4843 28 28 29 29 import org.openstreetmap.josm.Main; 30 import org.openstreetmap.josm.actions.ExpertToggleAction; 30 31 import org.openstreetmap.josm.gui.SideButton; 31 32 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction; … … 45 46 46 47 JCheckBox expert = new JCheckBox(tr("Expert mode")); 47 expert.setSelected( Main.main.menu.expert.isSelected());48 expert.setSelected(ExpertToggleAction.isExpert()); 48 49 expert.addActionListener(new ActionListener() { 49 50 public void actionPerformed(ActionEvent e) { 50 Main.main.menu.expert.actionPerformed(null);51 ExpertToggleAction.getInstance().actionPerformed(null); 51 52 } 52 53 }); -
trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
r4840 r4843 278 278 279 279 private void addGUITabs(boolean clear) { 280 boolean expert = Main.main.menu.expert.isSelected();280 boolean expert = ExpertToggleAction.isExpert(); 281 281 Component sel = getSelectedComponent(); 282 282 if (clear) {
Note:
See TracChangeset
for help on using the changeset viewer.