Ticket #6953: toolbarContextMenu.patch

File toolbarContextMenu.patch, 2.5 KB (added by akks, 8 years ago)
  • src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java

     
    2626import java.util.List;
    2727import java.util.Map;
    2828
    29 import javax.swing.AbstractAction;
    3029import javax.swing.Action;
    3130import javax.swing.DefaultListCellRenderer;
    3231import javax.swing.DefaultListModel;
     
    6261import org.openstreetmap.josm.actions.ParameterizedAction;
    6362import org.openstreetmap.josm.actions.ParameterizedActionDecorator;
    6463import org.openstreetmap.josm.gui.tagging.TaggingPreset;
     64import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
    6565import org.openstreetmap.josm.tools.GBC;
    6666import org.openstreetmap.josm.tools.ImageProvider;
    6767
     
    366366
    367367    }
    368368
     369    private static class ToolbarPopupMenu extends JPopupMenu {
     370        public ToolbarPopupMenu(final ActionDefinition action) {
     371           
     372            add(tr("Remove from toolbar",action.getDisplayName()))
     373                    .addActionListener(new ActionListener() {
     374                        public void actionPerformed(ActionEvent e) {
     375                            Collection<String> t = new LinkedList<String>(getToolString());
     376                            ActionParser parser = new ActionParser(null);
     377                            // get text definition of current action
     378                            String res = parser.saveAction(action);
     379                            // remove the button from toolbar preferences
     380                            t.remove( res );
     381                            Main.pref.putCollection("toolbar", t);
     382                            Main.toolbar.refreshToolbarControl();               
     383                        }
     384            });
     385            // TODO: How to show specific tab of preferences - toolbar settings?
     386            add(tr("Configure toolbar")).addActionListener(Main.main.menu.preferences);
     387           
     388        }
     389    }
     390
    369391    /**
    370392     * Key: Registered name (property "toolbar" of action).
    371393     * Value: The action to execute.
     
    920942                Icon i = action.getDisplayIcon();
    921943                if (i != null)
    922944                    b.setIcon(i);
     945                b.addMouseListener(new PopupMenuLauncher( new ToolbarPopupMenu(action)));
    923946            }
    924947        }
    925948        control.setVisible(control.getComponentCount() != 0);