Ignore:
Timestamp:
2011-11-26T16:52:05+01:00 (12 years ago)
Author:
stoecker
Message:

fix #6953 - patch by akks - improve hide handling for left toolbar

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/IconToggleButton.java

    r3451 r4609  
    77import java.beans.PropertyChangeListener;
    88
     9import javax.swing.AbstractAction;
    910import javax.swing.Action;
     11import javax.swing.Icon;
    1012import javax.swing.JToggleButton;
    1113
     14import org.openstreetmap.josm.Main;
    1215import org.openstreetmap.josm.tools.Destroyable;
    1316
     
    1518 * Just a toggle button, with smaller border and icon only to display in
    1619 * MapFrame toolbars.
    17  *
    18  * @author imi
     20 * Also provides methods for storing hidden state in preferences
     21 * @author imi, akks
    1922 */
    20 public class IconToggleButton extends JToggleButton implements PropertyChangeListener, Destroyable {
     23public class IconToggleButton extends JToggleButton implements HideableButton, PropertyChangeListener, Destroyable {
    2124
    2225    public boolean groupbutton;
     26    private ShowHideButtonListener listener;
    2327
    2428    /**
     
    5963        action.removePropertyChangeListener(this);
    6064    }
     65   
     66    @Override
     67    public void applyButtonHiddenPreferences() {
     68            String actionName = (String) getAction().getValue(AbstractAction.NAME);
     69            boolean hiddenFlag =
     70                    Main.pref.getBoolean(actionName + ".itbutton_hidden", false);
     71            setVisible(!hiddenFlag);   
     72    }
     73
     74    @Override
     75    public void setButtonHidden(boolean b) {
     76            String actionName = (String) getAction().getValue(AbstractAction.NAME);
     77            setVisible(!b);
     78            if (listener!=null) { // if someone wants to know about changes of visibility
     79                if (!b) listener.buttonShown(); else listener.buttonHidden();
     80            }
     81            Main.pref.put(actionName + ".itbutton_hidden", b);
     82           
     83    }
     84    @Override
     85    public void showButton() {
     86        setButtonHidden(false);
     87    }
     88    @Override
     89    public void hideButton() {
     90        setButtonHidden(true);
     91    }
     92
     93    @Override
     94    public String getActionName() {
     95        return (String) getAction().getValue(Action.NAME);
     96    }
     97
     98    @Override
     99    public Icon getIcon() {
     100        return (Icon) getAction().getValue(Action.SMALL_ICON);
     101    }
     102
     103    @Override
     104    public boolean isButtonVisible() {
     105        return isVisible();
     106    }
     107
     108    @Override
     109    public void setShowHideButtonListener(ShowHideButtonListener l) {
     110        listener = l;
     111    }
     112
     113 
    61114}
Note: See TracChangeset for help on using the changeset viewer.