Changeset 4840 in josm
- Timestamp:
- 2012-01-21T23:04:50+01:00 (13 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 1 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/HideableButton.java
r4609 r4840 9 9 */ 10 10 interface HideableButton { 11 publicvoid applyButtonHiddenPreferences();12 publicvoid setButtonHidden(boolean b);13 publicvoid showButton();14 publicvoid hideButton();15 publicString getActionName();16 publicIcon getIcon();17 publicboolean isButtonVisible();18 publicvoid setShowHideButtonListener(ShowHideButtonListener l);11 void applyButtonHiddenPreferences(); 12 void setButtonHidden(boolean b); 13 void showButton(); 14 void hideButton(); 15 String getActionName(); 16 Icon getIcon(); 17 boolean isButtonVisible(); 18 void setShowHideButtonListener(ShowHideButtonListener l); 19 19 } -
trunk/src/org/openstreetmap/josm/gui/IconToggleButton.java
r4835 r4840 13 13 14 14 import org.openstreetmap.josm.Main; 15 import org.openstreetmap.josm.actions.ExpertToggleAction; 16 import org.openstreetmap.josm.actions.ExpertToggleAction.ExpertModeChangeListener; 15 17 import org.openstreetmap.josm.tools.Destroyable; 16 18 … … 21 23 * @author imi, akks 22 24 */ 23 public class IconToggleButton extends JToggleButton implements HideableButton, PropertyChangeListener, Destroyable { 25 public class IconToggleButton extends JToggleButton implements HideableButton, PropertyChangeListener, Destroyable, ExpertModeChangeListener { 24 26 25 27 public boolean groupbutton; 26 28 private ShowHideButtonListener listener; 27 private boolean hideIfDisabled =false;28 private boolean hiddenByDefault;29 private boolean hideIfDisabled = false; 30 private boolean isExpert; 29 31 30 32 /** … … 38 40 * Construct the toggle button with the given action. 39 41 */ 40 public IconToggleButton(Action action, boolean hiddenByDefault) {42 public IconToggleButton(Action action, boolean isExpert) { 41 43 super(action); 42 this. hiddenByDefault = hiddenByDefault;44 this.isExpert = isExpert; 43 45 setText(null); 44 46 … … 55 57 } 56 58 }); 59 60 ExpertToggleAction.addExpertModeChangeListener(this); 57 61 } 58 62 … … 75 79 } 76 80 } 77 81 78 82 String getPreferenceKey() { 79 83 String s = (String) getSafeActionValue("toolbar"); 80 if (s==null) { 81 if (getAction()!=null) s=getAction().getClass().getName(); 84 if (s == null) { 85 if (getAction()!=null) { 86 s = getAction().getClass().getName(); 87 } 82 88 } 83 89 return "sidetoolbar.hidden."+s; 84 90 85 91 } 86 92 93 @Override 94 public void expertChanged(boolean isExpert) { 95 applyButtonHiddenPreferences(); 96 } 97 87 98 @Override 88 99 public void applyButtonHiddenPreferences() { 89 100 boolean alwaysHideDisabled = Main.pref.getBoolean("sidetoolbar.hideDisabledButtons", false); 90 boolean hiddenFlag = Main.pref.getBoolean(getPreferenceKey(), hiddenByDefault); 91 if (!isEnabled() && (hideIfDisabled || alwaysHideDisabled)) 92 setVisible(false); // hide because of disabled button 93 else 94 setVisible( !hiddenFlag ); // show or hide, do what preferences say 101 if (!isEnabled() && (hideIfDisabled || alwaysHideDisabled)) { 102 setVisible(false); // hide because of disabled button 103 } else { 104 boolean hiddenFlag = false; 105 String hiddenFlagStr = Main.pref.get(getPreferenceKey(), null); 106 if (hiddenFlagStr == null) { 107 if (isExpert && !Main.main.menu.expert.isSelected()) { 108 hiddenFlag = true; 109 } 110 } else { 111 hiddenFlag = Boolean.parseBoolean(hiddenFlagStr); 112 } 113 setVisible( !hiddenFlag ); // show or hide, do what preferences say 114 } 95 115 } 96 116 … … 101 121 if (!b) listener.buttonShown(); else listener.buttonHidden(); 102 122 } 103 Main.pref.put(getPreferenceKey(), b); 123 if ((b && isExpert && !Main.main.menu.expert.isSelected()) || 124 (!b && isExpert && Main.main.menu.expert.isSelected())) { 125 Main.pref.put(getPreferenceKey(), null); 126 } else { 127 Main.pref.put(getPreferenceKey(), b); 128 } 104 129 } 105 106 /* 130 131 /* 107 132 * This fuction should be called for plugins that want to enable auto-hiding 108 133 * custom buttons when they are disabled (because of incorrect layer, for example) 109 134 */ 110 135 public void setAutoHideDisabledButton(boolean b) { 111 hideIfDisabled=b; 112 if (b && !isEnabled()) setVisible(false); 136 hideIfDisabled = b; 137 if (b && !isEnabled()) { 138 setVisible(false); 139 } 113 140 } 114 141 115 142 @Override 116 143 public void showButton() { 117 144 setButtonHidden(false); 118 145 } 119 146 120 147 @Override 121 148 public void hideButton() { -
trunk/src/org/openstreetmap/josm/gui/MainMenu.java
r4733 r4840 39 39 import org.openstreetmap.josm.actions.DuplicateAction; 40 40 import org.openstreetmap.josm.actions.ExitAction; 41 import org.openstreetmap.josm.actions.ExpertToggleAction; 41 42 import org.openstreetmap.josm.actions.FollowLineAction; 42 43 import org.openstreetmap.josm.actions.FullscreenToggleAction; … … 158 159 public final HistoryInfoAction historyinfo = new HistoryInfoAction(); 159 160 public final HistoryInfoWebAction historyinfoweb = new HistoryInfoWebAction(); 161 public final ExpertToggleAction expert = new ExpertToggleAction(); 160 162 161 163 /* Tools menu */ … … 445 447 add(viewMenu, infoweb); 446 448 add(viewMenu, historyinfo); 447 add(viewMenu, historyinfoweb); 449 add(viewMenu, historyinfoweb); 450 viewMenu.addSeparator(); 451 // -- expert mode toggle action 452 final JCheckBoxMenuItem expertItem = new JCheckBoxMenuItem(expert); 453 viewMenu.add(expertItem); 454 expert.addButtonModel(expertItem.getModel()); 448 455 449 456 add(presetsMenu, presetSearchAction); -
trunk/src/org/openstreetmap/josm/gui/MapFrame.java
r4835 r4840 137 137 new FileDrop(mapView); 138 138 139 // show menu entry140 Main.main.menu.viewMenu.setVisible(true);141 142 139 // toolbar 143 140 toolBarActions.setFloatable(false); … … 145 142 addMapMode(new IconToggleButton(new DrawAction(this))); 146 143 addMapMode(new IconToggleButton(new ZoomAction(this))); 147 addMapMode(new IconToggleButton(new DeleteAction(this), !Main.pref.getBoolean("expert", false)));148 addMapMode(new IconToggleButton(new ExtrudeAction(this), !Main.pref.getBoolean("expert", false)));149 addMapMode(new IconToggleButton(new ParallelWayAction(this), !Main.pref.getBoolean("expert", false)));144 addMapMode(new IconToggleButton(new DeleteAction(this), true)); 145 addMapMode(new IconToggleButton(new ExtrudeAction(this), true)); 146 addMapMode(new IconToggleButton(new ParallelWayAction(this), true)); 150 147 151 148 toolGroup.setSelected(((AbstractButton)toolBarActions.getComponent(0)).getModel(), true); … … 241 238 } 242 239 } 243 244 // remove menu entries245 Main.main.menu.viewMenu.setVisible(false);246 240 247 241 // MapFrame gets destroyed when the last layer is removed, but the status line background … … 410 404 } 411 405 412 406 class ListAllButtonsAction extends AbstractAction { 413 407 414 408 private JButton button; … … 439 433 @Override 440 434 public void actionPerformed(ActionEvent e) { 441 if ((Boolean) getValue(SELECTED_KEY)) t.showButton(); else t.hideButton(); 435 if ((Boolean) getValue(SELECTED_KEY)) { 436 t.showButton(); 437 } else { 438 t.hideButton(); 439 } 442 440 validateToolBarsVisibility(); 443 441 } -
trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java
r4767 r4840 17 17 18 18 import org.openstreetmap.josm.Main; 19 import org.openstreetmap.josm.actions.ExpertToggleAction; 20 import org.openstreetmap.josm.actions.ExpertToggleAction.ExpertModeChangeListener; 19 21 import org.openstreetmap.josm.tools.GBC; 20 22 21 public class DrawingPreference implements PreferenceSetting { 23 public class DrawingPreference implements PreferenceSetting, ExpertModeChangeListener { 22 24 23 25 public static class Factory implements PreferenceSettingFactory { … … 37 39 38 40 // Options that affect performance 41 private JLabel performanceLabel = new JLabel(tr("Options that affect drawing performance")); 39 42 private JCheckBox useHighlighting = new JCheckBox(tr("Highlight target ways and nodes")); 40 43 private JCheckBox drawHelperLine = new JCheckBox(tr("Draw rubber-band helper line")); 41 44 private JCheckBox useAntialiasing = new JCheckBox(tr("Smooth map graphics (antialiasing)")); 42 45 private JCheckBox outlineOnly = new JCheckBox(tr("Draw only outlines of areas")); 43 46 44 47 public void addGui(PreferenceTabbedPane gui) { 45 48 gui.display.setPreferredSize(new Dimension(400,600)); … … 116 119 outlineOnly.setToolTipText(tr("This option suppresses the filling of areas, overriding anything specified in the selected style.")); 117 120 118 if (Main.pref.getBoolean("expert", false)) { 119 panel.add(new JLabel(tr("Options that affect drawing performance")),GBC.eop().insets(5,10,0,0)); 120 panel.add(useAntialiasing, GBC.eop().insets(20,5,0,0)); 121 panel.add(useHighlighting, GBC.eop().insets(20,0,0,0)); 122 panel.add(outlineOnly, GBC.eol().insets(20,0,0,5)); 123 } 124 121 panel.add(performanceLabel, GBC.eop().insets(5,10,0,0)); 122 panel.add(useAntialiasing, GBC.eop().insets(20,5,0,0)); 123 panel.add(useHighlighting, GBC.eop().insets(20,0,0,0)); 124 panel.add(outlineOnly, GBC.eol().insets(20,0,0,5)); 125 125 126 panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH)); 126 127 scrollpane = new JScrollPane(panel); 127 128 scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 )); 128 129 gui.displaycontent.addTab(tr("OSM Data"), scrollpane); 130 131 ExpertToggleAction.addExpertModeChangeListener(this, true); 132 } 133 134 @Override 135 public void expertChanged(boolean isExpert) { 136 performanceLabel.setVisible(isExpert); 137 useAntialiasing.setVisible(isExpert); 138 useHighlighting.setVisible(isExpert); 139 outlineOnly.setVisible(isExpert); 129 140 } 130 141 -
trunk/src/org/openstreetmap/josm/gui/preferences/LafPreference.java
r4828 r4840 21 21 22 22 import org.openstreetmap.josm.Main; 23 import org.openstreetmap.josm.actions.ExpertToggleAction; 24 import org.openstreetmap.josm.actions.ExpertToggleAction.ExpertModeChangeListener; 23 25 import org.openstreetmap.josm.tools.GBC; 24 26 25 public class LafPreference implements PreferenceSetting { 27 public class LafPreference implements PreferenceSetting, ExpertModeChangeListener { 26 28 27 29 public static class Factory implements PreferenceSettingFactory { … … 40 42 private JCheckBox showLocalizedName = new JCheckBox(tr("Show localized name in selection lists")); 41 43 private JCheckBox modeless = new JCheckBox(tr("Modeless working (Potlatch style)")); 42 private JCheckBox expert = new JCheckBox(tr("Expert mode"));43 44 private JCheckBox dynamicButtons = new JCheckBox(tr("Dynamic buttons in side menus")); 44 45 … … 95 96 96 97 panel.add(showID, GBC.eop().insets(20, 0, 0, 0)); 97 if (Main.pref.getBoolean("expert", false)) { 98 panel.add(showLocalizedName, GBC.eop().insets(20, 0, 0, 0)); 99 panel.add(modeless, GBC.eop().insets(20, 0, 0, 0)); 100 } 98 panel.add(showLocalizedName, GBC.eop().insets(20, 0, 0, 0)); 99 panel.add(modeless, GBC.eop().insets(20, 0, 0, 0)); 101 100 102 101 dynamicButtons.setToolTipText(tr("Display buttons in right side menus only when mouse is inside the element")); 103 102 dynamicButtons.setSelected(Main.pref.getBoolean("dialog.dynamic.buttons", true)); 104 103 panel.add(dynamicButtons, GBC.eop().insets(20, 0, 0, 0)); 105 106 expert.setToolTipText(tr("The expert mode shows a lot of additional settings hidden from normal user"));107 expert.setSelected(Main.pref.getBoolean("expert", false));108 panel.add(expert, GBC.eop().insets(20, 0, 0, 0));109 104 110 105 panel.add(Box.createVerticalGlue(), GBC.eol().insets(0, 20, 0, 0)); … … 117 112 scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 )); 118 113 gui.displaycontent.addTab(tr("Look and Feel"), scrollpane); 114 115 ExpertToggleAction.addExpertModeChangeListener(this, true); 116 } 117 118 @Override 119 public void expertChanged(boolean isExpert) { 120 showLocalizedName.setVisible(isExpert); 121 modeless.setVisible(isExpert); 119 122 } 120 123 … … 125 128 Main.pref.put("osm-primitives.localize-name", showLocalizedName.isSelected()); 126 129 Main.pref.put("modeless", modeless.isSelected()); 127 if(Main.pref.put("expert", expert.isSelected()))128 mod = true;129 130 Main.pref.put("dialog.dynamic.buttons", dynamicButtons.isSelected()); 130 if(Main.pref.put("laf", ((LookAndFeelInfo)lafCombo.getSelectedItem()).getClassName())) 131 mod = true; 131 mod |= Main.pref.put("laf", ((LookAndFeelInfo)lafCombo.getSelectedItem()).getClassName()); 132 132 return mod; 133 133 } -
trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
r4586 r4840 9 9 import java.awt.Dimension; 10 10 import java.awt.FlowLayout; 11 import java.awt.GridBagLayout; 11 12 import java.awt.Insets; 12 13 import java.awt.Toolkit; 13 14 import java.awt.event.ActionEvent; 15 import java.awt.event.ActionListener; 14 16 import java.awt.event.KeyEvent; 15 17 import java.awt.event.WindowAdapter; … … 18 20 import javax.swing.AbstractAction; 19 21 import javax.swing.BorderFactory; 22 import javax.swing.JCheckBox; 20 23 import javax.swing.JComponent; 21 24 import javax.swing.JDialog; … … 24 27 import javax.swing.KeyStroke; 25 28 29 import org.openstreetmap.josm.Main; 26 30 import org.openstreetmap.josm.gui.SideButton; 27 31 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction; 28 32 import org.openstreetmap.josm.gui.help.HelpUtil; 29 33 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.ValidationListener; 34 import org.openstreetmap.josm.tools.GBC; 30 35 import org.openstreetmap.josm.tools.ImageProvider; 31 36 import org.openstreetmap.josm.tools.WindowGeometry; … … 37 42 38 43 protected JPanel buildActionPanel() { 39 JPanel pnl = new JPanel(new FlowLayout(FlowLayout.CENTER)); 40 pnl.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); 41 pnl.add(new SideButton(new OKAction())); 42 pnl.add(new SideButton(new CancelAction())); 43 pnl.add(new SideButton(new ContextSensitiveHelpAction(HelpUtil.ht("/Action/Preferences")))); 44 JPanel pnl = new JPanel(new GridBagLayout()); 45 46 JCheckBox expert = new JCheckBox(tr("Expert mode")); 47 expert.setSelected(Main.main.menu.expert.isSelected()); 48 expert.addActionListener(new ActionListener() { 49 public void actionPerformed(ActionEvent e) { 50 Main.main.menu.expert.actionPerformed(null); 51 } 52 }); 53 54 JPanel btns = new JPanel(new FlowLayout(FlowLayout.CENTER)); 55 btns.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); 56 btns.add(new SideButton(new OKAction())); 57 btns.add(new SideButton(new CancelAction())); 58 btns.add(new SideButton(new ContextSensitiveHelpAction(HelpUtil.ht("/Action/Preferences")))); 59 pnl.add(expert, GBC.std().insets(5,0,0,0)); 60 pnl.add(btns, GBC.std().fill(GBC.HORIZONTAL)); 44 61 return pnl; 45 62 } -
trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
r4634 r4840 28 28 29 29 import org.openstreetmap.josm.Main; 30 import org.openstreetmap.josm.actions.ExpertToggleAction; 31 import org.openstreetmap.josm.actions.ExpertToggleAction.ExpertModeChangeListener; 30 32 import org.openstreetmap.josm.gui.preferences.advanced.AdvancedPreference; 31 33 import org.openstreetmap.josm.plugins.PluginDownloadTask; … … 42 44 * @author imi 43 45 */ 44 public class PreferenceTabbedPane extends JTabbedPane implements MouseWheelListener { 46 public class PreferenceTabbedPane extends JTabbedPane implements MouseWheelListener, ExpertModeChangeListener { 45 47 /** 46 48 * Allows PreferenceSettings to do validation of entered values when ok was pressed. … … 56 58 } 57 59 60 private class TabData { 61 public String icon; 62 public JComponent tab; 63 public String toolTip; 64 public boolean isExpert; 65 } 66 58 67 // all created tabs 59 private final Map<String,Component> tabs = newHashMap<String,Component>();68 private final List<TabData> tabs = new ArrayList<TabData>(); 60 69 private final static Collection<PreferenceSettingFactory> settingsFactory = new LinkedList<PreferenceSettingFactory>(); 61 70 private final List<PreferenceSetting> settings = new ArrayList<PreferenceSetting>(); … … 94 103 public JPanel createPreferenceTab(String icon, String title, String desc) { 95 104 return createPreferenceTab(icon, title, desc, false); 105 } 106 107 public JPanel createPreferenceTab(String icon, String title, String desc, boolean inScrollPane) { 108 return createPreferenceTab(icon, title, desc, inScrollPane, false); 96 109 } 97 110 … … 107 120 * @return The created panel ready to add other controls. 108 121 */ 109 public JPanel createPreferenceTab(String icon, String title, String desc, boolean inScrollPane) { 122 public JPanel createPreferenceTab(String icon, String title, String desc, boolean inScrollPane, boolean isExpert) { 110 123 JPanel p = new JPanel(new GridBagLayout()); 111 124 p.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); … … 121 134 tab = sp; 122 135 } 123 tabs.put(icon,tab); 124 addTab(null, ImageProvider.get("preferences", icon), tab); 125 setToolTipTextAt(getTabCount()-1, "<html>"+desc+"</html>"); 136 TabData data = new TabData(); 137 data.icon = icon; 138 data.tab = tab; 139 data.isExpert = isExpert; 140 data.toolTip = "<html>"+desc+"</html>"; 141 tabs.add(data); 126 142 return p; 127 143 } 128 144 129 145 public void selectTabByName(String name) { 130 Component c = tabs.get(name); 131 if (c!=null) setSelectedComponent(c); 146 for (TabData data : tabs) { 147 if (data.icon.equals(name)) { 148 Component c = data.tab; 149 if (c != null) { 150 setSelectedComponent(c); 151 } 152 return; 153 } 154 } 132 155 } 133 156 … … 227 250 super(JTabbedPane.LEFT, JTabbedPane.SCROLL_TAB_LAYOUT); 228 251 super.addMouseWheelListener(this); 252 ExpertToggleAction.addExpertModeChangeListener(this); 229 253 } 230 254 … … 250 274 } 251 275 } 276 addGUITabs(false); 277 } 278 279 private void addGUITabs(boolean clear) { 280 boolean expert = Main.main.menu.expert.isSelected(); 281 Component sel = getSelectedComponent(); 282 if (clear) { 283 removeAll(); 284 } 285 for (TabData data : tabs) { 286 if (expert || !data.isExpert) { 287 addTab(null, ImageProvider.get("preferences", data.icon), data.tab, data.toolTip); 288 } 289 } 290 try { 291 setSelectedComponent(sel); 292 } catch (IllegalArgumentException e) {} 293 } 294 295 @Override 296 public void expertChanged(boolean isExpert) { 297 addGUITabs(true); 252 298 } 253 299 … … 288 334 PluginHandler.getPreferenceSetting(settingsFactory); 289 335 290 if(Main.pref.getBoolean("expert", false)) { 291 // always the last: advanced tab 292 settingsFactory.add(new AdvancedPreference.Factory()); 293 } 336 // always the last: advanced tab 337 settingsFactory.add(new AdvancedPreference.Factory()); 294 338 } 295 339 -
trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
r4634 r4840 115 115 public void addGui(final PreferenceTabbedPane gui) { 116 116 JPanel p = gui.createPreferenceTab("advanced", tr("Advanced Preferences"), 117 tr("Setting Preference entries directly. Use with caution!"), false); 117 tr("Setting Preference entries directly. Use with caution!"), false, true); 118 118 119 119 txtFilter = new JTextField();
Note:
See TracChangeset
for help on using the changeset viewer.