Changeset 4999 in josm for trunk/src


Ignore:
Timestamp:
2012-02-19T18:49:37+01:00 (12 years ago)
Author:
stoecker
Message:

fix #7402 - multikey shortcut handling

Location:
trunk/src/org/openstreetmap/josm
Files:
5 edited

Legend:

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

    r4982 r4999  
    337337        EnableFilterAction() {
    338338            putValue(SHORT_DESCRIPTION, tr("Enable filter"));
    339             ENABLE_FILTER_SHORTCUT.setAccelerator(this);
     339        }
     340
     341        @Override
     342        public Shortcut getMultikeyShortcut() {
     343            return ENABLE_FILTER_SHORTCUT;
    340344        }
    341345
     
    356360        public HidingFilterAction() {
    357361            putValue(SHORT_DESCRIPTION, tr("Hiding filter"));
    358             HIDING_FILTER_SHORTCUT.setAccelerator(this);
     362        }
     363
     364        @Override
     365        public Shortcut getMultikeyShortcut() {
     366            return HIDING_FILTER_SHORTCUT;
    359367        }
    360368
  • trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java

    r4982 r4999  
    432432
    433433        private WeakReference<Layer> lastLayer;
     434        private Shortcut multikeyShortcut;
    434435
    435436        /**
     
    442443            putValue(SHORT_DESCRIPTION, tr("Toggle visible state of the selected layer."));
    443444            putValue("help", HelpUtil.ht("/Dialog/LayerList#ShowHideLayer"));
    444             Shortcut.registerShortcut("core_multikey:showHideLayer", tr("Multikey: {0}",
    445             tr("Show/hide layer")), KeyEvent.VK_S, Shortcut.SHIFT).setAccelerator(this);
     445            multikeyShortcut = Shortcut.registerShortcut("core_multikey:showHideLayer", tr("Multikey: {0}",
     446            tr("Show/hide layer")), KeyEvent.VK_S, Shortcut.SHIFT);
    446447            if (init) {
    447448                updateEnabledState();
     
    451452        public ShowHideLayerAction() {
    452453            this(true);
     454        }
     455
     456        @Override
     457        public Shortcut getMultikeyShortcut() {
     458            return multikeyShortcut;
    453459        }
    454460
     
    618624    public final class ActivateLayerAction extends AbstractAction implements IEnabledStateUpdating, MapView.LayerChangeListener, MultikeyShortcutAction{
    619625        private  Layer layer;
     626        private Shortcut multikeyShortcut;
    620627
    621628        public ActivateLayerAction(Layer layer) {
     
    630637            putValue(SMALL_ICON, ImageProvider.get("dialogs", "activate"));
    631638            putValue(SHORT_DESCRIPTION, tr("Activate the selected layer"));
    632             Shortcut.registerShortcut("core_multikey:activateLayer", tr("Multikey: {0}",
    633             tr("Activate layer")), KeyEvent.VK_A, Shortcut.SHIFT).setAccelerator(this);
     639            multikeyShortcut = Shortcut.registerShortcut("core_multikey:activateLayer", tr("Multikey: {0}",
     640            tr("Activate layer")), KeyEvent.VK_A, Shortcut.SHIFT);
    634641            putValue("help", HelpUtil.ht("/Dialog/LayerList#ActivateLayer"));
     642        }
     643
     644        @Override
     645        public Shortcut getMultikeyShortcut() {
     646            return multikeyShortcut;
    635647        }
    636648
  • trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java

    r4982 r4999  
    3232        private final Layer layer;
    3333        private WeakReference<Layer> lastLayer;
     34        private Shortcut multikeyShortcut;
    3435
    3536        public JumpToNextMarker(JumpToMarkerLayer layer) {
    36             Shortcut.registerShortcut("core_multikey:nextMarker", tr("Multikey: {0}", tr("Next marker")),
    37                 KeyEvent.VK_J, Shortcut.ALT_CTRL).setAccelerator(this);
     37            multikeyShortcut = Shortcut.registerShortcut("core_multikey:nextMarker", tr("Multikey: {0}", tr("Next marker")),
     38                KeyEvent.VK_J, Shortcut.ALT_CTRL);
    3839            putValue(SHORT_DESCRIPTION, tr("Jump to next marker"));
    3940            putValue(NAME, tr("Jump to next marker"));
    4041
    4142            this.layer = (Layer)layer;
     43        }
     44
     45        @Override
     46        public Shortcut getMultikeyShortcut() {
     47            return multikeyShortcut;
    4248        }
    4349
     
    8692        private WeakReference<Layer> lastLayer;
    8793        private final Layer layer;
     94        private Shortcut multikeyShortcut;
    8895
    8996        public JumpToPreviousMarker(JumpToMarkerLayer layer) {
     
    94101            putValue(SHORT_DESCRIPTION, tr("Jump to previous marker"));
    95102            putValue(NAME, tr("Jump to previous marker"));
     103        }
     104
     105        @Override
     106        public Shortcut getMultikeyShortcut() {
     107            return multikeyShortcut;
    96108        }
    97109
  • trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java

    r4753 r4999  
    2424import org.openstreetmap.josm.Main;
    2525import org.openstreetmap.josm.tools.MultikeyShortcutAction.MultikeyInfo;
     26import org.openstreetmap.josm.tools.Shortcut;
    2627
    2728public class MultikeyActionsHandler {
     
    4041                int index = getIndex(e.getKeyCode());
    4142                if (index >= 0) {
    42                     lastAction.action.executeMultikeyAction(index, e.getKeyCode() == lastAction.shortcut.getKeyCode());
     43                    lastAction.action.executeMultikeyAction(index, e.getKeyCode() == lastAction.shortcut.getKeyStroke().getKeyCode());
    4344                }
    4445                lastAction = null;
     
    6465
    6566        final MultikeyShortcutAction action;
    66         final KeyStroke shortcut;
     67        final Shortcut shortcut;
    6768
    6869        MyAction(MultikeyShortcutAction action) {
    6970            this.action = action;
    70             this.shortcut = (KeyStroke) action.getValue(ACCELERATOR_KEY);
     71            this.shortcut = action.getMultikeyShortcut();
    7172        }
    7273
     
    102103            }
    103104        }
    104 
    105105    }
    106106
     
    143143                layers.add(pnTitle);
    144144
    145                 char repeatKey = (char) action.shortcut.getKeyCode();
     145                char repeatKey = (char) action.shortcut.getKeyStroke().getKeyCode();
    146146                boolean repeatKeyUsed = false;
    147147
     
    153153                    }
    154154
    155                     JMenuItem item = new JMenuItem(formatMenuText(action.shortcut, String.valueOf(info.getShortcut()), info.getDescription()));
     155                    JMenuItem item = new JMenuItem(formatMenuText(action.shortcut.getKeyStroke(), String.valueOf(info.getShortcut()), info.getDescription()));
    156156                    item.setMnemonic(info.getShortcut());
    157157                    item.addActionListener(new ActionListener() {
     
    167167                    MultikeyInfo lastLayer = action.action.getLastMultikeyAction();
    168168                    if (lastLayer != null) {
    169                         JMenuItem repeateItem = new JMenuItem(formatMenuText(action.shortcut,
    170                                 KeyEvent.getKeyText(action.shortcut.getKeyCode()),
     169                        JMenuItem repeateItem = new JMenuItem(formatMenuText(action.shortcut.getKeyStroke(),
     170                                KeyEvent.getKeyText(action.shortcut.getKeyStroke().getKeyCode()),
    171171                                "Repeat " + lastLayer.getDescription()));
    172                         repeateItem.setMnemonic(action.shortcut.getKeyCode());
     172                        repeateItem.setMnemonic(action.shortcut.getKeyStroke().getKeyCode());
    173173                        repeateItem.addActionListener(new ActionListener() {
    174174                            @Override
     
    201201
    202202    public void addAction(MultikeyShortcutAction action) {
    203         if (!(action.getValue(Action.ACCELERATOR_KEY) instanceof KeyStroke))
    204             throw new IllegalArgumentException("Action must have shortcut set");
    205         MyAction myAction = new MyAction(action);
    206         Main.registerActionShortcut(myAction, myAction.shortcut);
    207     }
    208 
    209 
     203        if(action.getMultikeyShortcut() != null) {
     204            MyAction myAction = new MyAction(action);
     205            Main.registerActionShortcut(myAction, myAction.shortcut);
     206        }
     207    }
    210208}
  • trunk/src/org/openstreetmap/josm/tools/MultikeyShortcutAction.java

    r4604 r4999  
    3535    }
    3636
     37    public Shortcut getMultikeyShortcut();
     38
    3739    void executeMultikeyAction(int index, boolean repeatLastAction);
    3840    List<MultikeyInfo> getMultikeyCombinations();
Note: See TracChangeset for help on using the changeset viewer.