Ticket #6953: SidetoolbarLayerChange.patch

File SidetoolbarLayerChange.patch, 2.7 KB (added by akks, 8 years ago)
  • src/org/openstreetmap/josm/gui/IconToggleButton.java

     
    6565        }
    6666    }
    6767   
     68    String getPreferenceKey() {
     69        String s = (String) getSafeActionValue("toolbar");
     70        if (s==null) {
     71            if (getAction()!=null) s=getAction().getClass().getName();
     72        }
     73        return "sidetoolbar.hidden."+s;
     74       
     75    }
     76   
    6877    @Override
    6978    public void applyButtonHiddenPreferences() {
    70         String actionName = (String) getSafeActionValue(AbstractAction.NAME);
    71         boolean hiddenFlag = Main.pref.getBoolean(actionName + ".itbutton_hidden", false);
     79        boolean hiddenFlag = Main.pref.getBoolean(getPreferenceKey(), false);
    7280        setVisible(!hiddenFlag);   
    7381    }
    7482
    7583    @Override
    7684    public void setButtonHidden(boolean b) {
    77         String actionName = (String) getSafeActionValue(AbstractAction.NAME);
    7885        setVisible(!b);
    7986        if (listener!=null) { // if someone wants to know about changes of visibility
    8087            if (!b) listener.buttonShown(); else listener.buttonHidden();
    8188        }
    82         Main.pref.put(actionName + ".itbutton_hidden", b);
     89        Main.pref.put(getPreferenceKey(), b);
    8390    }
    8491   
    8592    @Override
  • src/org/openstreetmap/josm/gui/MapFrame.java

     
    407407            }
    408408        }));
    409409    }
    410    
     410
    411411        class ListAllButtonsAction extends AbstractAction {
    412412
    413413        private JButton button;
     
    453453        }
    454454        toolBarToggle.repaint();
    455455        for (IconToggleButton b : allMapModeButtons) {
    456             b.applyButtonHiddenPreferences();
     456            Action a=b.getAction();
     457            boolean hideAnyway=false;
     458            if (a instanceof MapMode) {
     459                hideAnyway = !((MapMode)a).layerIsSupported(Main.main.getActiveLayer());
     460            }
     461            if (hideAnyway) b.setVisible(false); else 
     462                b.applyButtonHiddenPreferences();
    457463        }
    458464        toolBarActions.repaint();
    459465    }
    460 
     466   
    461467    /**
    462468     * Replies the instance of a toggle dialog of type <code>type</code> managed by this
    463469     * map frame
     
    532538            mapMode.exitMode();
    533539            mapMode.enterMode();
    534540        }
     541        validateToolBarsVisibility();
    535542        // invalidate repaint cache
    536543        Main.map.mapView.preferenceChanged(null);
    537544    }