Changeset 4897 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2012-02-02T19:44:03+01:00 (12 years ago)
Author:
stoecker
Message:

cleanup shortcut handling a lot, fix some more deprecations

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

Legend:

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

    r4869 r4897  
    7676import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
    7777import org.openstreetmap.josm.gui.progress.ProgressMonitorExecutor;
     78import org.openstreetmap.josm.gui.util.RedirectInputMap;
    7879import org.openstreetmap.josm.io.OsmApi;
    7980import org.openstreetmap.josm.plugins.PluginHandler;
     
    378379    protected static final JPanel contentPanePrivate = new JPanel(new BorderLayout());
    379380
    380     /**
    381      * @deprecated If you just need to register shortcut for action, use registerActionShortcut instead of accessing InputMap directly
    382      */
    383     @Deprecated
    384     public static final JPanel contentPane = contentPanePrivate;
     381    public static void redirectToMainContentPane(JComponent source) {
     382        RedirectInputMap.redirect(source, contentPanePrivate);
     383    }
    385384
    386385    public static void registerActionShortcut(Action action, Shortcut shortcut) {
     
    843842    /**
    844843     * The projection method used.
    845      * @deprecated use {@link #getProjection()} and {@link #setProjection(Projection)} instead.
    846      * For the time being still publicly available, but avoid/migrate write access to it. Use
    847      * {@link #setProjection(Projection)} in order to trigger a projection change event.
    848      */
    849     @Deprecated
    850     public static Projection proj;
     844     * use {@link #getProjection()} and {@link #setProjection(Projection)} for access.
     845     * Use {@link #setProjection(Projection)} in order to trigger a projection change event.
     846     */
     847    private static Projection proj;
    851848
    852849    /**
  • trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java

    r4874 r4897  
    666666    }
    667667
    668     @Deprecated
    669     public final Node getNearestNode(Point p) {
    670         return getNearestNode(p, OsmPrimitive.isUsablePredicate);
    671     }
    672 
    673668    /**
    674669     * The *result* does not depend on the current map selection state,
     
    887882    }
    888883
    889     @Deprecated
    890     public final Way getNearestWay(Point p) {
    891         return getNearestWay(p, OsmPrimitive.isUsablePredicate);
    892     }
    893 
    894884    /**
    895885     * The *result* does not depend on the current map selection state,
     
    10251015
    10261016        return osm;
    1027     }
    1028 
    1029     @Deprecated
    1030     public final OsmPrimitive getNearest(Point p, Predicate<OsmPrimitive> predicate) {
    1031         return getNearestNodeOrWay(p, predicate, false);
    1032     }
    1033 
    1034     @Deprecated
    1035     public final Collection<OsmPrimitive> getNearestCollection(Point p, Predicate<OsmPrimitive> predicate) {
    1036         return asColl(getNearest(p, predicate));
    10371017    }
    10381018
  • trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java

    r4794 r4897  
    4747import org.openstreetmap.josm.gui.help.Helpful;
    4848import org.openstreetmap.josm.gui.ShowHideButtonListener;
    49 import org.openstreetmap.josm.gui.util.RedirectInputMap;
    5049import org.openstreetmap.josm.gui.SideButton;
    5150import org.openstreetmap.josm.tools.GBC;
     
    150149        setBorder(BorderFactory.createEtchedBorder());
    151150
    152         RedirectInputMap.redirectToMainContentPane(this);
     151        Main.redirectToMainContentPane(this);
    153152
    154153        windowMenuItem = MainMenu.addWithCheckbox(Main.main.menu.windowMenu,
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java

    r4842 r4897  
    9494        btnDelete.setPreferredSize(buttonDim);
    9595        Shortcut scDelete = Shortcut.registerShortcut(
    96                 "geoimage:deleteimagefromlayer", tr("Geoimage: {0}", tr("Remove photo from layer")), KeyEvent.VK_DELETE, Shortcut.GROUP_DIRECT, Shortcut.SHIFT_DEFAULT);
     96                "geoimage:deleteimagefromlayer", tr("Geoimage: {0}", tr("Remove photo from layer")), KeyEvent.VK_DELETE, Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT);
    9797        Main.registerActionShortcut(delAction, scDelete);
    9898        btnDelete.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(scDelete.getKeyStroke(), DELETE_TEXT);
     
    103103        btnDeleteFromDisk.setPreferredSize(buttonDim);
    104104        Shortcut scDeleteFromDisk = Shortcut.registerShortcut(
    105                 "geoimage:deletefilefromdisk", tr("Geoimage: {0}", tr("Delete File from disk")), KeyEvent.VK_DELETE, Shortcut.GROUP_DIRECT, KeyEvent.SHIFT_DOWN_MASK|KeyEvent.CTRL_DOWN_MASK);
     105                "geoimage:deletefilefromdisk", tr("Geoimage: {0}", tr("Delete File from disk")), KeyEvent.VK_DELETE, Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY);
    106106        final String ADELFROMDISK = "Delete image file from disk";
    107107        Main.registerActionShortcut(delFromDiskAction, scDeleteFromDisk);
  • trunk/src/org/openstreetmap/josm/gui/preferences/PrefJPanel.java

    r4766 r4897  
    66import java.awt.event.KeyEvent;
    77import java.util.LinkedHashMap;
     8import java.util.HashMap;
    89import java.util.Map;
    910
     
    459460    private class bxAction extends javax.swing.AbstractAction {
    460461        public void actionPerformed(java.awt.event.ActionEvent e) {
    461             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT),    Integer.toString( modifInts[bxPrim1.getSelectedIndex()] ));
    462             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_EDIT),    Integer.toString( modifInts[ bxSec1.getSelectedIndex()] ));
    463             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_EDIT),    Integer.toString( modifInts[ bxTer1.getSelectedIndex()] ));
    464 
    465             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU),    Integer.toString( modifInts[bxPrim2.getSelectedIndex()] ));
    466             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_MENU),    Integer.toString( modifInts[ bxSec2.getSelectedIndex()] ));
    467             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_MENU),    Integer.toString( modifInts[ bxTer2.getSelectedIndex()] ));
    468 
    469             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY),  Integer.toString( modifInts[bxPrim3.getSelectedIndex()] ));
    470             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_HOTKEY),  Integer.toString( modifInts[ bxSec3.getSelectedIndex()] ));
    471             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_HOTKEY),  Integer.toString( modifInts[ bxTer3.getSelectedIndex()] ));
    472 
    473             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER),   Integer.toString( modifInts[bxPrim4.getSelectedIndex()] ));
    474             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_LAYER),   Integer.toString( modifInts[ bxSec4.getSelectedIndex()] ));
    475             Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_LAYER),   Integer.toString( modifInts[ bxTer4.getSelectedIndex()] ));
     462            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT),    modifInts[bxPrim1.getSelectedIndex()]);
     463            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_EDIT),    modifInts[ bxSec1.getSelectedIndex()]);
     464            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_EDIT),    modifInts[ bxTer1.getSelectedIndex()]);
     465
     466            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU),    modifInts[bxPrim2.getSelectedIndex()]);
     467            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_MENU),    modifInts[ bxSec2.getSelectedIndex()]);
     468            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_MENU),    modifInts[ bxTer2.getSelectedIndex()]);
     469
     470            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY),  modifInts[bxPrim3.getSelectedIndex()]);
     471            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_HOTKEY),  modifInts[ bxSec3.getSelectedIndex()]);
     472            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_HOTKEY),  modifInts[ bxTer3.getSelectedIndex()]);
     473
     474            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER),   modifInts[bxPrim4.getSelectedIndex()]);
     475            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_LAYER),   modifInts[ bxSec4.getSelectedIndex()]);
     476            Main.pref.putInteger("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_LAYER),   modifInts[ bxTer4.getSelectedIndex()]);
    476477        }
    477478    }
    478479
    479480    private void initbx() {
    480         setBx(bxPrim1, "shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT));
    481         setBx(bxSec1,  "shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_EDIT));
    482         setBx(bxTer1,  "shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_EDIT));
    483 
    484         setBx(bxPrim2, "shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU));
    485         setBx(bxSec2,  "shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_MENU));
    486         setBx(bxTer2,  "shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_MENU));
    487 
    488         setBx(bxPrim3, "shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY));
    489         setBx(bxSec3,  "shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_HOTKEY));
    490         setBx(bxTer3,  "shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_HOTKEY));
    491 
    492         setBx(bxPrim4, "shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER));
    493         setBx(bxSec4,  "shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_LAYER));
    494         setBx(bxTer4,  "shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_LAYER));
    495     }
    496     private void setBx(javax.swing.JComboBox bx, String key) {
    497         int target = Main.pref.getInteger(key, -1);
     481        HashMap<Integer, Integer> groups = Main.platform.initShortcutGroups(false);
     482        setBx(bxPrim1, groups, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT);
     483        setBx(bxSec1,  groups, Shortcut.GROUPS_ALT1   +Shortcut.GROUP_EDIT);
     484        setBx(bxTer1,  groups, Shortcut.GROUPS_ALT2   +Shortcut.GROUP_EDIT);
     485
     486        setBx(bxPrim2, groups, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU);
     487        setBx(bxSec2,  groups, Shortcut.GROUPS_ALT1   +Shortcut.GROUP_MENU);
     488        setBx(bxTer2,  groups, Shortcut.GROUPS_ALT2   +Shortcut.GROUP_MENU);
     489
     490        setBx(bxPrim3, groups, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY);
     491        setBx(bxSec3,  groups, Shortcut.GROUPS_ALT1   +Shortcut.GROUP_HOTKEY);
     492        setBx(bxTer3,  groups, Shortcut.GROUPS_ALT2   +Shortcut.GROUP_HOTKEY);
     493
     494        setBx(bxPrim4, groups, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER);
     495        setBx(bxSec4,  groups, Shortcut.GROUPS_ALT1   +Shortcut.GROUP_LAYER);
     496        setBx(bxTer4,  groups, Shortcut.GROUPS_ALT2   +Shortcut.GROUP_LAYER);
     497    }
     498    private void setBx(javax.swing.JComboBox bx, HashMap<Integer, Integer> groups, int key) {
     499        int target = Main.pref.getInteger("shortcut.groups."+key, groups.get(key));
    498500        for (int i = 0; i < modifInts.length; i++) {
    499501            if (modifInts[i] == target) {
  • trunk/src/org/openstreetmap/josm/gui/util/RedirectInputMap.java

    r3530 r4897  
    6262    }
    6363
    64     public static void redirectToMainContentPane(JComponent source) {
    65         @SuppressWarnings("deprecation") JComponent target = Main.contentPane;
    66         redirect(source, target);
    67     }
    68 
    6964    public static void redirect(JComponent source, JComponent target) {
    7065        InputMap lastParent = source.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
  • trunk/src/org/openstreetmap/josm/tools/PlatformHook.java

    r4203 r4897  
    44import java.io.File;
    55import java.io.IOException;
     6import java.util.HashMap;
    67
    78/**
     
    6566      * to register any shortcuts from within.
    6667      */
    67     public void initShortcutGroups();
     68    public HashMap<Integer, Integer> initShortcutGroups(boolean load);
    6869
    6970    /**
  • trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java

    r4535 r4897  
    88import java.lang.reflect.Method;
    99import java.lang.reflect.Proxy;
     10import java.util.HashMap;
    1011
    1112import javax.swing.UIManager;
     
    7172    }
    7273    @Override
    73     public void initShortcutGroups() {
     74    public HashMap<Integer, Integer>  initShortcutGroups(boolean load) {
     75        HashMap<Integer, Integer> groups = new HashMap<Integer, Integer>();
     76
    7477        // Everything but Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU is guesswork.
    75         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_NONE),    Integer.toString(-1));
    76         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY),  Integer.toString(KeyEvent.CTRL_DOWN_MASK));
    77         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU),    Integer.toString(KeyEvent.META_DOWN_MASK));
    78         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT),    Integer.toString(0));
    79         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
    80         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT),  Integer.toString(0));
    81         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MNEMONIC),Integer.toString(KeyEvent.ALT_DOWN_MASK));
    82 
    83         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_NONE),       Integer.toString(-1));
    84         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
    85         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
    86         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
    87         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
    88         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
    89         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
    90 
    91         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_NONE),       Integer.toString(-1));
    92         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
    93         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
    94         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
    95         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK));
    96         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
    97         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
    98     }
     78        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_NONE,    -1);
     79        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY,  KeyEvent.CTRL_DOWN_MASK);
     80        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU,    KeyEvent.META_DOWN_MASK);
     81        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT,    0);
     82        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER,   KeyEvent.ALT_DOWN_MASK);
     83        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT,  0);
     84        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MNEMONIC,KeyEvent.ALT_DOWN_MASK);
     85
     86        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_NONE,       -1);
     87        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY,     KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
     88        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_MENU,       KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
     89        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_EDIT,       KeyEvent.SHIFT_DOWN_MASK);
     90        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER,      KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK);
     91        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT,     KeyEvent.SHIFT_DOWN_MASK);
     92        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_MNEMONIC,   KeyEvent.ALT_DOWN_MASK);
     93
     94        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_NONE,       -1);
     95        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY,     KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK);
     96        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_MENU,       KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK);
     97        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_EDIT,       KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK);
     98        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_LAYER,      KeyEvent.SHIFT_DOWN_MASK);
     99        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT,     KeyEvent.CTRL_DOWN_MASK);
     100        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_MNEMONIC,   KeyEvent.ALT_DOWN_MASK);
     101
     102        return groups;
     103    }
     104
    99105    @Override
    100106    public void initSystemShortcuts() {
     
    276282        return false;
    277283    }
    278 
    279     @Override
    280     public boolean rename(File from, File to)
    281     {
    282         return from.renameTo(to);
    283     }
    284284}
  • trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java

    r4849 r4897  
    66import java.io.File;
    77import java.io.IOException;
     8import java.util.HashMap;
    89
    910import org.openstreetmap.josm.Main;
     
    1819 */
    1920public class PlatformHookUnixoid implements PlatformHook {
     21    @Override
    2022    public void preStartupHook(){
    2123    }
     24
     25    @Override
    2226    public void startupHook() {
    2327    }
     28
     29    @Override
    2430    public void openUrl(String url) throws IOException {
    2531        String[] programs = {"gnome-open", "kfmclient openURL", "firefox"};
     
    3238        }
    3339    }
    34     public void initShortcutGroups() {
    35         // This is the Windows list. Someone should look over it and make it more "*nix"...
    36         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_NONE),    Integer.toString(-1));
    37         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY),  Integer.toString(KeyEvent.CTRL_DOWN_MASK));
    38         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU),    Integer.toString(KeyEvent.CTRL_DOWN_MASK));
    39         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT),    Integer.toString(0));
    40         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
    41         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT),  Integer.toString(0));
    42         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MNEMONIC),Integer.toString(KeyEvent.ALT_DOWN_MASK));
    4340
    44         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_NONE),       Integer.toString(-1));
    45         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
    46         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
    47         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
    48         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
    49         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
    50         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
     41    protected void setupGroup(HashMap<Integer, Integer> groups, boolean load, int group, int value) {
     42        if(load)
     43            groups.put(group, Main.pref.getInteger("shortcut.groups."+group, value));
     44        else
     45            groups.put(group, value);
     46    }
    5147
    52         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_NONE),       Integer.toString(-1));
    53         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
    54         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
    55         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
    56         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK));
    57         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.CTRL_DOWN_MASK));
    58         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
     48    @Override
     49    public HashMap<Integer, Integer>  initShortcutGroups(boolean load) {
     50        HashMap<Integer, Integer> groups = new HashMap<Integer, Integer>();
     51
     52        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_NONE,    -1);
     53        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY,  KeyEvent.CTRL_DOWN_MASK);
     54        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU,    KeyEvent.CTRL_DOWN_MASK);
     55        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT,    0);
     56        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER,   KeyEvent.ALT_DOWN_MASK);
     57        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT,  0);
     58        setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MNEMONIC,KeyEvent.ALT_DOWN_MASK);
     59
     60        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_NONE,       -1);
     61        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY,     KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
     62        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_MENU,       KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
     63        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_EDIT,       KeyEvent.SHIFT_DOWN_MASK);
     64        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER,      KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK);
     65        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT,     KeyEvent.SHIFT_DOWN_MASK);
     66        setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_MNEMONIC,   KeyEvent.ALT_DOWN_MASK);
     67
     68        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_NONE,       -1);
     69        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY,     KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK);
     70        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_MENU,       KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK);
     71        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_EDIT,       KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK);
     72        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_LAYER,      KeyEvent.SHIFT_DOWN_MASK);
     73        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT,     KeyEvent.CTRL_DOWN_MASK);
     74        setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_MNEMONIC,   KeyEvent.ALT_DOWN_MASK);
     75
     76        return groups;
    5977    }
     78
     79    @Override
    6080    public void initSystemShortcuts() {
    61         // TODO: Insert system shortcuts here. See Windows and espacially OSX to see how to.
     81        // TODO: Insert system shortcuts here. See Windows and especially OSX to see how to.
    6282    }
    6383    /**
     
    6686     * this is implemented here...
    6787     */
     88    @Override
    6889    public String makeTooltip(String name, Shortcut sc) {
    6990        String result = "";
     
    80101    }
    81102
     103    @Override
    82104    public String getDefaultStyle() {
    83105        return "javax.swing.plaf.metal.MetalLookAndFeel";
  • trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java

    r4205 r4897  
    1515  */
    1616public class PlatformHookWindows extends PlatformHookUnixoid implements PlatformHook {
    17     public void preStartupHook(){
    18     }
    19     public void startupHook() {
    20     }
    2117    public void openUrl(String url) throws IOException {
    2218        Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
    2319    }
    24     public void initShortcutGroups() {
    25         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_NONE),    Integer.toString(-1));
    26         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY),  Integer.toString(KeyEvent.CTRL_DOWN_MASK));
    27         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU),    Integer.toString(KeyEvent.CTRL_DOWN_MASK));
    28         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT),    Integer.toString(0));
    29         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
    30         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT),  Integer.toString(0));
    31         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MNEMONIC),Integer.toString(KeyEvent.ALT_DOWN_MASK));
    3220
    33         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_NONE),       Integer.toString(-1));
    34         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
    35         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
    36         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
    37         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
    38         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
    39         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
    40 
    41         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_NONE),       Integer.toString(-1));
    42         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
    43         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
    44         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
    45         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK));
    46         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.CTRL_DOWN_MASK));
    47         Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
    48     }
    4921    public void initSystemShortcuts() {
    5022        // This list if far from complete!
     
    6436
    6537    @Override
    66     public boolean canFullscreen()
    67     {
    68         return GraphicsEnvironment.getLocalGraphicsEnvironment()
    69         .getDefaultScreenDevice().isFullScreenSupported();
    70     }
    71 
    72     @Override
    7338    public boolean rename(File from, File to)
    7439    {
  • trunk/src/org/openstreetmap/josm/tools/Shortcut.java

    r4595 r4897  
    66import java.awt.event.KeyEvent;
    77import java.util.ArrayList;
     8import java.util.Arrays;
     9import java.util.Collection;
    810import java.util.HashMap;
    911import java.util.LinkedHashMap;
     12import java.util.LinkedList;
    1013import java.util.List;
    1114import java.util.Map;
     
    3336 */
    3437public class Shortcut {
    35     //  public static final int SHIFT = KeyEvent.SHIFT_DOWN_MASK;
    36     //  public static final int CTRL = KeyEvent.CTRL_DOWN_MASK;
    37     //  public static final int SHIFT_CTRL = KeyEvent.SHIFT_DOWN_MASK|KeyEvent.CTRL_DOWN_MASK;
     38    @Deprecated
    3839    public static final int SHIFT_DEFAULT = 1;
    3940    private String shortText;        // the unique ID of the shortcut
     
    155156    private boolean isSame(int isKey, int isModifier) {
    156157        // -1 --- an unassigned shortcut is different from any other shortcut
    157         return( isKey == assignedKey && isModifier == assignedModifier && assignedModifier != groups.get(GROUP_NONE));
     158        return( isKey == assignedKey && isModifier == assignedModifier && assignedModifier != getGroupModifier(GROUP_NONE));
    158159    }
    159160
    160161    // create a shortcut object from an string as saved in the preferences
    161162    private Shortcut(String prefString) {
    162         String[] s = prefString.split(";");
    163         this.shortText = s[0];
    164         this.longText = s[1];
    165         this.requestedKey = Integer.parseInt(s[2]);
    166         this.requestedGroup = Integer.parseInt(s[3]);
    167         this.assignedKey = Integer.parseInt(s[4]);
    168         this.assignedModifier = Integer.parseInt(s[5]);
    169         this.assignedDefault = Boolean.parseBoolean(s[6]);
    170         this.assignedUser = Boolean.parseBoolean(s[7]);
     163        ArrayList<String> s = (new ArrayList<String>(Main.pref.getCollection(prefString)));
     164        this.shortText = prefString.substring(15);
     165        this.longText = s.get(0);
     166        this.requestedKey = Integer.parseInt(s.get(1));
     167        this.requestedGroup = Integer.parseInt(s.get(2));
     168        this.assignedKey = Integer.parseInt(s.get(3));
     169        this.assignedModifier = Integer.parseInt(s.get(4));
     170        this.assignedDefault = Boolean.parseBoolean(s.get(5));
     171        this.assignedUser = Boolean.parseBoolean(s.get(6));
     172    }
     173
     174    private void saveDefault() {
     175        Main.pref.getCollection("shortcut.entry."+shortText, Arrays.asList(new String[]{longText,
     176        String.valueOf(requestedKey), String.valueOf(requestedGroup), String.valueOf(assignedKey),
     177        String.valueOf(assignedModifier), String.valueOf(true), String.valueOf(false)}));
    171178    }
    172179
    173180    // get a string that can be put into the preferences
    174     private String asPrefString() {
    175         return shortText + ";" + longText + ";" + requestedKey + ";" + requestedGroup + ";" + assignedKey + ";" + assignedModifier + ";" + assignedDefault + ";" + assignedUser;
     181    private boolean save() {
     182        return Main.pref.putCollection("shortcut.entry."+shortText, Arrays.asList(new String[]{longText,
     183        String.valueOf(requestedKey), String.valueOf(requestedGroup), String.valueOf(assignedKey),
     184        String.valueOf(assignedModifier), String.valueOf(assignedDefault), String.valueOf(assignedUser)}));
    176185    }
    177186
     
    184193     */
    185194    public void setMnemonic(JMenu menu) {
    186         if (requestedGroup == GROUP_MNEMONIC && assignedModifier == groups.get(requestedGroup + GROUPS_DEFAULT) && getKeyStroke() != null && KeyEvent.getKeyText(assignedKey).length() == 1) {
     195        if (requestedGroup == GROUP_MNEMONIC && assignedModifier == getGroupModifier(requestedGroup + GROUPS_DEFAULT) && getKeyStroke() != null && KeyEvent.getKeyText(assignedKey).length() == 1) {
    187196            menu.setMnemonic(KeyEvent.getKeyText(assignedKey).charAt(0)); //getKeyStroke().getKeyChar() seems not to work here
    188197        }
     
    192201     */
    193202    public void setMnemonic(AbstractButton button) {
    194         if (requestedGroup == GROUP_MNEMONIC && assignedModifier == groups.get(requestedGroup + GROUPS_DEFAULT) && getKeyStroke() != null && KeyEvent.getKeyText(assignedKey).length() == 1) {
     203        if (requestedGroup == GROUP_MNEMONIC && assignedModifier == getGroupModifier(requestedGroup + GROUPS_DEFAULT) && getKeyStroke() != null && KeyEvent.getKeyText(assignedKey).length() == 1) {
    195204            button.setMnemonic(KeyEvent.getKeyText(assignedKey).charAt(0)); //getKeyStroke().getKeyChar() seems not to work here
    196205        }
     
    221230
    222231    // and here our modifier groups
    223     private static Map<Integer, Integer> groups = new HashMap<Integer, Integer>();
     232    private static Map<Integer, Integer> groups;
    224233
    225234    // check if something collides with an existing shortcut
    226235    private static Shortcut findShortcut(int requestedKey, int modifier) {
    227         if (modifier == groups.get(GROUP_NONE))
     236        if (modifier == getGroupModifier(GROUP_NONE))
    228237            return null;
    229238        for (Shortcut sc : shortcuts.values()) {
     
    250259    // try to find an unused shortcut
    251260    private static Shortcut findRandomShortcut(String shortText, String longText, int requestedKey, int requestedGroup) {
    252         int[] mods = {groups.get(requestedGroup + GROUPS_DEFAULT), groups.get(requestedGroup + GROUPS_ALT1), groups.get(requestedGroup + GROUPS_ALT2)};
     261        int[] mods = {getGroupModifier(requestedGroup + GROUPS_DEFAULT), getGroupModifier(requestedGroup + GROUPS_ALT1), getGroupModifier(requestedGroup + GROUPS_ALT2)};
    253262        for (int m : mods) {
    254263            for (int k = KeyEvent.VK_A; k < KeyEvent.VK_Z; k++) { // we'll limit ourself to 100% safe keys
     
    257266            }
    258267        }
    259         return new Shortcut(shortText, longText, requestedKey, requestedGroup, requestedKey, groups.get(GROUP_NONE), false, false);
     268        return new Shortcut(shortText, longText, requestedKey, requestedGroup, requestedKey, getGroupModifier(GROUP_NONE), false, false);
    260269    }
    261270
     
    300309        if (initdone) return;
    301310        initdone = true;
    302         // if we have no modifier groups in the config, we have to create them
    303         if (Main.pref.get("shortcut.groups.configured", null) == null) {
    304             Main.platform.initShortcutGroups();
    305             Main.pref.put("shortcut.groups.configured", true);
    306         }
    307         // pull in the groups
    308         for (int i = GROUP_NONE; i < GROUP__MAX+GROUPS_ALT2*2; i++) { // fill more groups, so registering with e.g. ALT2+MNEMONIC won't NPE
    309             groups.put(i, Main.pref.getInteger("shortcut.groups."+i, -1));
    310         }
     311        groups = Main.platform.initShortcutGroups(true);
    311312        // (1) System reserved shortcuts
    312313        Main.platform.initSystemShortcuts();
    313314        // (2) User defined shortcuts
    314         int i = 0;
    315         String p = Main.pref.get("shortcut.shortcut."+i, null);
    316         while (p != null) {
    317             Shortcut sc = new Shortcut(p);
     315        LinkedList<Shortcut> shortcuts = new LinkedList<Shortcut>();
     316        for(String s : Main.pref.getAllPrefixKeys("shortcut.entry.")) {
     317            shortcuts.add(new Shortcut(s));
     318        }
     319        for(Shortcut sc : shortcuts) {
    318320            if (sc.getAssignedUser()) {
    319321                registerShortcut(sc);
    320322            }
    321             i++;
    322             p = Main.pref.get("shortcut.shortcut."+i, null);
    323323        }
    324324        // Shortcuts at their default values
    325         i = 0;
    326         p = Main.pref.get("shortcut.shortcut."+i, null);
    327         while (p != null) {
    328             Shortcut sc = new Shortcut(p);
     325        for(Shortcut sc : shortcuts) {
    329326            if (!sc.getAssignedUser() && sc.getAssignedDefault()) {
    330327                registerShortcut(sc);
    331328            }
    332             i++;
    333             p = Main.pref.get("shortcut.shortcut."+i, null);
    334329        }
    335330        // Shortcuts that were automatically moved
    336         i = 0;
    337         p = Main.pref.get("shortcut.shortcut."+i, null);
    338         while (p != null) {
    339             Shortcut sc = new Shortcut(p);
     331        for(Shortcut sc : shortcuts) {
    340332            if (!sc.getAssignedUser() && !sc.getAssignedDefault()) {
    341333                registerShortcut(sc);
    342334            }
    343             i++;
    344             p = Main.pref.get("shortcut.shortcut."+i, null);
    345         }
     335        }
     336    }
     337
     338    private static int getGroupModifier(int group) {
     339        Integer m = groups.get(group);
     340        if(m == null)
     341            m = -1;
     342        return m;
    346343    }
    347344
    348345    // shutdown handling
    349346    public static boolean savePrefs() {
    350         //      we save this directly from the preferences pane, so don't overwrite these values here
    351         //      for (int i = GROUP_NONE; i < GROUP__MAX+GROUPS_ALT2; i++) {
    352         //      Main.pref.put("shortcut.groups."+i, Groups.get(i).toString());
    353         //      }
    354347        boolean changed = false;
    355         int i = 0;
    356348        for (Shortcut sc : shortcuts.values()) {
    357             //          TODO: Remove sc.getAssignedUser() when we fixed all internal conflicts
    358349            if (!sc.getAutomatic() && !sc.getReset() && sc.getAssignedUser()) {
    359                 changed = changed | Main.pref.put("shortcut.shortcut."+i, sc.asPrefString());
    360                 i++;
    361             }
    362         }
    363         changed = changed | Main.pref.put("shortcut.shortcut."+i, "");
     350                changed = changed | sc.save();
     351            }
     352        }
    364353        return changed;
    365354    }
     
    413402     * @param modifier to register a {@code ctrl+shift} command, use {@see #SHIFT_DEFAULT}.
    414403     */
     404    @Deprecated
    415405    public static Shortcut registerShortcut(String shortText, String longText, int requestedKey, int requestedGroup, int modifier) {
    416406        return registerShortcut(shortText, longText, requestedKey, requestedGroup, modifier, null);
     
    450440            return sc;
    451441        }
    452         Integer defaultModifier = groups.get(requestedGroup + GROUPS_DEFAULT);
     442        Integer defaultModifier = getGroupModifier(requestedGroup + GROUPS_DEFAULT);
    453443        if(modifier != null) {
    454444            if(modifier == SHIFT_DEFAULT) {
     
    459449        }
    460450        else if (defaultModifier == null) { // garbage in, no shortcut out
    461             defaultModifier = groups.get(GROUP_NONE + GROUPS_DEFAULT);
     451            defaultModifier = getGroupModifier(GROUP_NONE + GROUPS_DEFAULT);
    462452        }
    463453        Shortcut conflictsWith = null;
     
    465455        if (potentialShortcut != null) { // 3 stage conflict handling
    466456            conflictsWith = potentialShortcut;
    467             defaultModifier = groups.get(requestedGroup + GROUPS_ALT1);
     457            defaultModifier = getGroupModifier(requestedGroup + GROUPS_ALT1);
    468458            if (defaultModifier == null) { // garbage in, no shortcurt out
    469                 defaultModifier = groups.get(GROUP_NONE + GROUPS_DEFAULT);
     459                defaultModifier = getGroupModifier(GROUP_NONE + GROUPS_DEFAULT);
    470460            }
    471461            potentialShortcut = findShortcut(requestedKey, defaultModifier);
    472462            if (potentialShortcut != null) {
    473                 defaultModifier = groups.get(requestedGroup + GROUPS_ALT2);
     463                defaultModifier = getGroupModifier(requestedGroup + GROUPS_ALT2);
    474464                if (defaultModifier == null) { // garbage in, no shortcurt out
    475                     defaultModifier = groups.get(GROUP_NONE + GROUPS_DEFAULT);
     465                    defaultModifier = getGroupModifier(GROUP_NONE + GROUPS_DEFAULT);
    476466                }
    477467                potentialShortcut = findShortcut(requestedKey, defaultModifier);
     
    493483        }
    494484
     485        potentialShortcut.saveDefault();
    495486        shortcuts.put(shortText, potentialShortcut);
    496487        return potentialShortcut;
Note: See TracChangeset for help on using the changeset viewer.