Changeset 4840 in josm for trunk/src/org/openstreetmap/josm/gui/IconToggleButton.java
- Timestamp:
- 2012-01-21T23:04:50+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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() {
Note:
See TracChangeset
for help on using the changeset viewer.