Changeset 4897 in josm


Ignore:
Timestamp:
Feb 2, 2012 7:44:03 PM (17 months 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.