Changeset 3223 in josm for trunk


Ignore:
Timestamp:
2010-05-08T19:29:43+02:00 (9 years ago)
Author:
jttt
Message:

Fix #4846 emptying toolbar causes autimatic refill

File:
1 edited

Legend:

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

    r3200 r3223  
    2121import java.util.Arrays;
    2222import java.util.Collection;
     23import java.util.Collections;
    2324import java.util.HashMap;
    2425import java.util.LinkedList;
     
    4647import javax.swing.event.ListSelectionEvent;
    4748import javax.swing.event.ListSelectionListener;
     49import javax.swing.event.TreeSelectionEvent;
     50import javax.swing.event.TreeSelectionListener;
    4851import javax.swing.table.AbstractTableModel;
    4952import javax.swing.tree.DefaultMutableTreeNode;
     
    6164
    6265public class ToolbarPreferences implements PreferenceSettingFactory {
     66
     67
     68    private static final String EMPTY_TOOLBAR_MARKER = "<!-empty-!>";
    6369
    6470    public static class ActionDefinition {
     
    283289                        } else if (node.getUserObject() instanceof Action) {
    284290                            selected.add(leadItem++, new ActionDefinition((Action)node.getUserObject()));
     291
    285292                        }
    286293                    }
     
    346353        private JButton upButton;
    347354        private JButton downButton;
     355        private JButton removeButton;
     356        private JButton addButton;
    348357
    349358        private String movingComponent;
     
    366375            b.setActionCommand(name);
    367376            return b;
     377        }
     378
     379        private void updateEnabledState() {
     380            int index = selectedList.getSelectedIndex();
     381            upButton.setEnabled(index > 0);
     382            downButton.setEnabled(index < selectedList.getModel().getSize() - 1);
     383            removeButton.setEnabled(index != -1);
     384            addButton.setEnabled(actionsTree.getSelectionCount() > 0);
    368385        }
    369386
     
    416433                        actionParametersPanel.setVisible(actionParametersModel.getRowCount() > 0);
    417434                    }
    418                     upButton.setEnabled(sel);
    419                     downButton.setEnabled(sel);
     435                    updateEnabledState();
    420436                }
    421437            });
     
    461477                        int dataLength = draggedData.size();
    462478
     479
    463480                        if (leadItem != null) {
    464481                            for (Object o: draggedData) {
    465482                                if (leadItem.equals(o))
    466483                                    return false;
     484
    467485                            }
    468486                        }
     
    553571            });
    554572            actionsTree.setDragEnabled(true);
     573            actionsTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
     574                public void valueChanged(TreeSelectionEvent e) {
     575                    updateEnabledState();
     576                }
     577            });
    555578
    556579            final JPanel left = new JPanel(new GridBagLayout());
     
    564587            final JPanel buttons = new JPanel(new GridLayout(6,1));
    565588            buttons.add(upButton = createButton("up"));
    566             buttons.add(createButton("<"));
    567             buttons.add(createButton(">"));
     589            buttons.add(addButton = createButton("<"));
     590            buttons.add(removeButton = createButton(">"));
    568591            buttons.add(downButton = createButton("down"));
    569             upButton.setEnabled(false);
    570             downButton.setEnabled(false);
     592            updateEnabledState();
    571593
    572594            final JPanel p = new JPanel();
     
    621643            for (int i = 0; i < selected.size(); ++i) {
    622644                if (selected.get(i) == ActionDefinition.SEPARATOR) {
     645
    623646                    t.add("|");
     647
    624648                } else {
    625649                    t.add(parser.saveAction((ActionDefinition)(selected.get(i))));
    626650                }
     651            }
     652            if (t.isEmpty()) {
     653                t = Collections.singletonList(EMPTY_TOOLBAR_MARKER);
    627654            }
    628655            Main.pref.putCollection("toolbar", t);
     
    685712
    686713    private static Collection<String> getToolString() {
     714
    687715        Collection<String> toolStr = Main.pref.getCollection("toolbar", Arrays.asList(deftoolbar));
    688716        if (toolStr == null || toolStr.size() == 0) {
     
    735763            if (action == ActionDefinition.SEPARATOR) {
    736764                control.addSeparator();
     765
    737766            } else {
    738767                Action a = action.getParametrizedAction();
Note: See TracChangeset for help on using the changeset viewer.