Index: /trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/Main.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/Main.java	(revision 1084)
@@ -63,5 +63,5 @@
 import org.openstreetmap.josm.tools.PlatformHookWindows;
 import org.openstreetmap.josm.tools.PlatformHookOsx;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 abstract public class Main {
@@ -204,5 +204,5 @@
 		contentPane.add(toolbar.control, BorderLayout.NORTH);
 
-		contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(ShortCut.registerShortCut("system:help", tr("Help"), KeyEvent.VK_F1, ShortCut.GROUP_DIRECT).getKeyStroke(), "Help");
+		contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(Shortcut.registerShortcut("system:help", tr("Help"), KeyEvent.VK_F1, Shortcut.GROUP_DIRECT).getKeyStroke(), "Help");
 		contentPane.getActionMap().put("Help", menu.help);
 
@@ -440,5 +440,5 @@
 
 	public static boolean breakBecauseUnsavedChanges() {
-		ShortCut.savePrefs();
+		Shortcut.savePrefs();
 		if (map != null) {
 			boolean modified = false;
Index: /trunk/src/org/openstreetmap/josm/actions/AboutAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 1084)
@@ -34,5 +34,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.UrlLabel;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -70,5 +70,5 @@
 
 	public AboutAction() {
-		super(tr("About"), "about", tr("Display the about screen."), ShortCut.registerShortCut("system:about", tr("About"), KeyEvent.VK_F1, ShortCut.GROUP_DIRECT, ShortCut.SHIFT_DEFAULT), true);
+		super(tr("About"), "about", tr("Display the about screen."), Shortcut.registerShortcut("system:about", tr("About"), KeyEvent.VK_F1, Shortcut.GROUP_DIRECT, Shortcut.SHIFT_DEFAULT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AlignInCircleAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/AlignInCircleAction.java	(revision 1084)
@@ -20,5 +20,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -31,5 +31,5 @@
 	public AlignInCircleAction() {
 		super(tr("Align Nodes in Circle"), "aligncircle", tr("Move the selected nodes into a circle."),
-		ShortCut.registerShortCut("tools:aligncircle", tr("Tool: {0}", tr("Align Nodes in Circle")), KeyEvent.VK_O, ShortCut.GROUP_EDIT), true);
+		Shortcut.registerShortcut("tools:aligncircle", tr("Tool: {0}", tr("Align Nodes in Circle")), KeyEvent.VK_O, Shortcut.GROUP_EDIT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java	(revision 1084)
@@ -18,5 +18,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -31,5 +31,5 @@
 	public AlignInLineAction() {
 		super(tr("Align Nodes in Line"), "alignline", tr("Move the selected nodes onto a line."),
-		ShortCut.registerShortCut("tools:alignline", tr("Tool: {0}", tr("Align Nodes in Line")), KeyEvent.VK_L, ShortCut.GROUP_EDIT), true);
+		Shortcut.registerShortcut("tools:alignline", tr("Tool: {0}", tr("Align Nodes in Line")), KeyEvent.VK_L, Shortcut.GROUP_EDIT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 1084)
@@ -15,5 +15,5 @@
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.layer.Layer;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -47,5 +47,5 @@
     public AutoScaleAction(String mode) {
         super(tr("Zoom to {0}", tr(mode)), "dialogs/autoscale/" + mode, tr("Zoom the view to {0}.", tr(mode)),
-				ShortCut.registerShortCut("view:zoom"+mode, tr("View: {0}", tr("Zoom to {0}", tr(mode))), getModeShortcut(mode), ShortCut.GROUP_EDIT), true);
+				Shortcut.registerShortcut("view:zoom"+mode, tr("View: {0}", tr("Zoom to {0}", tr(mode))), getModeShortcut(mode), Shortcut.GROUP_EDIT), true);
         String modeHelp = Character.toUpperCase(mode.charAt(0)) + mode.substring(1);
         putValue("help", "Action/AutoScale/" + modeHelp);
Index: /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 1084)
@@ -40,5 +40,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Pair;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -51,5 +51,5 @@
 	public CombineWayAction() {
 		super(tr("Combine Way"), "combineway", tr("Combine several ways into one."),
-		ShortCut.registerShortCut("tools:combineway", tr("Tool: {0}", tr("Combine Way")), KeyEvent.VK_C, ShortCut.GROUP_EDIT), true);
+		Shortcut.registerShortcut("tools:combineway", tr("Tool: {0}", tr("Combine Way")), KeyEvent.VK_C, Shortcut.GROUP_EDIT), true);
 		DataSet.selListeners.add(this);
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/CopyAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 1084)
@@ -24,5 +24,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public final class CopyAction extends JosmAction implements SelectionChangedListener {
@@ -33,5 +33,5 @@
 		super(tr("Copy"), "copy",
 				tr("Copy selected objects to paste buffer."),
-				ShortCut.registerShortCut("system:copy", tr("Edit: {0}", tr("Copy")), KeyEvent.VK_C, ShortCut.GROUP_MENU), true);
+				Shortcut.registerShortcut("system:copy", tr("Edit: {0}", tr("Copy")), KeyEvent.VK_C, Shortcut.GROUP_MENU), true);
 		setEnabled(false);
 		DataSet.selListeners.add(this);
Index: /trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java	(revision 1084)
@@ -20,5 +20,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -36,5 +36,5 @@
 	public CreateCircleAction() {
 		super(tr("Create Circle"), "createcircle", tr("Create a circle from three selected nodes."),
-		ShortCut.registerShortCut("tools:createcircle", tr("Tool: {0}", tr("Create Circle")), KeyEvent.VK_O, ShortCut.GROUP_EDIT, ShortCut.SHIFT_DEFAULT), true);
+		Shortcut.registerShortcut("tools:createcircle", tr("Tool: {0}", tr("Create Circle")), KeyEvent.VK_O, Shortcut.GROUP_EDIT, Shortcut.SHIFT_DEFAULT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 1084)
@@ -8,5 +8,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public final class DeleteAction extends JosmAction {
@@ -14,5 +14,5 @@
 	public DeleteAction() {
 		super(tr("Delete"), "dialogs/delete", tr("Delete selected objects."),
-		ShortCut.registerShortCut("system:delete", tr("Edit: {0}", tr("Delete")), KeyEvent.VK_DELETE, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("system:delete", tr("Edit: {0}", tr("Delete")), KeyEvent.VK_DELETE, Shortcut.GROUP_DIRECT), true);
 		setEnabled(true);
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/DiskAccessAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DiskAccessAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/DiskAccessAction.java	(revision 1084)
@@ -10,5 +10,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -17,11 +17,11 @@
 abstract public class DiskAccessAction extends JosmAction {
 
-	public DiskAccessAction(String name, String iconName, String tooltip, ShortCut shortCut) {
-		super(name, iconName, tooltip, shortCut, true);
+	public DiskAccessAction(String name, String iconName, String tooltip, Shortcut shortcut) {
+		super(name, iconName, tooltip, shortcut, true);
 	}
 
 	@Deprecated
-	public DiskAccessAction(String name, String iconName, String tooltip, int shortCut, int modifiers) {
-		super(name, iconName, tooltip, shortCut, modifiers, true);
+	public DiskAccessAction(String name, String iconName, String tooltip, int shortcut, int modifiers) {
+		super(name, iconName, tooltip, shortcut, modifiers, true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/DownloadAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DownloadAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/DownloadAction.java	(revision 1084)
@@ -16,5 +16,5 @@
 import org.openstreetmap.josm.gui.download.DownloadDialog.DownloadTask;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -32,5 +32,5 @@
 	public DownloadAction() {
 		super(tr("Download from OSM ..."), "download", tr("Download map data from the OSM server."),
-		ShortCut.registerShortCut("file:download", tr("File: {0}", tr("Download from OSM ...")), KeyEvent.VK_D, ShortCut.GROUPS_ALT1+ShortCut.GROUP_HOTKEY), true);
+		Shortcut.registerShortcut("file:download", tr("File: {0}", tr("Download from OSM ...")), KeyEvent.VK_D, Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java	(revision 1084)
@@ -13,5 +13,5 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public final class DuplicateAction extends JosmAction implements SelectionChangedListener {
@@ -20,5 +20,5 @@
     	super(tr("Duplicate"), "duplicate",
 			tr("Duplicate selection by copy and immediate paste."),
-			ShortCut.registerShortCut("system:duplicate", tr("Edit: {0}", tr("Duplicate")), KeyEvent.VK_D, ShortCut.GROUP_MENU), true);
+			Shortcut.registerShortcut("system:duplicate", tr("Edit: {0}", tr("Duplicate")), KeyEvent.VK_D, Shortcut.GROUP_MENU), true);
     	setEnabled(false);
 			DataSet.selListeners.add(this);
Index: /trunk/src/org/openstreetmap/josm/actions/ExitAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ExitAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/ExitAction.java	(revision 1084)
@@ -8,5 +8,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -21,5 +21,5 @@
 	public ExitAction() {
 		super(tr("Exit"), "exit", tr("Exit the application."),
-		ShortCut.registerShortCut("system:menuexit", tr("Exit"), KeyEvent.VK_Q, ShortCut.GROUP_MENU), true);
+		Shortcut.registerShortcut("system:menuexit", tr("Exit"), KeyEvent.VK_Q, Shortcut.GROUP_MENU), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java	(revision 1084)
@@ -33,5 +33,5 @@
 import org.openstreetmap.josm.io.GpxWriter;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -46,5 +46,5 @@
 	public GpxExportAction(Layer layer) {
 		super(tr("Export to GPX ..."), "exportgpx", tr("Export the data to GPX file."),
-		ShortCut.registerShortCut("file:exportgpx", tr("Export to GPX ..."), KeyEvent.VK_E, ShortCut.GROUP_MENU));
+		Shortcut.registerShortcut("file:exportgpx", tr("Export to GPX ..."), KeyEvent.VK_E, Shortcut.GROUP_MENU));
 		this.layer = layer;
 	}
Index: unk/src/org/openstreetmap/josm/actions/GroupAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/GroupAction.java	(revision 1083)
+++ 	(revision )
@@ -1,88 +1,0 @@
-// License: GPL. Copyright 2007 by Immanuel Scholz and others
-package org.openstreetmap.josm.actions;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.KeyEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.Icon;
-import javax.swing.JComponent;
-import javax.swing.JMenuItem;
-import javax.swing.JPopupMenu;
-import javax.swing.KeyStroke;
-
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.IconToggleButton;
-import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ShortCutLabel;
-import org.openstreetmap.josm.tools.ImageProvider.OverlayPosition;
-
-
-public class GroupAction extends JosmAction {
-
-	protected final List<Action> actions = new ArrayList<Action>();
-	private int current = -1;
-	private String shortCutName = "";
-
-	private PropertyChangeListener forwardActiveListener = new PropertyChangeListener(){
-		public void propertyChange(PropertyChangeEvent evt) {
-			if (evt.getPropertyName().equals("active"))
-				putValue("active", evt.getNewValue());
-		}
-	};
-
-	protected void setCurrent(int current) {
-		if (this.current != -1)
-			actions.get(this.current).removePropertyChangeListener(forwardActiveListener);
-		actions.get(current).addPropertyChangeListener(forwardActiveListener);
-
-		this.current = current;
-		putValue(SMALL_ICON, ImageProvider.overlay((Icon)actions.get(current).getValue(SMALL_ICON), "overlay/right", OverlayPosition.SOUTHEAST));
-		Object tooltip = actions.get(current).getValue(SHORT_DESCRIPTION);
-		putValue(SHORT_DESCRIPTION, "<html>"+tooltip+" <font size='-2'>"+shortCutName+"</font>&nbsp;</html>");
-	}
-
-	public GroupAction(int shortCut, int modifiers) {
-		String idName = getClass().getName();
-		Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(shortCut, modifiers), idName);
-		Main.contentPane.getActionMap().put(idName, this);
-		shortCutName = ShortCutLabel.name(shortCut, modifiers);
-		Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(shortCut, KeyEvent.SHIFT_DOWN_MASK), idName+".cycle");
-		Main.contentPane.getActionMap().put(idName+".cycle", new AbstractAction(){
-			public void actionPerformed(ActionEvent e) {
-				setCurrent((current+1)%actions.size());
-				actions.get(current).actionPerformed(e);
-			}
-		});
-	}
-
-	public void actionPerformed(ActionEvent e) {
-		if (e.getSource() instanceof IconToggleButton && ((IconToggleButton)e.getSource()).groupbutton) {
-			IconToggleButton b = (IconToggleButton)e.getSource();
-			b.setSelected(!b.isSelected());
-			openPopup(b);
-		} else
-			actions.get(current).actionPerformed(e);
-	}
-
-	private void openPopup(IconToggleButton b) {
-		JPopupMenu popup = new JPopupMenu();
-		for (int i = 0; i < actions.size(); ++i) {
-			final int j = i;
-			JMenuItem item = new JMenuItem(actions.get(i));
-			item.addActionListener(new ActionListener(){
-				public void actionPerformed(ActionEvent e) {
-					setCurrent(j);
-				}
-			});
-			popup.add(item);
-		}
-		popup.show(b, b.getWidth(), 0);
-	}
-}
Index: /trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java	(revision 1084)
@@ -14,5 +14,5 @@
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.tools.OpenBrowser;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class HistoryInfoAction extends JosmAction {
@@ -20,5 +20,5 @@
 	public HistoryInfoAction() {
 		super(tr("OSM History Information"), "about",tr("Display history information about OSM ways or nodes."),
-		ShortCut.registerShortCut("core:history", tr("OSM History Information"), KeyEvent.VK_H, ShortCut.GROUP_HOTKEY), true);
+		Shortcut.registerShortcut("core:history", tr("OSM History Information"), KeyEvent.VK_H, Shortcut.GROUP_HOTKEY), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 1084)
@@ -23,10 +23,10 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class JoinNodeWayAction extends JosmAction {
 	public JoinNodeWayAction() {
 	    super(tr("Join node to way"), "joinnodeway", tr("Join a node into the nearest way segments"),
-			ShortCut.registerShortCut("tools:joinnodeway", tr("Tool: {0}", tr("Join node to way")), KeyEvent.VK_J, ShortCut.GROUP_EDIT), true);
+			Shortcut.registerShortcut("tools:joinnodeway", tr("Tool: {0}", tr("Join node to way")), KeyEvent.VK_J, Shortcut.GROUP_EDIT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/JosmAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 1084)
@@ -12,5 +12,5 @@
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -26,10 +26,10 @@
 
 	@Deprecated
-	public KeyStroke shortCut;
-	protected ShortCut sc;
+	public KeyStroke shortcut;
+	protected Shortcut sc;
 
-	public ShortCut getShortCut() {
+	public Shortcut getShortcut() {
 		if (sc == null) {
-			sc = ShortCut.registerShortCut("core:none", "No Shortcut", 0, ShortCut.GROUP_NONE);
+			sc = Shortcut.registerShortcut("core:none", "No Shortcut", 0, Shortcut.GROUP_NONE);
 			sc.setAutomatic(); // as this shortcut is shared by all action that don't want to have a shortcut,
 			                   // we shouldn't allow the user to change it...
@@ -39,16 +39,16 @@
 
 	@Deprecated
-	public JosmAction(String name, String iconName, String tooltip, int shortCut, int modifier, boolean register) {
+	public JosmAction(String name, String iconName, String tooltip, int shortcut, int modifier, boolean register) {
 		super(name, iconName == null ? null : ImageProvider.get(iconName));
 		setHelpId();
-		if (shortCut != 0) {
-			int group = ShortCut.GROUP_LAYER; //GROUP_NONE;
+		if (shortcut != 0) {
+			int group = Shortcut.GROUP_LAYER; //GROUP_NONE;
 			if (((modifier & InputEvent.CTRL_MASK) != 0) || ((modifier & InputEvent.CTRL_DOWN_MASK) != 0)) {
-				group = ShortCut.GROUP_MENU;
+				group = Shortcut.GROUP_MENU;
 			} else if (modifier == 0) {
-				group = ShortCut.GROUP_EDIT;
+				group = Shortcut.GROUP_EDIT;
 			}
-			sc = ShortCut.registerShortCut("auto:"+name, name, shortCut, group);
-			this.shortCut = sc.getKeyStroke();
+			sc = Shortcut.registerShortcut("auto:"+name, name, shortcut, group);
+			this.shortcut = sc.getKeyStroke();
 			Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(sc.getKeyStroke(), name);
 			Main.contentPane.getActionMap().put(name, this);
@@ -69,5 +69,5 @@
 	 * tooltip - a longer description of the action that will be displayed in the tooltip. Please note
 	 *           that html is not supported for menu action on some platforms
-	 * shortCut - a ready-created shortcut object or null if you don't want a shortcut. But you always
+	 * shortcut - a ready-created shortcut object or null if you don't want a shortcut. But you always
 	 *            do want a shortcut, remember you can alway register it with group=none, so you
 	 *            won't be assigned a shurtcut unless the user configures one. If you pass null here,
@@ -75,10 +75,10 @@
 	 * register - register this action for the toolbar preferences?
 	 */
-	public JosmAction(String name, String iconName, String tooltip, ShortCut shortCut, boolean register) {
+	public JosmAction(String name, String iconName, String tooltip, Shortcut shortcut, boolean register) {
 		super(name, iconName == null ? null : ImageProvider.get(iconName));
 		setHelpId();
-		sc = shortCut;
+		sc = shortcut;
 		if (sc != null) {
-			this.shortCut = sc.getKeyStroke();
+			this.shortcut = sc.getKeyStroke();
 			Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(sc.getKeyStroke(), name);
 			Main.contentPane.getActionMap().put(name, this);
@@ -91,5 +91,5 @@
 
 	public void destroy() {
-		if (shortCut != null) {
+		if (shortcut != null) {
 			Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(sc.getKeyStroke());
 			Main.contentPane.getActionMap().remove(sc.getKeyStroke());
Index: /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 1084)
@@ -40,5 +40,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Pair;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 
@@ -54,5 +54,5 @@
 	public MergeNodesAction() {
 		super(tr("Merge Nodes"), "mergenodes", tr("Merge nodes into the oldest one."),
-		ShortCut.registerShortCut("tools:mergenodes", tr("Tool: {0}", tr("Merge Nodes")), KeyEvent.VK_M, ShortCut.GROUP_EDIT), true);
+		Shortcut.registerShortcut("tools:mergenodes", tr("Tool: {0}", tr("Merge Nodes")), KeyEvent.VK_M, Shortcut.GROUP_EDIT), true);
 		DataSet.selListeners.add(this);
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/MoveAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 1084)
@@ -17,5 +17,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.visitor.AllNodesVisitor;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -31,18 +31,18 @@
 	// any better idea?
 	private static Object calltosupermustbefirststatementinconstructor(Direction dir, boolean text) {
-		ShortCut sc;
+		Shortcut sc;
 		String directiontext;
 		if        (dir == Direction.UP)   {
 			directiontext = tr("up");
-			sc = ShortCut.registerShortCut("core:moveup",    tr("Move objects {0}", directiontext), KeyEvent.VK_UP,    ShortCut.GROUPS_ALT1+ShortCut.GROUP_DIRECT);
+			sc = Shortcut.registerShortcut("core:moveup",    tr("Move objects {0}", directiontext), KeyEvent.VK_UP,    Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT);
 		} else if (dir == Direction.DOWN)  {
 			directiontext = tr("down");
-			sc = ShortCut.registerShortCut("core:movedown",  tr("Move objects {0}", directiontext), KeyEvent.VK_DOWN,  ShortCut.GROUPS_ALT1+ShortCut.GROUP_DIRECT);
+			sc = Shortcut.registerShortcut("core:movedown",  tr("Move objects {0}", directiontext), KeyEvent.VK_DOWN,  Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT);
 		} else if (dir == Direction.LEFT)  {
 			directiontext = tr("left");
-			sc = ShortCut.registerShortCut("core:moveleft",  tr("Move objects {0}", directiontext), KeyEvent.VK_LEFT,  ShortCut.GROUPS_ALT1+ShortCut.GROUP_DIRECT);
+			sc = Shortcut.registerShortcut("core:moveleft",  tr("Move objects {0}", directiontext), KeyEvent.VK_LEFT,  Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT);
 		} else { //dir == Direction.RIGHT) {
 			directiontext = tr("right");
-			sc = ShortCut.registerShortCut("core:moveright", tr("Move objects {0}", directiontext), KeyEvent.VK_RIGHT, ShortCut.GROUPS_ALT1+ShortCut.GROUP_DIRECT);
+			sc = Shortcut.registerShortcut("core:moveright", tr("Move objects {0}", directiontext), KeyEvent.VK_RIGHT, Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT);
 		}
 		if (text) {
@@ -56,5 +56,5 @@
 		super(tr("Move {0}", calltosupermustbefirststatementinconstructor(dir, true)), null,
 		      tr("Moves Objects {0}", calltosupermustbefirststatementinconstructor(dir, true)),
-		      (ShortCut)calltosupermustbefirststatementinconstructor(dir, false), true);
+		      (Shortcut)calltosupermustbefirststatementinconstructor(dir, false), true);
 		myDirection = dir;
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/NewAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/NewAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/NewAction.java	(revision 1084)
@@ -10,5 +10,5 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class NewAction extends JosmAction {
@@ -16,5 +16,5 @@
 	public NewAction() {
 		super(tr("New"), "new", tr("Create a new map."),
-		ShortCut.registerShortCut("system:new", tr("File: {0}", tr("New")), KeyEvent.VK_N, ShortCut.GROUP_MENU), true);
+		Shortcut.registerShortcut("system:new", tr("File: {0}", tr("New")), KeyEvent.VK_N, Shortcut.GROUP_MENU), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/OpenAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenAction.java	(revision 1084)
@@ -25,5 +25,5 @@
 import org.openstreetmap.josm.io.OsmReader;
 import org.xml.sax.SAXException;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -40,5 +40,5 @@
 	public OpenAction() {
 		super(tr("Open ..."), "open", tr("Open a file."),
-		ShortCut.registerShortCut("system:open", tr("File: {0}", tr("Open ...")), KeyEvent.VK_O, ShortCut.GROUP_MENU));
+		Shortcut.registerShortcut("system:open", tr("File: {0}", tr("Open ...")), KeyEvent.VK_O, Shortcut.GROUP_MENU));
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 1084)
@@ -25,5 +25,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.tools.DontShowAgainInfo;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -42,7 +42,7 @@
             "ortho", 
             tr("Move nodes so all angles are 0/90/180/270deg"),
-            ShortCut.registerShortCut("tools:orthogonalize", tr("Tool: {0}", tr("Orthogonalize")), 
+            Shortcut.registerShortcut("tools:orthogonalize", tr("Tool: {0}", tr("Orthogonalize")), 
             KeyEvent.VK_Q, 
-            ShortCut.GROUP_EDIT), true);
+            Shortcut.GROUP_EDIT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/PasteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 1084)
@@ -24,5 +24,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.coor.EastNorth;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public final class PasteAction extends JosmAction {
@@ -30,5 +30,5 @@
     public PasteAction() {
     	super(tr("Paste"), "paste", tr("Paste contents of paste buffer."),
-			ShortCut.registerShortCut("system:paste", tr("Edit: {0}", tr("Paste")), KeyEvent.VK_V, ShortCut.GROUP_MENU), true);
+			Shortcut.registerShortcut("system:paste", tr("Edit: {0}", tr("Paste")), KeyEvent.VK_V, Shortcut.GROUP_MENU), true);
 			setEnabled(false);
     }
Index: /trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java	(revision 1084)
@@ -20,5 +20,5 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public final class PasteTagsAction extends JosmAction implements SelectionChangedListener {
@@ -27,5 +27,5 @@
 		super(tr("Paste Tags"), "pastetags",
 			tr("Apply tags of contents of paste buffer to all selected items."),
-			ShortCut.registerShortCut("system:pastestyle", tr("Edit: {0}", tr("Paste Tags")), KeyEvent.VK_V, ShortCut.GROUP_MENU, ShortCut.SHIFT_DEFAULT), true);
+			Shortcut.registerShortcut("system:pastestyle", tr("Edit: {0}", tr("Paste Tags")), KeyEvent.VK_V, Shortcut.GROUP_MENU, Shortcut.SHIFT_DEFAULT), true);
 		DataSet.selListeners.add(this);
 		copyAction.addListener(this);
Index: /trunk/src/org/openstreetmap/josm/actions/PreferencesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PreferencesAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/PreferencesAction.java	(revision 1084)
@@ -16,5 +16,5 @@
 import org.openstreetmap.josm.gui.preferences.PreferenceDialog;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -30,5 +30,5 @@
 	public PreferencesAction() {
 		super(tr("Preferences ..."), "preference", tr("Open a preferences page for global settings."),
-		ShortCut.registerShortCut("system:preferences", tr("Preferences"), KeyEvent.VK_F12, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("system:preferences", tr("Preferences"), KeyEvent.VK_F12, Shortcut.GROUP_DIRECT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/RedoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/RedoAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/RedoAction.java	(revision 1084)
@@ -8,5 +8,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -22,5 +22,5 @@
 	public RedoAction() {
 		super(tr("Redo"), "redo", tr("Redo the last undone action."),
-		ShortCut.registerShortCut("system:redo", tr("Edit: {0}", tr("Redo")), KeyEvent.VK_Y, ShortCut.GROUP_MENU), true);
+		Shortcut.registerShortcut("system:redo", tr("Edit: {0}", tr("Redo")), KeyEvent.VK_Y, Shortcut.GROUP_MENU), true);
 		setEnabled(false);
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 1084)
@@ -24,5 +24,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public final class ReverseWayAction extends JosmAction {
@@ -30,5 +30,5 @@
 	public ReverseWayAction() {
 		super(tr("Reverse ways"), "wayflip", tr("Reverse the direction of all selected ways."),
-		ShortCut.registerShortCut("tools:reverse", tr("Tool: {0}", tr("Reverse ways")), KeyEvent.VK_R, ShortCut.GROUP_EDIT), true);
+		Shortcut.registerShortcut("tools:reverse", tr("Tool: {0}", tr("Reverse ways")), KeyEvent.VK_R, Shortcut.GROUP_EDIT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/SaveAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SaveAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/SaveAction.java	(revision 1084)
@@ -10,5 +10,5 @@
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -25,5 +25,5 @@
 	public SaveAction(Layer layer) {
 		super(tr("Save"), "save", tr("Save the current data."),
-		ShortCut.registerShortCut("system:save", tr("File: {0}", tr("Save")), KeyEvent.VK_S, ShortCut.GROUP_MENU), layer);
+		Shortcut.registerShortcut("system:save", tr("File: {0}", tr("Save")), KeyEvent.VK_S, Shortcut.GROUP_MENU), layer);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 1084)
@@ -22,5 +22,5 @@
 import org.openstreetmap.josm.io.OsmWriter;
 import org.openstreetmap.josm.io.GpxWriter;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public abstract class SaveActionBase extends DiskAccessAction {
@@ -28,12 +28,12 @@
 	private Layer layer;
 
-	public SaveActionBase(String name, String iconName, String tooltip, ShortCut shortCut, Layer layer) {
-		super(name, iconName, tooltip, shortCut);
+	public SaveActionBase(String name, String iconName, String tooltip, Shortcut shortcut, Layer layer) {
+		super(name, iconName, tooltip, shortcut);
 		this.layer = layer;
 	}
 
 	@Deprecated
-	public SaveActionBase(String name, String iconName, String tooltip, int shortCut, int modifiers, Layer layer) {
-		super(name, iconName, tooltip, shortCut, modifiers);
+	public SaveActionBase(String name, String iconName, String tooltip, int shortcut, int modifiers, Layer layer) {
+		super(name, iconName, tooltip, shortcut, modifiers);
 		this.layer = layer;
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/SaveAsAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SaveAsAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/SaveAsAction.java	(revision 1084)
@@ -8,5 +8,5 @@
 
 import org.openstreetmap.josm.gui.layer.Layer;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -23,5 +23,5 @@
 	public SaveAsAction(Layer layer) {
 		super(tr("Save as ..."), "save_as", tr("Save the current data to a new file."),
-		ShortCut.registerShortCut("system:saveas", tr("File: {0}", tr("Save as ...")), KeyEvent.VK_S, ShortCut.GROUP_MENU, ShortCut.SHIFT_DEFAULT), layer);
+		Shortcut.registerShortcut("system:saveas", tr("File: {0}", tr("Save as ...")), KeyEvent.VK_S, Shortcut.GROUP_MENU, Shortcut.SHIFT_DEFAULT), layer);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/SelectAllAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SelectAllAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/SelectAllAction.java	(revision 1084)
@@ -8,5 +8,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class SelectAllAction extends JosmAction {
@@ -14,5 +14,5 @@
 	public SelectAllAction() {
 		super(tr("Select All"),"selectall", tr("Select all undeleted objects in the data layer. This selects incomplete objects too."),
-		ShortCut.registerShortCut("system:selectall", tr("Edit: {0}", tr("Select All")), KeyEvent.VK_A, ShortCut.GROUP_MENU), true);
+		Shortcut.registerShortcut("system:selectall", tr("Edit: {0}", tr("Select All")), KeyEvent.VK_A, Shortcut.GROUP_MENU), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 1084)
@@ -33,5 +33,5 @@
 import org.openstreetmap.josm.data.osm.visitor.NameVisitor;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -52,5 +52,5 @@
 	public SplitWayAction() {
 		super(tr("Split Way"), "splitway", tr("Split a way at the selected node."),
-		ShortCut.registerShortCut("tools:splitway", tr("Tool: {0}", tr("Split Way")), KeyEvent.VK_P, ShortCut.GROUP_EDIT), true);
+		Shortcut.registerShortcut("tools:splitway", tr("Tool: {0}", tr("Split Way")), KeyEvent.VK_P, Shortcut.GROUP_EDIT), true);
 		DataSet.selListeners.add(this);
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/ToggleGPXLinesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ToggleGPXLinesAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/ToggleGPXLinesAction.java	(revision 1084)
@@ -8,5 +8,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class ToggleGPXLinesAction extends JosmAction {
@@ -14,5 +14,5 @@
 	public ToggleGPXLinesAction() {
 		super(tr("Toggle GPX Lines"), "gps-lines", tr("Toggles the global setting ''{0}''.", tr("Draw lines between raw gps points.")),
-		ShortCut.registerShortCut("view:gpxlines", tr("View: {0}", tr("Toggle GPX Lines")), KeyEvent.VK_X, ShortCut.GROUP_MENU), true);
+		Shortcut.registerShortcut("view:gpxlines", tr("View: {0}", tr("Toggle GPX Lines")), KeyEvent.VK_X, Shortcut.GROUP_MENU), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 1084)
@@ -24,5 +24,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -45,5 +45,5 @@
 	public UnGlueAction() {
 		super(tr("UnGlue Ways"), "unglueways", tr("Duplicate nodes that are used by multiple ways."),
-		ShortCut.registerShortCut("tools:unglue", tr("Tool: {0}", tr("UnGlue Ways")), KeyEvent.VK_G, ShortCut.GROUP_EDIT), true);
+		Shortcut.registerShortcut("tools:unglue", tr("Tool: {0}", tr("UnGlue Ways")), KeyEvent.VK_G, Shortcut.GROUP_EDIT), true);
 		//DataSet.selListeners.add(this);
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/UndoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UndoAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/UndoAction.java	(revision 1084)
@@ -8,5 +8,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -22,5 +22,5 @@
 	public UndoAction() {
 		super(tr("Undo"), "undo", tr("Undo the last action."),
-		ShortCut.registerShortCut("system:undo", tr("Edit: {0}", tr("Undo")), KeyEvent.VK_Z, ShortCut.GROUP_MENU), true);
+		Shortcut.registerShortcut("system:undo", tr("Edit: {0}", tr("Undo")), KeyEvent.VK_Z, Shortcut.GROUP_MENU), true);
 		setEnabled(false);
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/UnselectAllAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UnselectAllAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/UnselectAllAction.java	(revision 1084)
@@ -9,5 +9,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class UnselectAllAction extends JosmAction {
@@ -15,5 +15,5 @@
 	public UnselectAllAction() {
 		super(tr("Unselect All"), "unselectall", tr("Unselect all objects."),
-		ShortCut.registerShortCut("edit:unselectall", tr("Edit: {0}", tr("Unselect All")), KeyEvent.VK_U, ShortCut.GROUP_EDIT), true);
+		Shortcut.registerShortcut("edit:unselectall", tr("Edit: {0}", tr("Unselect All")), KeyEvent.VK_U, Shortcut.GROUP_EDIT), true);
 		// this is not really GROUP_EDIT, but users really would complain if the yhad to reconfigure because we put
 		// the correct group in
@@ -21,6 +21,6 @@
 		// Add extra shortcut C-S-a
 		Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-		ShortCut.registerShortCut("edit:unselectallfocus", tr("Edit: {0}", tr("Unselect All (Focus)")),
-		KeyEvent.VK_A, ShortCut.GROUP_MENU, ShortCut.SHIFT_DEFAULT).getKeyStroke(),
+		Shortcut.registerShortcut("edit:unselectallfocus", tr("Edit: {0}", tr("Unselect All (Focus)")),
+		KeyEvent.VK_A, Shortcut.GROUP_MENU, Shortcut.SHIFT_DEFAULT).getKeyStroke(),
 		tr("Unselect All"));
 
@@ -32,6 +32,6 @@
 		 */
 		Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-		ShortCut.registerShortCut("edit:unselectallescape", tr("Edit: {0}", tr("Unselect All (Escape)")),
-		KeyEvent.VK_ESCAPE, ShortCut.GROUP_DIRECT).getKeyStroke(),
+		Shortcut.registerShortcut("edit:unselectallescape", tr("Edit: {0}", tr("Unselect All (Escape)")),
+		KeyEvent.VK_ESCAPE, Shortcut.GROUP_DIRECT).getKeyStroke(),
 		tr("Unselect All"));
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 1084)
@@ -23,5 +23,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.xml.sax.SAXException;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -61,5 +61,5 @@
 	public UploadAction() {
 		super(tr("Upload to OSM ..."), "upload", tr("Upload all changes to the OSM server."),
-		ShortCut.registerShortCut("file:upload", tr("File: {0}", tr("Upload to OSM ...")), KeyEvent.VK_U, ShortCut.GROUPS_ALT1+ShortCut.GROUP_HOTKEY), true);
+		Shortcut.registerShortcut("file:upload", tr("File: {0}", tr("Upload to OSM ...")), KeyEvent.VK_U, Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY), true);
 
 		/**
Index: /trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java	(revision 1084)
@@ -8,5 +8,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public final class ZoomInAction extends JosmAction {
@@ -14,5 +14,5 @@
 	public ZoomInAction() {
 		super(tr("Zoom in"), "dialogs/zoomin", tr("Zoom in"),
-		ShortCut.registerShortCut("view:zoomin", tr("View: {0}", tr("Zoom in")), KeyEvent.VK_PLUS, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("view:zoomin", tr("View: {0}", tr("Zoom in")), KeyEvent.VK_PLUS, Shortcut.GROUP_DIRECT), true);
 		setEnabled(true);
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java	(revision 1084)
@@ -8,5 +8,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public final class ZoomOutAction extends JosmAction {
@@ -14,5 +14,5 @@
 	public ZoomOutAction() {
 		super(tr("Zoom out"), "dialogs/zoomout", tr("Zoom out"),
-		ShortCut.registerShortCut("view:zoomout", tr("View: {0}", tr("Zoom out")), KeyEvent.VK_MINUS, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("view:zoomout", tr("View: {0}", tr("Zoom out")), KeyEvent.VK_MINUS, Shortcut.GROUP_DIRECT), true);
 		setEnabled(true);
 	}
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java	(revision 1084)
@@ -11,5 +11,5 @@
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.tools.AudioPlayer;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class AudioBackAction extends JosmAction {
@@ -19,5 +19,5 @@
 	public AudioBackAction() {
 		super(tr("Back"), "audio-back", tr("Jump back."),
-		ShortCut.registerShortCut("audio:back", tr("Audio: {0}", tr("Back")), KeyEvent.VK_F6, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("audio:back", tr("Audio: {0}", tr("Back")), KeyEvent.VK_F6, Shortcut.GROUP_DIRECT), true);
 		try {
 			amount = - Double.parseDouble(Main.pref.get("audio.forwardbackamount","10.0"));
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioFastSlowAction.java	(revision 1084)
@@ -7,5 +7,5 @@
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.tools.AudioPlayer;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 abstract public class AudioFastSlowAction extends JosmAction {
@@ -13,5 +13,5 @@
 	private double multiplier;
 
-	public AudioFastSlowAction(String name, String iconName, String tooltip, ShortCut shortcut, boolean fast) {
+	public AudioFastSlowAction(String name, String iconName, String tooltip, Shortcut shortcut, boolean fast) {
 		super(name, iconName, tooltip, shortcut, true);
 		try {
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java	(revision 1084)
@@ -3,5 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 import java.awt.event.KeyEvent;
@@ -11,5 +11,5 @@
 	public AudioFasterAction() {
 		super(tr("Faster"), "audio-faster", tr("Faster Forward"),
-		ShortCut.registerShortCut("audio:faster", tr("Audio: {0}", tr("Faster")), KeyEvent.VK_F9, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("audio:faster", tr("Audio: {0}", tr("Faster")), KeyEvent.VK_F9, Shortcut.GROUP_DIRECT), true);
 	}
 }
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java	(revision 1084)
@@ -11,5 +11,5 @@
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.tools.AudioPlayer;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class AudioFwdAction extends JosmAction {
@@ -19,5 +19,5 @@
 	public AudioFwdAction() {
 		super(tr("Forward"), "audio-fwd", tr("Jump forward"),
-		ShortCut.registerShortCut("audio:forward", tr("Audio: {0}", tr("Forward")), KeyEvent.VK_F7, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("audio:forward", tr("Audio: {0}", tr("Forward")), KeyEvent.VK_F7, Shortcut.GROUP_DIRECT), true);
 		try {
 			amount = Double.parseDouble(Main.pref.get("audio.forwardbackamount","10.0"));
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java	(revision 1084)
@@ -9,5 +9,5 @@
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class AudioNextAction extends JosmAction {
@@ -15,5 +15,5 @@
 	public AudioNextAction() {
 		super(tr("Next Marker"), "audio-next", tr("Play next marker."),
-		ShortCut.registerShortCut("audio:next", tr("Audio: {0}", tr("Next Marker")), KeyEvent.VK_F8, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("audio:next", tr("Audio: {0}", tr("Next Marker")), KeyEvent.VK_F8, Shortcut.GROUP_DIRECT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java	(revision 1084)
@@ -11,5 +11,5 @@
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.tools.AudioPlayer;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class AudioPlayPauseAction extends JosmAction {
@@ -17,5 +17,5 @@
 	public AudioPlayPauseAction() {
 		super(tr("Play/pause"), "audio-playpause", tr("Play/pause audio."),
-		ShortCut.registerShortCut("audio:pause", tr("Audio: {0}", tr("Play/pause")), KeyEvent.VK_PERIOD, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("audio:pause", tr("Audio: {0}", tr("Play/pause")), KeyEvent.VK_PERIOD, Shortcut.GROUP_DIRECT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java	(revision 1084)
@@ -9,5 +9,5 @@
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class AudioPrevAction extends JosmAction {
@@ -15,5 +15,5 @@
 	public AudioPrevAction() {
 		super(tr("Previous Marker"), "audio-prev", tr("Play previous marker."),
-		ShortCut.registerShortCut("audio:prev", tr("Audio: {0}", tr("Previous Marker")), KeyEvent.VK_F5, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("audio:prev", tr("Audio: {0}", tr("Previous Marker")), KeyEvent.VK_F5, Shortcut.GROUP_DIRECT), true);
 	}
 
Index: /trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java	(revision 1084)
@@ -5,5 +5,5 @@
 
 import java.awt.event.KeyEvent;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class AudioSlowerAction extends AudioFastSlowAction {
@@ -11,5 +11,5 @@
 	public AudioSlowerAction() {
 		super(tr("Slower"), "audio-slower", tr("Slower Forward"),
-		ShortCut.registerShortCut("audio:slower", tr("Audio: {0}", tr("Slower")), KeyEvent.VK_F4, ShortCut.GROUP_DIRECT), true);
+		Shortcut.registerShortcut("audio:slower", tr("Audio: {0}", tr("Slower")), KeyEvent.VK_F4, Shortcut.GROUP_DIRECT), true);
 	}
 }
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 1084)
@@ -16,5 +16,5 @@
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -44,5 +44,5 @@
 				"delete",
 				tr("Delete nodes or ways."),
-				ShortCut.registerShortCut("mapmode:delete", tr("Mode: {0}",tr("Delete")), KeyEvent.VK_D, ShortCut.GROUP_EDIT),
+				Shortcut.registerShortcut("mapmode:delete", tr("Mode: {0}",tr("Delete")), KeyEvent.VK_D, Shortcut.GROUP_EDIT),
 				mapFrame,
 				ImageProvider.getCursor("normal", "delete"));
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 1084)
@@ -51,5 +51,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Pair;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -74,10 +74,10 @@
 	public DrawAction(MapFrame mapFrame) {
 		super(tr("Draw"), "node/autonode", tr("Draw nodes"),
-				ShortCut.registerShortCut("mapmode:draw", tr("Mode: {0}", tr("Draw")), KeyEvent.VK_A, ShortCut.GROUP_EDIT),
+				Shortcut.registerShortcut("mapmode:draw", tr("Mode: {0}", tr("Draw")), KeyEvent.VK_A, Shortcut.GROUP_EDIT),
 				mapFrame, getCursor());
 
 		// Add extra shortcut N
 		Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-			ShortCut.registerShortCut("mapmode:drawfocus", tr("Mode: Draw Focus"), KeyEvent.VK_N, ShortCut.GROUP_EDIT).getKeyStroke(), tr("Draw"));
+			Shortcut.registerShortcut("mapmode:drawfocus", tr("Mode: Draw Focus"), KeyEvent.VK_N, Shortcut.GROUP_EDIT).getKeyStroke(), tr("Draw"));
 
 		//putValue("help", "Action/AddNode/Autnode");
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 1084)
@@ -30,5 +30,5 @@
 import org.openstreetmap.josm.gui.layer.MapViewPaintable;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -74,5 +74,5 @@
 	public ExtrudeAction(MapFrame mapFrame) {
 		super(tr("Extrude"), "extrude/extrude", tr("Create areas"),
-				ShortCut.registerShortCut("mapmode:extrude", tr("Mode: {0}", tr("Extrude")), KeyEvent.VK_X, ShortCut.GROUP_EDIT),
+				Shortcut.registerShortcut("mapmode:extrude", tr("Mode: {0}", tr("Extrude")), KeyEvent.VK_X, Shortcut.GROUP_EDIT),
 			mapFrame,
 			getCursor("normal", "selection", Cursor.DEFAULT_CURSOR));
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 1084)
@@ -12,5 +12,5 @@
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -29,6 +29,6 @@
 	 * Constructor for mapmodes without an menu
 	 */
-	public MapMode(String name, String iconName, String tooltip, ShortCut shortCut, MapFrame mapFrame, Cursor cursor) {
-		super(name, "mapmode/"+iconName, tooltip, shortCut, false);
+	public MapMode(String name, String iconName, String tooltip, Shortcut shortcut, MapFrame mapFrame, Cursor cursor) {
+		super(name, "mapmode/"+iconName, tooltip, shortcut, false);
 		this.cursor = cursor;
 		putValue("active", false);
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 1084)
@@ -36,5 +36,5 @@
 import org.openstreetmap.josm.gui.SelectionManager.SelectionEnded;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -86,5 +86,5 @@
 	public SelectAction(MapFrame mapFrame) {
 		super(tr("Select"), "move/move", tr("Select, move and rotate objects"),
-			ShortCut.registerShortCut("mapmode:select", tr("Mode: {0}", tr("Select")), KeyEvent.VK_S, ShortCut.GROUP_EDIT),
+			Shortcut.registerShortcut("mapmode:select", tr("Mode: {0}", tr("Select")), KeyEvent.VK_S, Shortcut.GROUP_EDIT),
 			mapFrame,
 			getCursor("normal", "selection", Cursor.DEFAULT_CURSOR));
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java	(revision 1084)
@@ -13,5 +13,5 @@
 import org.openstreetmap.josm.gui.SelectionManager.SelectionEnded;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -47,5 +47,5 @@
 	public ZoomAction(MapFrame mapFrame) {
 		super(tr("Zoom"), "zoom", tr("Zoom and move map"),
-		ShortCut.registerShortCut("mapmode:zoom", tr("Mode: {0}", tr("Zoom")), KeyEvent.VK_Z, ShortCut.GROUP_EDIT),
+		Shortcut.registerShortcut("mapmode:zoom", tr("Mode: {0}", tr("Zoom")), KeyEvent.VK_Z, Shortcut.GROUP_EDIT),
 		mapFrame, ImageProvider.getCursor("normal", "zoom"));
 		mv = mapFrame.mapView;
Index: /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 1084)
@@ -22,5 +22,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class SearchAction extends JosmAction {
@@ -38,5 +38,5 @@
     public SearchAction() {
         super(tr("Search ..."), "dialogs/search", tr("Search for objects."),
-        ShortCut.registerShortCut("system:find", tr("Search..."), KeyEvent.VK_F, ShortCut.GROUP_HOTKEY), true);
+        Shortcut.registerShortcut("system:find", tr("Search..."), KeyEvent.VK_F, Shortcut.GROUP_HOTKEY), true);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplet.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplet.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplet.java	(revision 1084)
@@ -29,5 +29,5 @@
 import org.openstreetmap.josm.data.ServerSidePreferences;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class MainApplet extends JApplet {
@@ -36,5 +36,5 @@
 		public UploadPreferencesAction() {
 			super(tr("Upload Preferences"), "upload-preferences", tr("Upload the current preferences to the server"),
-			ShortCut.registerShortCut("applet:uploadprefs", tr("Upload Preferences"), KeyEvent.VK_U, ShortCut.GROUP_HOTKEY), true);
+			Shortcut.registerShortcut("applet:uploadprefs", tr("Upload Preferences"), KeyEvent.VK_U, Shortcut.GROUP_HOTKEY), true);
         }
 	    public void actionPerformed(ActionEvent e) {
Index: /trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 1084)
@@ -61,5 +61,5 @@
 import org.openstreetmap.josm.actions.ToggleGPXLinesAction;
 import org.openstreetmap.josm.data.DataSetChecker;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -142,7 +142,7 @@
 	 */
 	public static void add(JMenu menu, JosmAction action) {
-		if (!action.getShortCut().getAutomatic()) {
+		if (!action.getShortcut().getAutomatic()) {
 			JMenuItem menuitem = menu.add(action);
-			KeyStroke ks = action.getShortCut().getKeyStroke();
+			KeyStroke ks = action.getShortcut().getKeyStroke();
 			if (ks != null) {
 				menuitem.setAccelerator(ks);
@@ -157,5 +157,5 @@
 	 */
 	public void add(JMenu menu, int mnemonicKey, String shortName) {
-		ShortCut.registerShortCut("menu:"+shortName, tr("Menu: {0}", menu.getText()), mnemonicKey, ShortCut.GROUP_MNEMONIC).setMnemonic(menu);
+		Shortcut.registerShortcut("menu:"+shortName, tr("Menu: {0}", menu.getText()), mnemonicKey, Shortcut.GROUP_MNEMONIC).setMnemonic(menu);
 		add(menu);
 	}
@@ -204,5 +204,5 @@
 		final JCheckBoxMenuItem wireframe = new JCheckBoxMenuItem(tr("Wireframe view"));
 		wireframe.setSelected(Main.pref.getBoolean("draw.wireframe", false));
-		wireframe.setAccelerator(ShortCut.registerShortCut("menu:view:wireframe", "Toggle Wireframe view", KeyEvent.VK_W, ShortCut.GROUP_MENU).getKeyStroke());
+		wireframe.setAccelerator(Shortcut.registerShortcut("menu:view:wireframe", "Toggle Wireframe view", KeyEvent.VK_W, Shortcut.GROUP_MENU).getKeyStroke());
 		wireframe.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent ev) {
@@ -253,5 +253,5 @@
 		helpMenu.add(check);
 		current = helpMenu.add(help); // why is help not a JosmAction?
-		current.setAccelerator(ShortCut.registerShortCut("system:help", tr("Help"), KeyEvent.VK_F1, ShortCut.GROUP_DIRECT).getKeyStroke());
+		current.setAccelerator(Shortcut.registerShortcut("system:help", tr("Help"), KeyEvent.VK_F1, Shortcut.GROUP_DIRECT).getKeyStroke());
 		add(helpMenu, about);
 		add(helpMenu, historyinfo);
Index: /trunk/src/org/openstreetmap/josm/gui/MapMover.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 1084)
@@ -15,5 +15,5 @@
 import javax.swing.JComponent;
 import javax.swing.JPanel;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -82,30 +82,30 @@
 		if (contentPane != null) {
 			contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-				ShortCut.registerShortCut("system:movefocusright", tr("Map: {0}", tr("Move right")), KeyEvent.VK_RIGHT, ShortCut.GROUP_HOTKEY).getKeyStroke(),
+				Shortcut.registerShortcut("system:movefocusright", tr("Map: {0}", tr("Move right")), KeyEvent.VK_RIGHT, Shortcut.GROUP_HOTKEY).getKeyStroke(),
 				"MapMover.Zoomer.right");
 			contentPane.getActionMap().put("MapMover.Zoomer.right", new ZoomerAction("right"));
 
 			contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-				ShortCut.registerShortCut("system:movefocusleft", tr("Map: {0}", tr("Move left")), KeyEvent.VK_LEFT, ShortCut.GROUP_HOTKEY).getKeyStroke(),
+				Shortcut.registerShortcut("system:movefocusleft", tr("Map: {0}", tr("Move left")), KeyEvent.VK_LEFT, Shortcut.GROUP_HOTKEY).getKeyStroke(),
 				"MapMover.Zoomer.left");
 			contentPane.getActionMap().put("MapMover.Zoomer.left", new ZoomerAction("left"));
 
 			contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-				ShortCut.registerShortCut("system:movefocusup", tr("Map: {0}", tr("Move up")), KeyEvent.VK_UP, ShortCut.GROUP_HOTKEY).getKeyStroke(),
+				Shortcut.registerShortcut("system:movefocusup", tr("Map: {0}", tr("Move up")), KeyEvent.VK_UP, Shortcut.GROUP_HOTKEY).getKeyStroke(),
 				"MapMover.Zoomer.up");
 			contentPane.getActionMap().put("MapMover.Zoomer.up", new ZoomerAction("up"));
 
 			contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-				ShortCut.registerShortCut("system:movefocusdown", tr("Map: {0}", tr("Move down")), KeyEvent.VK_DOWN, ShortCut.GROUP_HOTKEY).getKeyStroke(),
+				Shortcut.registerShortcut("system:movefocusdown", tr("Map: {0}", tr("Move down")), KeyEvent.VK_DOWN, Shortcut.GROUP_HOTKEY).getKeyStroke(),
 				"MapMover.Zoomer.down");
 			contentPane.getActionMap().put("MapMover.Zoomer.down", new ZoomerAction("down"));
 
 			contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-				ShortCut.registerShortCut("view:zoominalternate", tr("Map: {0}", tr("Zoom in")), KeyEvent.VK_COMMA, ShortCut.GROUP_HOTKEY).getKeyStroke(),
+				Shortcut.registerShortcut("view:zoominalternate", tr("Map: {0}", tr("Zoom in")), KeyEvent.VK_COMMA, Shortcut.GROUP_HOTKEY).getKeyStroke(),
 				"MapMover.Zoomer.in");
 			contentPane.getActionMap().put("MapMover.Zoomer.in", new ZoomerAction(","));
 
 			contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-				ShortCut.registerShortCut("view:zoomoutalternate", tr("Map: {0}", tr("Zoom out")), KeyEvent.VK_PERIOD, ShortCut.GROUP_HOTKEY).getKeyStroke(),
+				Shortcut.registerShortcut("view:zoomoutalternate", tr("Map: {0}", tr("Zoom out")), KeyEvent.VK_PERIOD, Shortcut.GROUP_HOTKEY).getKeyStroke(),
 				"MapMover.Zoomer.out");
 			contentPane.getActionMap().put("MapMover.Zoomer.out", new ZoomerAction("."));
Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 1084)
@@ -110,21 +110,21 @@
 				JosmAction mv;
 				mv = new MoveAction(MoveAction.Direction.UP);
-				if (mv.getShortCut() != null) {
-					Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(mv.getShortCut().getKeyStroke(), "UP");
+				if (mv.getShortcut() != null) {
+					Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(mv.getShortcut().getKeyStroke(), "UP");
 					Main.contentPane.getActionMap().put("UP", mv);
 				}
 				mv = new MoveAction(MoveAction.Direction.DOWN);
-				if (mv.getShortCut() != null) {
-					Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(mv.getShortCut().getKeyStroke(), "DOWN");
+				if (mv.getShortcut() != null) {
+					Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(mv.getShortcut().getKeyStroke(), "DOWN");
 					Main.contentPane.getActionMap().put("DOWN", mv);
 				}
 				mv = new MoveAction(MoveAction.Direction.LEFT);
-				if (mv.getShortCut() != null) {
-					Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(mv.getShortCut().getKeyStroke(), "LEFT");
+				if (mv.getShortcut() != null) {
+					Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(mv.getShortcut().getKeyStroke(), "LEFT");
 					Main.contentPane.getActionMap().put("LEFT", mv);
 				}
 				mv = new MoveAction(MoveAction.Direction.RIGHT);
-				if (mv.getShortCut() != null) {
-					Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(mv.getShortCut().getKeyStroke(), "RIGHT");
+				if (mv.getShortcut() != null) {
+					Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(mv.getShortcut().getKeyStroke(), "RIGHT");
 					Main.contentPane.getActionMap().put("RIGHT", mv);
 				}
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 1084)
@@ -20,5 +20,5 @@
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class CommandStackDialog extends ToggleDialog implements CommandQueueListener {
@@ -29,5 +29,5 @@
 	public CommandStackDialog(final MapFrame mapFrame) {
 		super(tr("Command Stack"), "commandstack", tr("Open a list of all commands (undo buffer)."),
-		ShortCut.registerShortCut("subwindow:commandstack", tr("Toggle: {0}", tr("Command Stack")), KeyEvent.VK_O, ShortCut.GROUP_LAYER), 100);
+		Shortcut.registerShortcut("subwindow:commandstack", tr("Toggle: {0}", tr("Command Stack")), KeyEvent.VK_O, Shortcut.GROUP_LAYER), 100);
 		Main.main.undoRedo.listenerCommands.add(this);
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 1084)
@@ -43,5 +43,5 @@
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.SideButton;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public final class ConflictDialog extends ToggleDialog {
@@ -53,5 +53,5 @@
 	public ConflictDialog() {
 		super(tr("Conflict"), "conflict", tr("Merging conflicts."),
-		ShortCut.registerShortCut("subwindow:conflict", tr("Toggle: {0}", tr("Conflict")), KeyEvent.VK_C, ShortCut.GROUP_LAYER), 100);
+		Shortcut.registerShortcut("subwindow:conflict", tr("Toggle: {0}", tr("Conflict")), KeyEvent.VK_C, Shortcut.GROUP_LAYER), 100);
 		displaylist.setCellRenderer(new OsmPrimitivRenderer());
 		displaylist.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java	(revision 1084)
@@ -38,5 +38,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -89,6 +89,6 @@
 	public HistoryDialog() {
 		super(tr("History"), "history", tr("Display the history of all selected items."),
-		ShortCut.registerShortCut("subwindow:history", tr("Toggle: {0}", tr("History")), KeyEvent.VK_H,
-		ShortCut.GROUP_LAYER, ShortCut.SHIFT_DEFAULT), 150);
+		Shortcut.registerShortcut("subwindow:history", tr("Toggle: {0}", tr("History")), KeyEvent.VK_H,
+		Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150);
 		historyPane.setVisible(false);
 		notLoaded.setVisible(true);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 1084)
@@ -40,5 +40,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ImageProvider.OverlayPosition;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -160,5 +160,5 @@
 	public LayerListDialog(MapFrame mapFrame) {
 		super(tr("Layers"), "layerlist", tr("Open a list of all loaded layers."),
-		ShortCut.registerShortCut("subwindow:layers", tr("Toggle: {0}", tr("Layers")), KeyEvent.VK_L, ShortCut.GROUP_LAYER), 100);
+		Shortcut.registerShortcut("subwindow:layers", tr("Toggle: {0}", tr("Layers")), KeyEvent.VK_L, Shortcut.GROUP_LAYER), 100);
 		instance = new JList(model);
 		listScrollPane = new JScrollPane(instance);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1084)
@@ -64,5 +64,5 @@
 import org.openstreetmap.josm.tools.AutoCompleteComboBox;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -429,6 +429,6 @@
 	public PropertiesDialog(MapFrame mapFrame) {
 		super(tr("Properties/Memberships"), "propertiesdialog", tr("Properties for selected objects."),
-		ShortCut.registerShortCut("subwindow:properies", tr("Toggle: {0}", tr("Properties/Memberships")), KeyEvent.VK_P,
-		ShortCut.GROUP_LAYER, ShortCut.SHIFT_DEFAULT), 150);
+		Shortcut.registerShortcut("subwindow:properies", tr("Toggle: {0}", tr("Properties/Memberships")), KeyEvent.VK_P,
+		Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150);
 
 		// ---------------------------------------
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 1084)
@@ -32,5 +32,5 @@
 import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -57,5 +57,5 @@
 	public RelationListDialog() {
 		super(tr("Relations"), "relationlist", tr("Open a list of all relations."),
-		ShortCut.registerShortCut("subwindow:relations", tr("Toggle: {0}", tr("Relations")), KeyEvent.VK_R, ShortCut.GROUP_LAYER), 150);
+		Shortcut.registerShortcut("subwindow:relations", tr("Toggle: {0}", tr("Relations")), KeyEvent.VK_R, Shortcut.GROUP_LAYER), 150);
 		displaylist.setCellRenderer(new OsmPrimitivRenderer());
 		displaylist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 1084)
@@ -41,5 +41,5 @@
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.SideButton;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -78,5 +78,5 @@
     public SelectionListDialog() {
         super(tr("Current Selection"), "selectionlist", tr("Open a selection list window."),
-        ShortCut.registerShortCut("subwindow:selection", tr("Toggle: {0}", tr("Current Selection")), KeyEvent.VK_T, ShortCut.GROUP_LAYER, ShortCut.SHIFT_DEFAULT), 150);
+        Shortcut.registerShortcut("subwindow:selection", tr("Toggle: {0}", tr("Current Selection")), KeyEvent.VK_T, Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150);
 
         selectionHistory = new LinkedList<Collection<? extends OsmPrimitive>>();
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 1084)
@@ -26,5 +26,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -40,6 +40,6 @@
 		public AbstractButton button;
 
-		private ToggleDialogAction(String name, String iconName, String tooltip, ShortCut shortCut, String prefname) {
-			super(name, iconName, tooltip, shortCut, false);
+		private ToggleDialogAction(String name, String iconName, String tooltip, Shortcut shortcut, String prefname) {
+			super(name, iconName, tooltip, shortcut, false);
 			this.prefname = prefname;
 		}
@@ -63,19 +63,19 @@
 
 	@Deprecated
-	public ToggleDialog(final String name, String iconName, String tooltip, int shortCut, int preferredHeight) {
+	public ToggleDialog(final String name, String iconName, String tooltip, int shortcut, int preferredHeight) {
 		super(new BorderLayout());
 		this.prefName = iconName;
-		ToggleDialogInit(name, iconName, tooltip, ShortCut.registerShortCut("auto:"+name, tooltip, shortCut, ShortCut.GROUP_LAYER), preferredHeight);
+		ToggleDialogInit(name, iconName, tooltip, Shortcut.registerShortcut("auto:"+name, tooltip, shortcut, Shortcut.GROUP_LAYER), preferredHeight);
 	}
 
-	public ToggleDialog(final String name, String iconName, String tooltip, ShortCut shortCut, int preferredHeight) {
+	public ToggleDialog(final String name, String iconName, String tooltip, Shortcut shortcut, int preferredHeight) {
 		super(new BorderLayout());
 		this.prefName = iconName;
-		ToggleDialogInit(name, iconName, tooltip, shortCut, preferredHeight);
+		ToggleDialogInit(name, iconName, tooltip, shortcut, preferredHeight);
 	}
 
-	private void ToggleDialogInit(final String name, String iconName, String tooltip, ShortCut shortCut, int preferredHeight) {
+	private void ToggleDialogInit(final String name, String iconName, String tooltip, Shortcut shortcut, int preferredHeight) {
 		setPreferredSize(new Dimension(330,preferredHeight));
-		action = new ToggleDialogAction(name, "dialogs/"+iconName, tooltip, shortCut, iconName);
+		action = new ToggleDialogAction(name, "dialogs/"+iconName, tooltip, shortcut, iconName);
 		String helpId = "Dialog/"+getClass().getName().substring(getClass().getName().lastIndexOf('.')+1);
 		action.putValue("help", helpId.substring(0, helpId.length()-6));
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 1084)
@@ -24,5 +24,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.User;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -52,5 +52,5 @@
 	public UserListDialog() {
 		super(tr("Authors"), "userlist", tr("Open a list of people working on the selected objects."),
-		ShortCut.registerShortCut("subwindow:authors", tr("Toggle: {0}", tr("Authors")), KeyEvent.VK_A, ShortCut.GROUP_LAYER, ShortCut.SHIFT_DEFAULT), 150);
+		Shortcut.registerShortcut("subwindow:authors", tr("Toggle: {0}", tr("Authors")), KeyEvent.VK_A, Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150);
 
 		data.setColumnIdentifiers(new String[]{tr("Author"),tr("# Objects"),"%"});
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/ShortcutPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/ShortcutPreference.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/ShortcutPreference.java	(revision 1084)
@@ -10,5 +10,5 @@
 
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.gui.preferences.prefJPanel;
 
@@ -37,7 +37,7 @@
 //		private String[] columnNames = new String[]{tr("Action"), tr("Shortcut"), tr("Group"), tr("ID")};
 		private String[] columnNames = new String[]{tr("Action"), tr("Shortcut")};
-		private Collection<ShortCut> data;
+		private Collection<Shortcut> data;
 		public scListModel() {
-			data = ShortCut.listAll();
+			data = Shortcut.listAll();
 		}
 		public int getColumnCount() {
@@ -51,5 +51,5 @@
 		}
 		public Object getValueAt(int row, int col) {
-			ShortCut sc = (ShortCut)data.toArray()[row];
+			Shortcut sc = (Shortcut)data.toArray()[row];
 			if (col == 0) {
 				return sc.getLongText();
@@ -57,19 +57,19 @@
 				return sc.getKeyText();
 			} /*else if (col == 2) {
-				if (sc.getRequestedGroup() == ShortCut.GROUP_NONE) {
+				if (sc.getRequestedGroup() == Shortcut.GROUP_NONE) {
 					return tr("None");
-				} else if (sc.getRequestedGroup() == ShortCut.GROUP_HOTKEY) {
+				} else if (sc.getRequestedGroup() == Shortcut.GROUP_HOTKEY) {
 					return tr("Hotkey");
-				} else if (sc.getRequestedGroup() == ShortCut.GROUP_MENU) {
+				} else if (sc.getRequestedGroup() == Shortcut.GROUP_MENU) {
 					return tr("Menu");
-				} else if (sc.getRequestedGroup() == ShortCut.GROUP_EDIT) {
+				} else if (sc.getRequestedGroup() == Shortcut.GROUP_EDIT) {
 					return tr("Edit");
-				} else if (sc.getRequestedGroup() == ShortCut.GROUP_LAYER) {
+				} else if (sc.getRequestedGroup() == Shortcut.GROUP_LAYER) {
 					return tr("Subwindow");
-				} else if (sc.getRequestedGroup() == ShortCut.GROUP_DIRECT) {
+				} else if (sc.getRequestedGroup() == Shortcut.GROUP_DIRECT) {
 					return tr("Direct");
-				} else if (sc.getRequestedGroup() == ShortCut.GROUP_MNEMONIC) {
+				} else if (sc.getRequestedGroup() == Shortcut.GROUP_MNEMONIC) {
 					return tr("Mnemonic");
-				} else if (sc.getRequestedGroup() == ShortCut.GROUP_RESERVED) {
+				} else if (sc.getRequestedGroup() == Shortcut.GROUP_RESERVED) {
 					return tr("System");
 				} else {
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/prefJPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/prefJPanel.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/prefJPanel.java	(revision 1084)
@@ -21,5 +21,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -380,5 +380,5 @@
 			if (!lsm.isSelectionEmpty()) {
 				int row = lsm.getMinSelectionIndex();
-				ShortCut sc = (ShortCut)panel.model.getValueAt(row, -1);
+				Shortcut sc = (Shortcut)panel.model.getValueAt(row, -1);
 				panel.cbDefault.setSelected(!sc.getAssignedUser());
 				panel.cbDisable.setSelected(sc.getKeyStroke() == null);
@@ -419,5 +419,5 @@
 				if (e != null) { // only if we've been called by a user action
 					int row = lsm.getMinSelectionIndex();
-					ShortCut sc = (ShortCut)panel.model.getValueAt(row, -1);
+					Shortcut sc = (Shortcut)panel.model.getValueAt(row, -1);
 					sc.setAssignedUser(!panel.cbDefault.isSelected());
 					if (panel.cbDisable.isSelected()) {
@@ -463,38 +463,38 @@
 	private class bxAction extends javax.swing.AbstractAction {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_EDIT),    Integer.toString( modifInts[bxPrim1.getSelectedIndex()] ));
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1   +ShortCut.GROUP_EDIT),    Integer.toString( modifInts[ bxSec1.getSelectedIndex()] ));
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2   +ShortCut.GROUP_EDIT),    Integer.toString( modifInts[ bxTer1.getSelectedIndex()] ));
-
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_MENU),    Integer.toString( modifInts[bxPrim2.getSelectedIndex()] ));
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1   +ShortCut.GROUP_MENU),    Integer.toString( modifInts[ bxSec2.getSelectedIndex()] ));
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2   +ShortCut.GROUP_MENU),    Integer.toString( modifInts[ bxTer2.getSelectedIndex()] ));
-
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_HOTKEY),  Integer.toString( modifInts[bxPrim3.getSelectedIndex()] ));
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1   +ShortCut.GROUP_HOTKEY),  Integer.toString( modifInts[ bxSec3.getSelectedIndex()] ));
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2   +ShortCut.GROUP_HOTKEY),  Integer.toString( modifInts[ bxTer3.getSelectedIndex()] ));
-
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_LAYER),   Integer.toString( modifInts[bxPrim4.getSelectedIndex()] ));
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1   +ShortCut.GROUP_LAYER),   Integer.toString( modifInts[ bxSec4.getSelectedIndex()] ));
-			Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2   +ShortCut.GROUP_LAYER),   Integer.toString( modifInts[ bxTer4.getSelectedIndex()] ));
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT),    Integer.toString( modifInts[bxPrim1.getSelectedIndex()] ));
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_EDIT),    Integer.toString( modifInts[ bxSec1.getSelectedIndex()] ));
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_EDIT),    Integer.toString( modifInts[ bxTer1.getSelectedIndex()] ));
+
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU),    Integer.toString( modifInts[bxPrim2.getSelectedIndex()] ));
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_MENU),    Integer.toString( modifInts[ bxSec2.getSelectedIndex()] ));
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_MENU),    Integer.toString( modifInts[ bxTer2.getSelectedIndex()] ));
+
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY),  Integer.toString( modifInts[bxPrim3.getSelectedIndex()] ));
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_HOTKEY),  Integer.toString( modifInts[ bxSec3.getSelectedIndex()] ));
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_HOTKEY),  Integer.toString( modifInts[ bxTer3.getSelectedIndex()] ));
+
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER),   Integer.toString( modifInts[bxPrim4.getSelectedIndex()] ));
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_LAYER),   Integer.toString( modifInts[ bxSec4.getSelectedIndex()] ));
+			Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_LAYER),   Integer.toString( modifInts[ bxTer4.getSelectedIndex()] ));
 		}
 	}
 
 	private void initbx() {
-		setBx(bxPrim1, "shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_EDIT));
-		setBx(bxSec1,  "shortcut.groups."+(ShortCut.GROUPS_ALT1   +ShortCut.GROUP_EDIT));
-		setBx(bxTer1,  "shortcut.groups."+(ShortCut.GROUPS_ALT2   +ShortCut.GROUP_EDIT));
-
-		setBx(bxPrim2, "shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_MENU));
-		setBx(bxSec2,  "shortcut.groups."+(ShortCut.GROUPS_ALT1   +ShortCut.GROUP_MENU));
-		setBx(bxTer2,  "shortcut.groups."+(ShortCut.GROUPS_ALT2   +ShortCut.GROUP_MENU));
-
-		setBx(bxPrim3, "shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_HOTKEY));
-		setBx(bxSec3,  "shortcut.groups."+(ShortCut.GROUPS_ALT1   +ShortCut.GROUP_HOTKEY));
-		setBx(bxTer3,  "shortcut.groups."+(ShortCut.GROUPS_ALT2   +ShortCut.GROUP_HOTKEY));
-
-		setBx(bxPrim4, "shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_LAYER));
-		setBx(bxSec4,  "shortcut.groups."+(ShortCut.GROUPS_ALT1   +ShortCut.GROUP_LAYER));
-		setBx(bxTer4,  "shortcut.groups."+(ShortCut.GROUPS_ALT2   +ShortCut.GROUP_LAYER));
+		setBx(bxPrim1, "shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT));
+		setBx(bxSec1,  "shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_EDIT));
+		setBx(bxTer1,  "shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_EDIT));
+
+		setBx(bxPrim2, "shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU));
+		setBx(bxSec2,  "shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_MENU));
+		setBx(bxTer2,  "shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_MENU));
+
+		setBx(bxPrim3, "shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY));
+		setBx(bxSec3,  "shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_HOTKEY));
+		setBx(bxTer3,  "shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_HOTKEY));
+
+		setBx(bxPrim4, "shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER));
+		setBx(bxSec4,  "shortcut.groups."+(Shortcut.GROUPS_ALT1   +Shortcut.GROUP_LAYER));
+		setBx(bxTer4,  "shortcut.groups."+(Shortcut.GROUPS_ALT2   +Shortcut.GROUP_LAYER));
 	}
 	private void setBx(javax.swing.JComboBox bx, String key) {
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHook.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHook.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHook.java	(revision 1084)
@@ -3,5 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 
 import java.io.IOException;
@@ -55,6 +55,6 @@
 
 	/**
-	  * The initShortCutGroups hook will be called by the
-	  * ShortCut class if it detects that there are no
+	  * The initShortcutGroups hook will be called by the
+	  * Shortcut class if it detects that there are no
 	  * groups in teh config file. So that will happen
 	  * once on each JOSM installation only.
@@ -67,9 +67,9 @@
 	  * to register any shortcuts from within.
 	  */
-	public void initShortCutGroups();
+	public void initShortcutGroups();
 
 	/**
-	  * The initSystemShortCuts hook will be called by the
-	  * ShortCut class after the modifier groups have been read
+	  * The initSystemShortcuts hook will be called by the
+	  * Shortcut class after the modifier groups have been read
 	  * from the config, but before any shortcuts are read from
 	  * it or registered from within the application.
@@ -89,5 +89,5 @@
 	  * user to change them.
 	  */
-	public void initSystemShortCuts();
+	public void initSystemShortcuts();
 
 	/**
@@ -102,4 +102,4 @@
 	  * LAFs.
 	  */
-	public String makeTooltip(String name, ShortCut sc);
+	public String makeTooltip(String name, Shortcut sc);
 }
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 1084)
@@ -3,5 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.PlatformHookUnixoid;
@@ -67,165 +67,165 @@
 		Runtime.getRuntime().exec("open " + url);
 	}
-	public void initShortCutGroups() {
-		// Everything but ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_MENU is guesswork.
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_NONE),    Integer.toString(-1));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_HOTKEY),  Integer.toString(KeyEvent.CTRL_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_MENU),    Integer.toString(KeyEvent.META_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_EDIT),    Integer.toString(0));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_LAYER),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_DIRECT),  Integer.toString(0));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_MNEMONIC),Integer.toString(KeyEvent.ALT_DOWN_MASK));
-
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_NONE),       Integer.toString(-1));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_MENU),       Integer.toString(KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_EDIT),       Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
-
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_NONE),       Integer.toString(-1));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_MENU),       Integer.toString(KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_EDIT),       Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
-	}
-	public void initSystemShortCuts() {
+	public void initShortcutGroups() {
+		// Everything but Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU is guesswork.
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_NONE),    Integer.toString(-1));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY),  Integer.toString(KeyEvent.CTRL_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU),    Integer.toString(KeyEvent.META_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT),    Integer.toString(0));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT),  Integer.toString(0));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MNEMONIC),Integer.toString(KeyEvent.ALT_DOWN_MASK));
+
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_NONE),       Integer.toString(-1));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
+
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_NONE),       Integer.toString(-1));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
+	}
+	public void initSystemShortcuts() {
 		// Yeah, it's a long, long list. And people always complain that OSX has no shortcuts.
-		ShortCut.registerSystemCut("apple-reserved-01", "reserved", KeyEvent.VK_SPACE, KeyEvent.META_DOWN_MASK).setAutomatic(); // Show or hide the Spotlight search field (when multiple languages are installed, may rotate through enabled script systems).
-		ShortCut.registerSystemCut("apple-reserved-02", "reserved", KeyEvent.VK_SPACE, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Apple reserved.
-		ShortCut.registerSystemCut("apple-reserved-03", "reserved", KeyEvent.VK_SPACE, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Show the Spotlight search results window (when multiple languages are installed, may rotate through keyboard layouts and input methods within a script).
-		ShortCut.registerSystemCut("apple-reserved-04", "reserved", KeyEvent.VK_SPACE, KeyEvent.META_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK).setAutomatic(); //  | Apple reserved.
-		ShortCut.registerSystemCut("apple-reserved-05", "reserved", KeyEvent.VK_TAB, KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Navigate through controls in a reverse direction. See "Keyboard Focus and Navigation."
-		ShortCut.registerSystemCut("apple-reserved-06", "reserved", KeyEvent.VK_TAB, KeyEvent.META_DOWN_MASK).setAutomatic(); // Move forward to the next most recently used application in a list of open applications.
-		ShortCut.registerSystemCut("apple-reserved-07", "reserved", KeyEvent.VK_TAB, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Move backward through a list of open applications (sorted by recent use).
-		ShortCut.registerSystemCut("apple-reserved-08", "reserved", KeyEvent.VK_TAB, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the next grouping of controls in a dialog or the next table (when Tab moves to the next cell). See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-09", "reserved", KeyEvent.VK_TAB, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Move focus to the previous grouping of controls. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-10", "reserved", KeyEvent.VK_ESCAPE, KeyEvent.META_DOWN_MASK).setAutomatic(); // Open Front Row.
-		ShortCut.registerSystemCut("apple-reserved-11", "reserved", KeyEvent.VK_ESCAPE, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Open the Force Quit dialog.
-		ShortCut.registerSystemCut("apple-reserved-12", "reserved", KeyEvent.VK_F1, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Toggle full keyboard access on or off. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-13", "reserved", KeyEvent.VK_F2, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the menu bar. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-14", "reserved", KeyEvent.VK_F3, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the Dock. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-15", "reserved", KeyEvent.VK_F4, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the active (or next) window. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-16", "reserved", KeyEvent.VK_F4, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Move focus to the previously active window. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-17", "reserved", KeyEvent.VK_F5, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the toolbar. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-18", "reserved", KeyEvent.VK_F5, KeyEvent.META_DOWN_MASK).setAutomatic(); // Turn VoiceOver on or off. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-19", "reserved", KeyEvent.VK_F6, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the first (or next) panel. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-20", "reserved", KeyEvent.VK_F6, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Move focus to the previous panel. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-21", "reserved", KeyEvent.VK_F7, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Temporarily override the current keyboard access mode in windows and dialogs. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-22", "reserved", KeyEvent.VK_F9, 0).setAutomatic(); // Tile or untile all open windows.
-		ShortCut.registerSystemCut("apple-reserved-23", "reserved", KeyEvent.VK_F10, 0).setAutomatic(); // Tile or untile all open windows in the currently active application.
-		ShortCut.registerSystemCut("apple-reserved-24", "reserved", KeyEvent.VK_F11, 0).setAutomatic(); // Hide or show all open windows.
-		ShortCut.registerSystemCut("apple-reserved-25", "reserved", KeyEvent.VK_F12, 0).setAutomatic(); // Hide or display Dashboard.
-		ShortCut.registerSystemCut("apple-reserved-26", "reserved", KeyEvent.VK_DEAD_GRAVE, KeyEvent.META_DOWN_MASK).setAutomatic(); // Activate the next open window in the frontmost application. See "Window Layering."
-		ShortCut.registerSystemCut("apple-reserved-27", "reserved", KeyEvent.VK_DEAD_GRAVE, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Activate the previous open window in the frontmost application. See "Window Layering."
-		ShortCut.registerSystemCut("apple-reserved-28", "reserved", KeyEvent.VK_DEAD_GRAVE, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Move focus to the window drawer.
-		ShortCut.registerSystemCut("apple-reserved-29", "reserved", KeyEvent.VK_MINUS, KeyEvent.META_DOWN_MASK).setAutomatic(); // Decrease the size of the selected item (equivalent to the Smaller command). See "The Format Menu."
-		ShortCut.registerSystemCut("apple-reserved-30", "reserved", KeyEvent.VK_MINUS, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Zoom out when screen zooming is on. See Accessibility Overview.
-
-		ShortCut.registerSystemCut("system:align-left", "reserved", KeyEvent.VK_OPEN_BRACKET, KeyEvent.META_DOWN_MASK); // Left-align a selection (equivalent to the Align Left command). See "The Format Menu."
-		ShortCut.registerSystemCut("system:align-right","reserved", KeyEvent.VK_CLOSE_BRACKET, KeyEvent.META_DOWN_MASK); // Right-align a selection (equivalent to the Align Right command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("apple-reserved-01", "reserved", KeyEvent.VK_SPACE, KeyEvent.META_DOWN_MASK).setAutomatic(); // Show or hide the Spotlight search field (when multiple languages are installed, may rotate through enabled script systems).
+		Shortcut.registerSystemShortcut("apple-reserved-02", "reserved", KeyEvent.VK_SPACE, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Apple reserved.
+		Shortcut.registerSystemShortcut("apple-reserved-03", "reserved", KeyEvent.VK_SPACE, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Show the Spotlight search results window (when multiple languages are installed, may rotate through keyboard layouts and input methods within a script).
+		Shortcut.registerSystemShortcut("apple-reserved-04", "reserved", KeyEvent.VK_SPACE, KeyEvent.META_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK).setAutomatic(); //  | Apple reserved.
+		Shortcut.registerSystemShortcut("apple-reserved-05", "reserved", KeyEvent.VK_TAB, KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Navigate through controls in a reverse direction. See "Keyboard Focus and Navigation."
+		Shortcut.registerSystemShortcut("apple-reserved-06", "reserved", KeyEvent.VK_TAB, KeyEvent.META_DOWN_MASK).setAutomatic(); // Move forward to the next most recently used application in a list of open applications.
+		Shortcut.registerSystemShortcut("apple-reserved-07", "reserved", KeyEvent.VK_TAB, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Move backward through a list of open applications (sorted by recent use).
+		Shortcut.registerSystemShortcut("apple-reserved-08", "reserved", KeyEvent.VK_TAB, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the next grouping of controls in a dialog or the next table (when Tab moves to the next cell). See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-09", "reserved", KeyEvent.VK_TAB, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Move focus to the previous grouping of controls. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-10", "reserved", KeyEvent.VK_ESCAPE, KeyEvent.META_DOWN_MASK).setAutomatic(); // Open Front Row.
+		Shortcut.registerSystemShortcut("apple-reserved-11", "reserved", KeyEvent.VK_ESCAPE, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Open the Force Quit dialog.
+		Shortcut.registerSystemShortcut("apple-reserved-12", "reserved", KeyEvent.VK_F1, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Toggle full keyboard access on or off. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-13", "reserved", KeyEvent.VK_F2, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the menu bar. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-14", "reserved", KeyEvent.VK_F3, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the Dock. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-15", "reserved", KeyEvent.VK_F4, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the active (or next) window. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-16", "reserved", KeyEvent.VK_F4, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Move focus to the previously active window. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-17", "reserved", KeyEvent.VK_F5, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the toolbar. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-18", "reserved", KeyEvent.VK_F5, KeyEvent.META_DOWN_MASK).setAutomatic(); // Turn VoiceOver on or off. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-19", "reserved", KeyEvent.VK_F6, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Move focus to the first (or next) panel. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-20", "reserved", KeyEvent.VK_F6, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Move focus to the previous panel. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-21", "reserved", KeyEvent.VK_F7, KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Temporarily override the current keyboard access mode in windows and dialogs. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-22", "reserved", KeyEvent.VK_F9, 0).setAutomatic(); // Tile or untile all open windows.
+		Shortcut.registerSystemShortcut("apple-reserved-23", "reserved", KeyEvent.VK_F10, 0).setAutomatic(); // Tile or untile all open windows in the currently active application.
+		Shortcut.registerSystemShortcut("apple-reserved-24", "reserved", KeyEvent.VK_F11, 0).setAutomatic(); // Hide or show all open windows.
+		Shortcut.registerSystemShortcut("apple-reserved-25", "reserved", KeyEvent.VK_F12, 0).setAutomatic(); // Hide or display Dashboard.
+		Shortcut.registerSystemShortcut("apple-reserved-26", "reserved", KeyEvent.VK_DEAD_GRAVE, KeyEvent.META_DOWN_MASK).setAutomatic(); // Activate the next open window in the frontmost application. See "Window Layering."
+		Shortcut.registerSystemShortcut("apple-reserved-27", "reserved", KeyEvent.VK_DEAD_GRAVE, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Activate the previous open window in the frontmost application. See "Window Layering."
+		Shortcut.registerSystemShortcut("apple-reserved-28", "reserved", KeyEvent.VK_DEAD_GRAVE, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Move focus to the window drawer.
+		Shortcut.registerSystemShortcut("apple-reserved-29", "reserved", KeyEvent.VK_MINUS, KeyEvent.META_DOWN_MASK).setAutomatic(); // Decrease the size of the selected item (equivalent to the Smaller command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("apple-reserved-30", "reserved", KeyEvent.VK_MINUS, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Zoom out when screen zooming is on. See Accessibility Overview.
+
+		Shortcut.registerSystemShortcut("system:align-left", "reserved", KeyEvent.VK_OPEN_BRACKET, KeyEvent.META_DOWN_MASK); // Left-align a selection (equivalent to the Align Left command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("system:align-right","reserved", KeyEvent.VK_CLOSE_BRACKET, KeyEvent.META_DOWN_MASK); // Right-align a selection (equivalent to the Align Right command). See "The Format Menu."
 		// I found no KeyEvent for |
-		//ShortCut.registerSystemCut("system:align-center", "reserved", '|', KeyEvent.META_DOWN_MASK); // Center-align a selection (equivalent to the Align Center command). See "The Format Menu."
-		ShortCut.registerSystemCut("system:spelling", "reserved", KeyEvent.VK_COLON, KeyEvent.META_DOWN_MASK); // Display the Spelling window (equivalent to the Spelling command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:spellcheck", "reserved", KeyEvent.VK_SEMICOLON, KeyEvent.META_DOWN_MASK); // Find misspelled words in the document (equivalent to the Check Spelling command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:preferences", "reserved", KeyEvent.VK_COMMA, KeyEvent.META_DOWN_MASK).setAutomatic(); // Open the application's preferences window (equivalent to the Preferences command). See "The Application Menu."
-
-		ShortCut.registerSystemCut("apple-reserved-31", "reserved", KeyEvent.VK_COMMA, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Decrease screen contrast. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-32", "reserved", KeyEvent.VK_PERIOD, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Increase screen contrast. See Accessibility Overview.
+		//Shortcut.registerSystemCut("system:align-center", "reserved", '|', KeyEvent.META_DOWN_MASK); // Center-align a selection (equivalent to the Align Center command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("system:spelling", "reserved", KeyEvent.VK_COLON, KeyEvent.META_DOWN_MASK); // Display the Spelling window (equivalent to the Spelling command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:spellcheck", "reserved", KeyEvent.VK_SEMICOLON, KeyEvent.META_DOWN_MASK); // Find misspelled words in the document (equivalent to the Check Spelling command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:preferences", "reserved", KeyEvent.VK_COMMA, KeyEvent.META_DOWN_MASK).setAutomatic(); // Open the application's preferences window (equivalent to the Preferences command). See "The Application Menu."
+
+		Shortcut.registerSystemShortcut("apple-reserved-31", "reserved", KeyEvent.VK_COMMA, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Decrease screen contrast. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-32", "reserved", KeyEvent.VK_PERIOD, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Increase screen contrast. See Accessibility Overview.
 
 		// I found no KeyEvent for ?
-		//ShortCut.registerSystemCut("system:help", "reserved", '?', KeyEvent.META_DOWN_MASK).setAutomatic(); // Open the application's help in Help Viewer. See "The Help Menu."
-
-		ShortCut.registerSystemCut("apple-reserved-33", "reserved", KeyEvent.VK_SLASH, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Turn font smoothing on or off.
-		ShortCut.registerSystemCut("apple-reserved-34", "reserved", KeyEvent.VK_EQUALS, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Increase the size of the selected item (equivalent to the Bigger command). See "The Format Menu."
-		ShortCut.registerSystemCut("apple-reserved-35", "reserved", KeyEvent.VK_EQUALS, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Zoom in when screen zooming is on. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-36", "reserved", KeyEvent.VK_3, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Capture the screen to a file.
-		ShortCut.registerSystemCut("apple-reserved-37", "reserved", KeyEvent.VK_3, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Capture the screen to the Clipboard.
-		ShortCut.registerSystemCut("apple-reserved-38", "reserved", KeyEvent.VK_4, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Capture a selection to a file.
-		ShortCut.registerSystemCut("apple-reserved-39", "reserved", KeyEvent.VK_4, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Capture a selection to the Clipboard.
-		ShortCut.registerSystemCut("apple-reserved-40", "reserved", KeyEvent.VK_8, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Turn screen zooming on or off. See Accessibility Overview.
-		ShortCut.registerSystemCut("apple-reserved-41", "reserved", KeyEvent.VK_8, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Invert the screen colors. See Accessibility Overview.
-
-		ShortCut.registerSystemCut("system:selectall", "reserved", KeyEvent.VK_A, KeyEvent.META_DOWN_MASK); // Highlight every item in a document or window, or all characters in a text field (equivalent to the Select All command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:bold", "reserved", KeyEvent.VK_B, KeyEvent.META_DOWN_MASK); // Boldface the selected text or toggle boldfaced text on and off (equivalent to the Bold command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:copy", "reserved", KeyEvent.VK_C, KeyEvent.META_DOWN_MASK); // Duplicate the selected data and store on the Clipboard (equivalent to the Copy command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:colors", "reserved", KeyEvent.VK_C, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Display the Colors window (equivalent to the Show Colors command). See "The Format Menu."
-		ShortCut.registerSystemCut("system:copystyle", "reserved", KeyEvent.VK_C, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Copy the style of the selected text (equivalent to the Copy Style command). See "The Format Menu."
-		ShortCut.registerSystemCut("system:copyformat", "reserved", KeyEvent.VK_C, KeyEvent.META_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Copy the formatting settings of the selected item and store on the Clipboard (equivalent to the Copy Ruler command). See "The Format Menu."
-
-		ShortCut.registerSystemCut("apple-reserved-42", "reserved", KeyEvent.VK_D, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Show or hide the Dock. See "The Dock."
-
-		ShortCut.registerSystemCut("system:dictionarylookup", "reserved", KeyEvent.VK_D, KeyEvent.META_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK); // Display the definition of the selected word in the Dictionary application.
-		ShortCut.registerSystemCut("system:findselected", "reserved", KeyEvent.VK_E, KeyEvent.META_DOWN_MASK); // Use the selection for a find operation. See "Find Windows."
-		ShortCut.registerSystemCut("system:find", "reserved", KeyEvent.VK_F, KeyEvent.META_DOWN_MASK); // Open a Find window (equivalent to the Find command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:search", "reserved", KeyEvent.VK_F, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Jump to the search field control. See "Search Fields."
-		ShortCut.registerSystemCut("system:findnext", "reserved", KeyEvent.VK_G, KeyEvent.META_DOWN_MASK); // Find the next occurrence of the selection (equivalent to the Find Next command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:findprev", "reserved", KeyEvent.VK_G, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Find the previous occurrence of the selection (equivalent to the Find Previous command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:hide", "reserved", KeyEvent.VK_H, KeyEvent.META_DOWN_MASK).setAutomatic(); // Hide the windows of the currently running application (equivalent to the Hide ApplicationName command). See "The Application Menu."
-		ShortCut.registerSystemCut("system:hideothers", "reserved", KeyEvent.VK_H, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Hide the windows of all other running applications (equivalent to the Hide Others command). See "The Application Menu."
+		//Shortcut.registerSystemCut("system:help", "reserved", '?', KeyEvent.META_DOWN_MASK).setAutomatic(); // Open the application's help in Help Viewer. See "The Help Menu."
+
+		Shortcut.registerSystemShortcut("apple-reserved-33", "reserved", KeyEvent.VK_SLASH, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Turn font smoothing on or off.
+		Shortcut.registerSystemShortcut("apple-reserved-34", "reserved", KeyEvent.VK_EQUALS, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Increase the size of the selected item (equivalent to the Bigger command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("apple-reserved-35", "reserved", KeyEvent.VK_EQUALS, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Zoom in when screen zooming is on. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-36", "reserved", KeyEvent.VK_3, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Capture the screen to a file.
+		Shortcut.registerSystemShortcut("apple-reserved-37", "reserved", KeyEvent.VK_3, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Capture the screen to the Clipboard.
+		Shortcut.registerSystemShortcut("apple-reserved-38", "reserved", KeyEvent.VK_4, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Capture a selection to a file.
+		Shortcut.registerSystemShortcut("apple-reserved-39", "reserved", KeyEvent.VK_4, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Capture a selection to the Clipboard.
+		Shortcut.registerSystemShortcut("apple-reserved-40", "reserved", KeyEvent.VK_8, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Turn screen zooming on or off. See Accessibility Overview.
+		Shortcut.registerSystemShortcut("apple-reserved-41", "reserved", KeyEvent.VK_8, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Invert the screen colors. See Accessibility Overview.
+
+		Shortcut.registerSystemShortcut("system:selectall", "reserved", KeyEvent.VK_A, KeyEvent.META_DOWN_MASK); // Highlight every item in a document or window, or all characters in a text field (equivalent to the Select All command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:bold", "reserved", KeyEvent.VK_B, KeyEvent.META_DOWN_MASK); // Boldface the selected text or toggle boldfaced text on and off (equivalent to the Bold command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:copy", "reserved", KeyEvent.VK_C, KeyEvent.META_DOWN_MASK); // Duplicate the selected data and store on the Clipboard (equivalent to the Copy command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:colors", "reserved", KeyEvent.VK_C, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Display the Colors window (equivalent to the Show Colors command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("system:copystyle", "reserved", KeyEvent.VK_C, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Copy the style of the selected text (equivalent to the Copy Style command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("system:copyformat", "reserved", KeyEvent.VK_C, KeyEvent.META_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK).setAutomatic(); // Copy the formatting settings of the selected item and store on the Clipboard (equivalent to the Copy Ruler command). See "The Format Menu."
+
+		Shortcut.registerSystemShortcut("apple-reserved-42", "reserved", KeyEvent.VK_D, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Show or hide the Dock. See "The Dock."
+
+		Shortcut.registerSystemShortcut("system:dictionarylookup", "reserved", KeyEvent.VK_D, KeyEvent.META_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK); // Display the definition of the selected word in the Dictionary application.
+		Shortcut.registerSystemShortcut("system:findselected", "reserved", KeyEvent.VK_E, KeyEvent.META_DOWN_MASK); // Use the selection for a find operation. See "Find Windows."
+		Shortcut.registerSystemShortcut("system:find", "reserved", KeyEvent.VK_F, KeyEvent.META_DOWN_MASK); // Open a Find window (equivalent to the Find command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:search", "reserved", KeyEvent.VK_F, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Jump to the search field control. See "Search Fields."
+		Shortcut.registerSystemShortcut("system:findnext", "reserved", KeyEvent.VK_G, KeyEvent.META_DOWN_MASK); // Find the next occurrence of the selection (equivalent to the Find Next command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:findprev", "reserved", KeyEvent.VK_G, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Find the previous occurrence of the selection (equivalent to the Find Previous command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:hide", "reserved", KeyEvent.VK_H, KeyEvent.META_DOWN_MASK).setAutomatic(); // Hide the windows of the currently running application (equivalent to the Hide ApplicationName command). See "The Application Menu."
+		Shortcut.registerSystemShortcut("system:hideothers", "reserved", KeyEvent.VK_H, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Hide the windows of all other running applications (equivalent to the Hide Others command). See "The Application Menu."
 		// What about applications that have italic text AND info windows?
-		//ShortCut.registerSystemCut("system:italic", "reserved", KeyEvent.VK_I, KeyEvent.META_DOWN_MASK); // Italicize the selected text or toggle italic text on or off (equivalent to the Italic command). See "The Format Menu."
-		ShortCut.registerSystemCut("system:info", "reserved", KeyEvent.VK_I, KeyEvent.META_DOWN_MASK); // Display an Info window. See "Inspector Windows."
-		ShortCut.registerSystemCut("system:inspector", "reserved", KeyEvent.VK_I, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Display an inspector window. See "Inspector Windows."
-		ShortCut.registerSystemCut("system:toselection", "reserved", KeyEvent.VK_J, KeyEvent.META_DOWN_MASK); // Scroll to a selection.
-		ShortCut.registerSystemCut("system:minimize", "reserved", KeyEvent.VK_M, KeyEvent.META_DOWN_MASK); // Minimize the active window to the Dock (equivalent to the Minimize command). See "The Window Menu."
-		ShortCut.registerSystemCut("system:minimizeall", "reserved", KeyEvent.VK_M, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Minimize all windows of the active application to the Dock (equivalent to the Minimize All command). See "The Window Menu."
-		ShortCut.registerSystemCut("system:new", "reserved", KeyEvent.VK_N, KeyEvent.META_DOWN_MASK); // Open a new document (equivalent to the New command). See "The File Menu."
-		ShortCut.registerSystemCut("system:open", "reserved", KeyEvent.VK_O, KeyEvent.META_DOWN_MASK); // Display a dialog for choosing a document to open (equivalent to the Open command). See "The File Menu."
-		ShortCut.registerSystemCut("system:print", "reserved", KeyEvent.VK_P, KeyEvent.META_DOWN_MASK); // Display the Print dialog (equivalent to the Print command). See "The File Menu."
-		ShortCut.registerSystemCut("system:printsetup", "reserved", KeyEvent.VK_P, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Display a dialog for specifying printing parameters (equivalent to the Page Setup command). See "The File Menu."
-		ShortCut.registerSystemCut("system:menuexit", "reserved", KeyEvent.VK_Q, KeyEvent.META_DOWN_MASK).setAutomatic(); // Quit the application (equivalent to the Quit command). See "The Application Menu."
-
-		ShortCut.registerSystemCut("apple-reserved-43", "reserved", KeyEvent.VK_Q, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Log out the current user (equivalent to the Log Out command).
-		ShortCut.registerSystemCut("apple-reserved-44", "reserved", KeyEvent.VK_Q, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Log out the current user without confirmation.
-
-		ShortCut.registerSystemCut("system:save", "reserved", KeyEvent.VK_S, KeyEvent.META_DOWN_MASK); // Save the active document (equivalent to the Save command). See "The File Menu."
-		ShortCut.registerSystemCut("system:saveas", "reserved", KeyEvent.VK_S, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Display the Save dialog (equivalent to the Save As command). See "The File Menu."
-		ShortCut.registerSystemCut("system:fonts", "reserved", KeyEvent.VK_T, KeyEvent.META_DOWN_MASK); // Display the Fonts window (equivalent to the Show Fonts command). See "The Format Menu."
-		ShortCut.registerSystemCut("system:toggletoolbar", "reserved", KeyEvent.VK_T, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Show or hide a toolbar (equivalent to the Show/Hide Toolbar command). See "The View Menu" and "Toolbars."
-		ShortCut.registerSystemCut("system:underline", "reserved", KeyEvent.VK_U, KeyEvent.META_DOWN_MASK); // Underline the selected text or turn underlining on or off (equivalent to the Underline command). See "The Format Menu."
-		ShortCut.registerSystemCut("system:paste", "reserved", KeyEvent.VK_V, KeyEvent.META_DOWN_MASK); // Insert the Clipboard contents at the insertion point (equivalent to the Paste command). See "The File Menu."
-		ShortCut.registerSystemCut("system:pastestyle", "reserved", KeyEvent.VK_V, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Apply the style of one object to the selected object (equivalent to the Paste Style command). See "The Format Menu."
-		ShortCut.registerSystemCut("system:pastemwithoutstyle", "reserved", KeyEvent.VK_V, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Apply the style of the surrounding text to the inserted object (equivalent to the Paste and Match Style command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:pasteformatting", "reserved", KeyEvent.VK_V, KeyEvent.META_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK); // Apply formatting settings to the selected object (equivalent to the Paste Ruler command). See "The Format Menu."
-		ShortCut.registerSystemCut("system:closewindow", "reserved", KeyEvent.VK_W, KeyEvent.META_DOWN_MASK); // Close the active window (equivalent to the Close command). See "The File Menu."
-		ShortCut.registerSystemCut("system:closefile", "reserved", KeyEvent.VK_W, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Close a file and its associated windows (equivalent to the Close File command). See "The File Menu."
-		ShortCut.registerSystemCut("system:closeallwindows", "reserved", KeyEvent.VK_W, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Close all windows in the application (equivalent to the Close All command). See "The File Menu."
-		ShortCut.registerSystemCut("system:cut", "reserved", KeyEvent.VK_X, KeyEvent.META_DOWN_MASK); // Remove the selection and store on the Clipboard (equivalent to the Cut command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:undo", "reserved", KeyEvent.VK_Z, KeyEvent.META_DOWN_MASK); // Reverse the effect of the user's previous operation (equivalent to the Undo command). See "The Edit Menu."
-		ShortCut.registerSystemCut("system:redo", "reserved", KeyEvent.VK_Z, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Reverse the effect of the last Undo command (equivalent to the Redo command). See "The Edit Menu."
-
-		ShortCut.registerSystemCut("apple-reserved-45", "reserved", KeyEvent.VK_RIGHT, KeyEvent.META_DOWN_MASK).setAutomatic(); // Change the keyboard layout to current layout of Roman script.
-		//ShortCut.registerSystemCut("apple-reserved-46", "reserved", KeyEvent.VK_RIGHT, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the next semantic unit, typically the end of the current line.
-		//ShortCut.registerSystemCut("apple-reserved-47", "reserved", KeyEvent.VK_RIGHT, KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection one character to the right.
-		//ShortCut.registerSystemCut("apple-reserved-48", "reserved", KeyEvent.VK_RIGHT, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the end of the current word, then to the end of the next word.
-
-		ShortCut.registerSystemCut("system:movefocusright", "reserved", KeyEvent.VK_RIGHT, KeyEvent.CTRL_DOWN_MASK); // Move focus to another value or cell within a view, such as a table. See Accessibility Overview.
-
-		ShortCut.registerSystemCut("apple-reserved-49", "reserved", KeyEvent.VK_LEFT, KeyEvent.META_DOWN_MASK).setAutomatic(); // Change the keyboard layout to current layout of system script.
-		//ShortCut.registerSystemCut("apple-reserved-50", "reserved", KeyEvent.VK_LEFT, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the previous semantic unit, typically the beginning of the current line.
-		//ShortCut.registerSystemCut("apple-reserved-51", "reserved", KeyEvent.VK_LEFT, KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection one character to the left.
-		//ShortCut.registerSystemCut("apple-reserved-52", "reserved", KeyEvent.VK_LEFT, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the beginning of the current word, then to the beginning of the previous word.
-
-		ShortCut.registerSystemCut("system:movefocusleft", "reserved", KeyEvent.VK_LEFT, KeyEvent.CTRL_DOWN_MASK); // Move focus to another value or cell within a view, such as a table. See Accessibility Overview.
-
-		//ShortCut.registerSystemCut("apple-reserved-53", "reserved", KeyEvent.VK_UP, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection upward in the next semantic unit, typically the beginning of the document.
-		//ShortCut.registerSystemCut("apple-reserved-54", "reserved", KeyEvent.VK_UP, KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the line above, to the nearest character boundary at the same horizontal location.
-		//ShortCut.registerSystemCut("apple-reserved-55", "reserved", KeyEvent.VK_UP, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the beginning of the current paragraph, then to the beginning of the next paragraph.
-
-		ShortCut.registerSystemCut("system:movefocusup", "reserved", KeyEvent.VK_UP, KeyEvent.CTRL_DOWN_MASK); // Move focus to another value or cell within a view, such as a table. See Accessibility Overview.
-
-		//ShortCut.registerSystemCut("apple-reserved-56", "reserved", KeyEvent.VK_DOWN, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection downward in the next semantic unit, typically the end of the document.
-		//ShortCut.registerSystemCut("apple-reserved-57", "reserved", KeyEvent.VK_DOWN, KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the line below, to the nearest character boundary at the same horizontal location.
-		//ShortCut.registerSystemCut("apple-reserved-58", "reserved", KeyEvent.VK_DOWN, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the end of the current paragraph, then to the end of the next paragraph (include the blank line between paragraphs in cut, copy, and paste operations).
-
-		ShortCut.registerSystemCut("system:movefocusdown", "reserved", KeyEvent.VK_DOWN, KeyEvent.CTRL_DOWN_MASK); // Move focus to another value or cell within a view, such as a table. See Accessibility Overview.
-
-		ShortCut.registerSystemCut("system:about", "reserved", 0, -1).setAutomatic(); // About
-	}
-	public String makeTooltip(String name, ShortCut sc) {
+		//Shortcut.registerSystemCut("system:italic", "reserved", KeyEvent.VK_I, KeyEvent.META_DOWN_MASK); // Italicize the selected text or toggle italic text on or off (equivalent to the Italic command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("system:info", "reserved", KeyEvent.VK_I, KeyEvent.META_DOWN_MASK); // Display an Info window. See "Inspector Windows."
+		Shortcut.registerSystemShortcut("system:inspector", "reserved", KeyEvent.VK_I, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Display an inspector window. See "Inspector Windows."
+		Shortcut.registerSystemShortcut("system:toselection", "reserved", KeyEvent.VK_J, KeyEvent.META_DOWN_MASK); // Scroll to a selection.
+		Shortcut.registerSystemShortcut("system:minimize", "reserved", KeyEvent.VK_M, KeyEvent.META_DOWN_MASK); // Minimize the active window to the Dock (equivalent to the Minimize command). See "The Window Menu."
+		Shortcut.registerSystemShortcut("system:minimizeall", "reserved", KeyEvent.VK_M, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Minimize all windows of the active application to the Dock (equivalent to the Minimize All command). See "The Window Menu."
+		Shortcut.registerSystemShortcut("system:new", "reserved", KeyEvent.VK_N, KeyEvent.META_DOWN_MASK); // Open a new document (equivalent to the New command). See "The File Menu."
+		Shortcut.registerSystemShortcut("system:open", "reserved", KeyEvent.VK_O, KeyEvent.META_DOWN_MASK); // Display a dialog for choosing a document to open (equivalent to the Open command). See "The File Menu."
+		Shortcut.registerSystemShortcut("system:print", "reserved", KeyEvent.VK_P, KeyEvent.META_DOWN_MASK); // Display the Print dialog (equivalent to the Print command). See "The File Menu."
+		Shortcut.registerSystemShortcut("system:printsetup", "reserved", KeyEvent.VK_P, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Display a dialog for specifying printing parameters (equivalent to the Page Setup command). See "The File Menu."
+		Shortcut.registerSystemShortcut("system:menuexit", "reserved", KeyEvent.VK_Q, KeyEvent.META_DOWN_MASK).setAutomatic(); // Quit the application (equivalent to the Quit command). See "The Application Menu."
+
+		Shortcut.registerSystemShortcut("apple-reserved-43", "reserved", KeyEvent.VK_Q, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Log out the current user (equivalent to the Log Out command).
+		Shortcut.registerSystemShortcut("apple-reserved-44", "reserved", KeyEvent.VK_Q, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK).setAutomatic(); // Log out the current user without confirmation.
+
+		Shortcut.registerSystemShortcut("system:save", "reserved", KeyEvent.VK_S, KeyEvent.META_DOWN_MASK); // Save the active document (equivalent to the Save command). See "The File Menu."
+		Shortcut.registerSystemShortcut("system:saveas", "reserved", KeyEvent.VK_S, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Display the Save dialog (equivalent to the Save As command). See "The File Menu."
+		Shortcut.registerSystemShortcut("system:fonts", "reserved", KeyEvent.VK_T, KeyEvent.META_DOWN_MASK); // Display the Fonts window (equivalent to the Show Fonts command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("system:toggletoolbar", "reserved", KeyEvent.VK_T, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Show or hide a toolbar (equivalent to the Show/Hide Toolbar command). See "The View Menu" and "Toolbars."
+		Shortcut.registerSystemShortcut("system:underline", "reserved", KeyEvent.VK_U, KeyEvent.META_DOWN_MASK); // Underline the selected text or turn underlining on or off (equivalent to the Underline command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("system:paste", "reserved", KeyEvent.VK_V, KeyEvent.META_DOWN_MASK); // Insert the Clipboard contents at the insertion point (equivalent to the Paste command). See "The File Menu."
+		Shortcut.registerSystemShortcut("system:pastestyle", "reserved", KeyEvent.VK_V, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Apply the style of one object to the selected object (equivalent to the Paste Style command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("system:pastemwithoutstyle", "reserved", KeyEvent.VK_V, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Apply the style of the surrounding text to the inserted object (equivalent to the Paste and Match Style command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:pasteformatting", "reserved", KeyEvent.VK_V, KeyEvent.META_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK); // Apply formatting settings to the selected object (equivalent to the Paste Ruler command). See "The Format Menu."
+		Shortcut.registerSystemShortcut("system:closewindow", "reserved", KeyEvent.VK_W, KeyEvent.META_DOWN_MASK); // Close the active window (equivalent to the Close command). See "The File Menu."
+		Shortcut.registerSystemShortcut("system:closefile", "reserved", KeyEvent.VK_W, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Close a file and its associated windows (equivalent to the Close File command). See "The File Menu."
+		Shortcut.registerSystemShortcut("system:closeallwindows", "reserved", KeyEvent.VK_W, KeyEvent.META_DOWN_MASK | KeyEvent.ALT_DOWN_MASK); // Close all windows in the application (equivalent to the Close All command). See "The File Menu."
+		Shortcut.registerSystemShortcut("system:cut", "reserved", KeyEvent.VK_X, KeyEvent.META_DOWN_MASK); // Remove the selection and store on the Clipboard (equivalent to the Cut command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:undo", "reserved", KeyEvent.VK_Z, KeyEvent.META_DOWN_MASK); // Reverse the effect of the user's previous operation (equivalent to the Undo command). See "The Edit Menu."
+		Shortcut.registerSystemShortcut("system:redo", "reserved", KeyEvent.VK_Z, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK); // Reverse the effect of the last Undo command (equivalent to the Redo command). See "The Edit Menu."
+
+		Shortcut.registerSystemShortcut("apple-reserved-45", "reserved", KeyEvent.VK_RIGHT, KeyEvent.META_DOWN_MASK).setAutomatic(); // Change the keyboard layout to current layout of Roman script.
+		//Shortcut.registerSystemCut("apple-reserved-46", "reserved", KeyEvent.VK_RIGHT, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the next semantic unit, typically the end of the current line.
+		//Shortcut.registerSystemCut("apple-reserved-47", "reserved", KeyEvent.VK_RIGHT, KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection one character to the right.
+		//Shortcut.registerSystemCut("apple-reserved-48", "reserved", KeyEvent.VK_RIGHT, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the end of the current word, then to the end of the next word.
+
+		Shortcut.registerSystemShortcut("system:movefocusright", "reserved", KeyEvent.VK_RIGHT, KeyEvent.CTRL_DOWN_MASK); // Move focus to another value or cell within a view, such as a table. See Accessibility Overview.
+
+		Shortcut.registerSystemShortcut("apple-reserved-49", "reserved", KeyEvent.VK_LEFT, KeyEvent.META_DOWN_MASK).setAutomatic(); // Change the keyboard layout to current layout of system script.
+		//Shortcut.registerSystemCut("apple-reserved-50", "reserved", KeyEvent.VK_LEFT, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the previous semantic unit, typically the beginning of the current line.
+		//Shortcut.registerSystemCut("apple-reserved-51", "reserved", KeyEvent.VK_LEFT, KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection one character to the left.
+		//Shortcut.registerSystemCut("apple-reserved-52", "reserved", KeyEvent.VK_LEFT, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the beginning of the current word, then to the beginning of the previous word.
+
+		Shortcut.registerSystemShortcut("system:movefocusleft", "reserved", KeyEvent.VK_LEFT, KeyEvent.CTRL_DOWN_MASK); // Move focus to another value or cell within a view, such as a table. See Accessibility Overview.
+
+		//Shortcut.registerSystemCut("apple-reserved-53", "reserved", KeyEvent.VK_UP, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection upward in the next semantic unit, typically the beginning of the document.
+		//Shortcut.registerSystemCut("apple-reserved-54", "reserved", KeyEvent.VK_UP, KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the line above, to the nearest character boundary at the same horizontal location.
+		//Shortcut.registerSystemCut("apple-reserved-55", "reserved", KeyEvent.VK_UP, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the beginning of the current paragraph, then to the beginning of the next paragraph.
+
+		Shortcut.registerSystemShortcut("system:movefocusup", "reserved", KeyEvent.VK_UP, KeyEvent.CTRL_DOWN_MASK); // Move focus to another value or cell within a view, such as a table. See Accessibility Overview.
+
+		//Shortcut.registerSystemCut("apple-reserved-56", "reserved", KeyEvent.VK_DOWN, KeyEvent.META_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection downward in the next semantic unit, typically the end of the document.
+		//Shortcut.registerSystemCut("apple-reserved-57", "reserved", KeyEvent.VK_DOWN, KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the line below, to the nearest character boundary at the same horizontal location.
+		//Shortcut.registerSystemCut("apple-reserved-58", "reserved", KeyEvent.VK_DOWN, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK).setAutomatic(); // Extend selection to the end of the current paragraph, then to the end of the next paragraph (include the blank line between paragraphs in cut, copy, and paste operations).
+
+		Shortcut.registerSystemShortcut("system:movefocusdown", "reserved", KeyEvent.VK_DOWN, KeyEvent.CTRL_DOWN_MASK); // Move focus to another value or cell within a view, such as a table. See Accessibility Overview.
+
+		Shortcut.registerSystemShortcut("system:about", "reserved", 0, -1).setAutomatic(); // About
+	}
+	public String makeTooltip(String name, Shortcut sc) {
 		String lafid = UIManager.getLookAndFeel().getID();
 		boolean canHtml = true;
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 1084)
@@ -3,5 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.Main;
 
@@ -29,31 +29,31 @@
 		}
 	}
-	public void initShortCutGroups() {
+	public void initShortcutGroups() {
 		// This is the Windows list. Someone should look over it and make it more "*nix"...
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_NONE),    Integer.toString(-1));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_HOTKEY),  Integer.toString(KeyEvent.CTRL_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_MENU),    Integer.toString(KeyEvent.CTRL_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_EDIT),    Integer.toString(0));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_LAYER),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_DIRECT),  Integer.toString(0));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_MNEMONIC),Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_NONE),    Integer.toString(-1));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY),  Integer.toString(KeyEvent.CTRL_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU),    Integer.toString(KeyEvent.CTRL_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT),    Integer.toString(0));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT),  Integer.toString(0));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MNEMONIC),Integer.toString(KeyEvent.ALT_DOWN_MASK));
 
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_NONE),       Integer.toString(-1));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_EDIT),       Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_NONE),       Integer.toString(-1));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
 
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_NONE),       Integer.toString(-1));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_EDIT),       Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_DIRECT),     Integer.toString(KeyEvent.CTRL_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_NONE),       Integer.toString(-1));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.CTRL_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
 	}
-	public void initSystemShortCuts() {
+	public void initSystemShortcuts() {
 		// TODO: Insert system shortcuts here. See Windows and espacially OSX to see how to.
 	}
@@ -63,5 +63,5 @@
 	  * this is implemented here...
 	  */
-	public String makeTooltip(String name, ShortCut sc) {
+	public String makeTooltip(String name, Shortcut sc) {
 		String result = "";
 		result += "<html>";
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 1083)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 1084)
@@ -3,5 +3,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-import org.openstreetmap.josm.tools.ShortCut;
+import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.PlatformHookUnixoid;
 import org.openstreetmap.josm.Main;
@@ -21,38 +21,38 @@
 		Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
 	}
-	public void initShortCutGroups() {
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_NONE),    Integer.toString(-1));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_HOTKEY),  Integer.toString(KeyEvent.CTRL_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_MENU),    Integer.toString(KeyEvent.CTRL_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_EDIT),    Integer.toString(0));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_LAYER),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_DIRECT),  Integer.toString(0));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_DEFAULT+ShortCut.GROUP_MNEMONIC),Integer.toString(KeyEvent.ALT_DOWN_MASK));
+	public void initShortcutGroups() {
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_NONE),    Integer.toString(-1));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY),  Integer.toString(KeyEvent.CTRL_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU),    Integer.toString(KeyEvent.CTRL_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT),    Integer.toString(0));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT),  Integer.toString(0));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MNEMONIC),Integer.toString(KeyEvent.ALT_DOWN_MASK));
 
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_NONE),       Integer.toString(-1));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_EDIT),       Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT1+ShortCut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_NONE),       Integer.toString(-1));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
 
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_NONE),       Integer.toString(-1));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_EDIT),       Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_DIRECT),     Integer.toString(KeyEvent.CTRL_DOWN_MASK));
-		Main.pref.put("shortcut.groups."+(ShortCut.GROUPS_ALT2+ShortCut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_NONE),       Integer.toString(-1));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY),     Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MENU),       Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_EDIT),       Integer.toString(KeyEvent.ALT_DOWN_MASK  | KeyEvent.SHIFT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_LAYER),      Integer.toString(KeyEvent.ALT_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT),     Integer.toString(KeyEvent.CTRL_DOWN_MASK));
+		Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MNEMONIC),   Integer.toString(KeyEvent.ALT_DOWN_MASK));
 	}
-	public void initSystemShortCuts() {
+	public void initSystemShortcuts() {
 		// This list if far from complete!
-		ShortCut.registerSystemCut("system:exit", "unused", KeyEvent.VK_F4, KeyEvent.ALT_DOWN_MASK).setAutomatic(); // items with automatic shortcuts will not be added to the menu bar at all
-		ShortCut.registerSystemCut("system:menuexit", "unused", KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK);
-		ShortCut.registerSystemCut("system:copy", "unused", KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK);
-		ShortCut.registerSystemCut("system:paste", "unused", KeyEvent.VK_V, KeyEvent.CTRL_DOWN_MASK);
-		ShortCut.registerSystemCut("system:cut", "unused", KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK);
-		ShortCut.registerSystemCut("system:duplicate", "unused", KeyEvent.VK_D, KeyEvent.CTRL_DOWN_MASK); // not really system, but to avoid odd results
-		ShortCut.registerSystemCut("system:help", "unused", KeyEvent.VK_F1, 0);
+		Shortcut.registerSystemShortcut("system:exit", "unused", KeyEvent.VK_F4, KeyEvent.ALT_DOWN_MASK).setAutomatic(); // items with automatic shortcuts will not be added to the menu bar at all
+		Shortcut.registerSystemShortcut("system:menuexit", "unused", KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK);
+		Shortcut.registerSystemShortcut("system:copy", "unused", KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK);
+		Shortcut.registerSystemShortcut("system:paste", "unused", KeyEvent.VK_V, KeyEvent.CTRL_DOWN_MASK);
+		Shortcut.registerSystemShortcut("system:cut", "unused", KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK);
+		Shortcut.registerSystemShortcut("system:duplicate", "unused", KeyEvent.VK_D, KeyEvent.CTRL_DOWN_MASK); // not really system, but to avoid odd results
+		Shortcut.registerSystemShortcut("system:help", "unused", KeyEvent.VK_F1, 0);
 	}
 }
Index: unk/src/org/openstreetmap/josm/tools/ShortCut.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ShortCut.java	(revision 1083)
+++ 	(revision )
@@ -1,447 +1,0 @@
-// License: GPL. Copyright 2007 by Immanuel Scholz and others
-package org.openstreetmap.josm.tools;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-import org.openstreetmap.josm.Main;
-
-import java.awt.event.KeyEvent;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Collection;
-import javax.swing.KeyStroke;
-import javax.swing.JMenu;
-import javax.swing.JOptionPane;
-
-/**
- * Global shortcut class.
- *
- * Note: This class represents a single shortcut, contains the factory to obtain
- *       shortcut objects from, manages shortcuts and shortcut collisions, and
- *       finally manages loading and saving shortcuts to/from the preferences.
- *
- * Action authors: You only need the registerShortCut() factory. Ignore everything
- *                 else.
- *
- * All: Use only public methods that are also marked to be used. The others are
- *      public so the shortcut preferences can use them.
- *
- */
-public class ShortCut {
-//	public static final int SHIFT = KeyEvent.SHIFT_DOWN_MASK;
-//	public static final int CTRL = KeyEvent.CTRL_DOWN_MASK;
-//	public static final int SHIFT_CTRL = KeyEvent.SHIFT_DOWN_MASK|KeyEvent.CTRL_DOWN_MASK;
-	public static final int SHIFT_DEFAULT = 1;
-	private String shortText;        // the unique ID of the shortcut
-	private String longText;         // a human readable description that will be shown in the preferences
-	private int requestedKey;        // the key, the caller requested
-	private int requestedGroup;      // the group, the caller requested
-	private int assignedKey;         // the key that actually is used
-	private int assignedModifier;    // the modifiers that are used
-	private boolean assignedDefault; // true if it got assigned what was requested. (Note: modifiers will be ignored in favour of group when loading it from the preferences then.)
-	private boolean assignedUser;    // true if the user changed this shortcut
-	private boolean automatic;       // true if the user cannot change this shortcut (Note: it also will not be saved into the preferences)
-	private boolean reset;           // true if the user requested this shortcut to be set to its default value (will happen on next restart, as this shortcut will not be saved to the preferences)
-
-	// simple constructor
-	private ShortCut(String shortText, String longText, int requestedKey, int requestedGroup, int assignedKey, int assignedModifier, boolean assignedDefault, boolean assignedUser) {
-		this.shortText = shortText;
-		this.longText = longText;
-		this.requestedKey = requestedKey;
-		this.requestedGroup = requestedGroup;
-		this.assignedKey = assignedKey;
-		this.assignedModifier = assignedModifier;
-		this.assignedDefault = assignedDefault;
-		this.assignedUser = assignedUser;
-		this.automatic = false;
-		this.reset = false;
-	}
-
-	public String getShortText() {
-		return shortText;
-	}
-
-	public String getLongText() {
-		return longText;
-	}
-
-	// a shortcut will be renamed when it is handed out again, because the original name
-	// may be a dummy
-	private void setLongText(String longText) {
-		this.longText = longText;
-	}
-
-	private int getRequestedKey() {
-		return requestedKey;
-	}
-
-	public int getRequestedGroup() {
-		return requestedGroup;
-	}
-
-	public int getAssignedKey() {
-		return assignedKey;
-	}
-
-	public int getAssignedModifier() {
-		return assignedModifier;
-	}
-
-	public boolean getAssignedDefault() {
-		return assignedDefault;
-	}
-
-	public boolean getAssignedUser() {
-		return assignedUser;
-	}
-
-	public boolean getAutomatic() {
-		return automatic;
-	}
-
-	private boolean getReset() {
-		return reset;
-	}
-
-	/**
-	 * FOR PREF PANE ONLY
-	 */
-	public void setAutomatic() {
-		automatic = true;
-	}
-
-	/**
-	 * FOR PREF PANE ONLY
-	 */
-	public void setAssignedModifier(int assignedModifier) {
-		this.assignedModifier = assignedModifier;
-	}
-
-	/**
-	 * FOR PREF PANE ONLY
-	 */
-	public void setAssignedKey(int assignedKey) {
-		this.assignedKey = assignedKey;
-	}
-
-	/**
-	 * FOR PREF PANE ONLY
-	 */
-	public void setAssignedUser(boolean assignedUser) {
-		this.reset = (!this.assignedUser && assignedUser);
-		if (assignedUser) assignedDefault = false;
-		this.assignedUser = assignedUser;
-	}
-
-	/**
-	 * Use this to register the shortcut with Swing
-	 */
-	public KeyStroke getKeyStroke() {
-		if (assignedModifier != -1) {
-			return KeyStroke.getKeyStroke(assignedKey, assignedModifier);
-		} else {
-			return null;
-		}
-	}
-
-	private boolean isSame(int isKey, int isModifier) {
-		// -1 --- an unassigned shortcut is different from any other shortcut
-		return( isKey == assignedKey && isModifier == assignedModifier && assignedModifier != Groups.get(GROUP_NONE));
-	}
-
-	// create a shortcut object from an string as saved in the preferences
-	private ShortCut(String prefString) {
-		String[] s = prefString.split(";");
-		this.shortText = s[0];
-		this.longText = s[1];
-		this.requestedKey = Integer.parseInt(s[2]);
-		this.requestedGroup = Integer.parseInt(s[3]);
-		this.assignedKey = Integer.parseInt(s[4]);
-		this.assignedModifier = Integer.parseInt(s[5]);
-		this.assignedDefault = Boolean.parseBoolean(s[6]);
-		this.assignedUser = Boolean.parseBoolean(s[7]);
-	}
-
-	// get a string that can be put into the preferences
-	private String asPrefString() {
-		return shortText + ";" + longText + ";" + requestedKey + ";" + requestedGroup + ";" + assignedKey + ";" + assignedModifier + ";" + assignedDefault + ";" + assignedUser;
-	}
-
-	private boolean isSame(ShortCut other) {
-		return assignedKey == other.assignedKey && assignedModifier == other.assignedModifier;
-	}
-
-	/**
-	 * use this to set a menu's mnemonic
-	 */
-	public void setMnemonic(JMenu menu) {
-		if (requestedGroup == GROUP_MNEMONIC && assignedModifier == Groups.get(requestedGroup + GROUPS_DEFAULT) && getKeyStroke() != null && KeyEvent.getKeyText(assignedKey).length() == 1) {
-			menu.setMnemonic(KeyEvent.getKeyText(assignedKey).charAt(0)); //getKeyStroke().getKeyChar() seems not to work here
-		}
-	}
-
-	/**
-	 * use this to get a human readable text for your shortcut
-	 */
-	 public String getKeyText() {
-	 	KeyStroke keyStroke = getKeyStroke();
-		if (keyStroke == null) return "";
-		String modifText = KeyEvent.getKeyModifiersText(keyStroke.getModifiers());
-		if ("".equals (modifText)) return KeyEvent.getKeyText (keyStroke.getKeyCode ());
-		return modifText + "+" + KeyEvent.getKeyText(keyStroke.getKeyCode ());
-	}
-
-	  ///////////////////////////////
-	 // everything's static below //
-	///////////////////////////////
-
-	// here we store our shortcuts
-	private static Map<String, ShortCut> ShortCuts = new LinkedHashMap<String, ShortCut>();
-
-	// and here our modifier groups
-	private static Map<Integer, Integer> Groups = new HashMap<Integer, Integer>();
-
-	// check if something collides with an existing shortcut
-	private static ShortCut findShortcut(int requestedKey, int modifier) {
-		if (modifier == Groups.get(GROUP_NONE)) {
-			return null;
-		}
-		for (ShortCut sc : ShortCuts.values()) {
-			if (sc.isSame(requestedKey, modifier)) {
-				return sc;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * FOR PREF PANE ONLY
-	 */
-	public static Collection<ShortCut> listAll() {
-		return ShortCuts.values();
-	}
-
-	// try to find an unused shortcut
-	private static ShortCut findRandomShortcut(String shortText, String longText, int requestedKey, int requestedGroup) {
-		int[] mods = {Groups.get(requestedGroup + GROUPS_DEFAULT), Groups.get(requestedGroup + GROUPS_ALT1), Groups.get(requestedGroup + GROUPS_ALT2)};
-		for (int m : mods) {
-			for (int k = KeyEvent.VK_A; k < KeyEvent.VK_Z; k++) { // we'll limit ourself to 100% safe keys
-				if ( findShortcut(k, m) == null ) {
-					return new ShortCut(shortText, longText, requestedKey, requestedGroup, k, m, false, false);
-				}
-			}
-		}
-		return new ShortCut(shortText, longText, requestedKey, requestedGroup, requestedKey, Groups.get(GROUP_NONE), false, false);
-	}
-
-	// use these constants to request shortcuts
-	public static final int GROUP_NONE = 0;          // no shortcut
-	public static final int GROUP_HOTKEY = 1;        // a button action, will use another modifier than MENU on system with a meta key
-	public static final int GROUP_MENU = 2;          // a menu action, e.g. "ctrl-e"/"cmd-e" (export)
-	public static final int GROUP_EDIT = 3;          // direct edit key, e.g. "a" (add)
-	public static final int GROUP_LAYER = 4;         // toggle one of the right-hand-side windows, e.g. "alt-l" (layers)
-	public static final int GROUP_DIRECT = 5;        // for non-letter keys, preferable without modifier, e.g. F5
-	public static final int GROUP_MNEMONIC = 6;      // for use with Menu.setMnemonic() only!
-	public static final int GROUP__MAX = 7;
-	public static final int GROUP_RESERVED = 1000;
-	public static final int GROUPS_DEFAULT = 0;
-	public static final int GROUPS_ALT1 = GROUP__MAX;
-	public static final int GROUPS_ALT2 = GROUP__MAX * 2;
-
-	// safely read a shortcut from the preferences
-	private static String[] getConfigStringArray(String key) {
-		String s = Main.pref.get(key, null);
-		if (s == null || s.equals("null") || s.equals(""))
-			return null;
-		return s.split(";");
-	}
-
-	// bootstrap
-	private static boolean initdone = false;
-	private static void doInit() {
-		if (initdone) return;
-		initdone = true;
-		// if we have no modifier groups in the config, we have to create them
-		if (Main.pref.get("shortcut.groups.configured", null) == null) {
-			Main.platform.initShortCutGroups();
-			Main.pref.put("shortcut.groups.configured", true);
-		}
-		// pull in the groups
-		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
-			Groups.put(new Integer(i), new Integer(Main.pref.getInteger("shortcut.groups."+i, -1)));
-		}
-		// (1) System reserved shortcuts
-		Main.platform.initSystemShortCuts();
-		// (2) User defined shortcuts
-		int i = 0;
-		String p = Main.pref.get("shortcut.shortcut."+i, null);
-		while (p != null) {
-			ShortCut sc = new ShortCut(p);
-			if (sc.getAssignedUser()) registerShortCut(sc);
-			i++;
-			p = Main.pref.get("shortcut.shortcut."+i, null);
-		}
-		// Shortcuts at their default values
-		i = 0;
-		p = Main.pref.get("shortcut.shortcut."+i, null);
-		while (p != null) {
-			ShortCut sc = new ShortCut(p);
-			if (!sc.getAssignedUser() && sc.getAssignedDefault()) registerShortCut(sc);
-			i++;
-			p = Main.pref.get("shortcut.shortcut."+i, null);
-		}
-		// Shortcuts that were automatically moved
-		i = 0;
-		p = Main.pref.get("shortcut.shortcut."+i, null);
-		while (p != null) {
-			ShortCut sc = new ShortCut(p);
-			if (!sc.getAssignedUser() && !sc.getAssignedDefault()) registerShortCut(sc);
-			i++;
-			p = Main.pref.get("shortcut.shortcut."+i, null);
-		}
-	}
-
-	// shutdown handling
-	public static void savePrefs() {
-// we save this directly from the preferences pane, so don't overwrite these values here
-//		for (int i = GROUP_NONE; i < GROUP__MAX+GROUPS_ALT2; i++) {
-//			Main.pref.put("shortcut.groups."+i, Groups.get(i).toString());
-//		}
-		int i = 0;
-		for (ShortCut sc : ShortCuts.values()) {
-// TODO: Remove sc.getAssignedUser() when we fixed all internal conflicts
-			if (!sc.getAutomatic() && !sc.getReset() && sc.getAssignedUser()) {
-				Main.pref.put("shortcut.shortcut."+i, sc.asPrefString());
-				i++;
-			}
-		}
-		Main.pref.put("shortcut.shortcut."+i, "");
-	}
-
-	// this is used to register a shortcut that was read from the preferences
-	private static void registerShortCut(ShortCut sc) {
-		registerShortCut(sc.getShortText(), sc.getLongText(), sc.getRequestedKey(), sc.getRequestedGroup(), sc.getAssignedModifier(), sc);
-	}
-
-	/**
-	 * FOR PLATFORMHOOK USE ONLY
-	 *
-	 * This registers a system shortcut. See PlatformHook for details.
-	 */
-	public static ShortCut registerSystemCut(String shortText, String longText, int key, int modifier) {
-		if (ShortCuts.containsKey(shortText)) {
-			return ShortCuts.get(shortText);
-		}
-		ShortCut potentialShortCut = findShortcut(key, modifier);
-		if (potentialShortCut != null) {
-			// this always is a logic error in the hook
-			System.err.println("CONFLICT WITH SYSTEM KEY "+shortText);
-			return null;
-		} else {
-			potentialShortCut = new ShortCut(shortText, longText, key, GROUP_RESERVED, key, modifier, true, false);
-			ShortCuts.put(shortText, potentialShortCut);
-			return potentialShortCut;
-		}
-	}
-
-	/**
-	 * Register a shortcut.
-	 *
-	 * Here you get your shortcuts from. The parameters are:
-	 *
-	 * shortText - an ID. re-use a "system:*" ID if possible, else use something unique.
-	 *             "menu:*" is reserved for menu mnemonics, "core:*" is reserved for
-	 *             actions that are part of JOSM's core. Use something like
-	 *             <pluginname>+":"+<actionname>
-	 * longText - this will be displayed in the shortcut preferences dialog. Better
-	 *            use soomething the user will recognize...
-	 * requestedKey - the key you'd prefer. Use a KeyEvent.VK_* constant here.
-	 * requestedGroup - the group this shortcut fits best. This will determine the
-	 *                  modifiers your shortcut will get assigned. Use the GROUP_*
-	 *                  constants defined above.
-	 */
-	public static ShortCut registerShortCut(String shortText, String longText, int requestedKey, int requestedGroup, int modifier) {
-		return registerShortCut(shortText, longText, requestedKey, requestedGroup, modifier, null);
-	}
-	public static ShortCut registerShortCut(String shortText, String longText, int requestedKey, int requestedGroup) {
-		return registerShortCut(shortText, longText, requestedKey, requestedGroup, null, null);
-	}
-
-	private static ShortCut registerShortCut(String shortText, String longText, int requestedKey, int requestedGroup,
-        ShortCut originalShortCut) {
-		return registerShortCut(shortText, longText, requestedKey, requestedGroup, null, originalShortCut);
-	}
-
-	// and now the workhorse. same parameters as above, just one more: if originalShortCut is not null and
-	// is different from the shortcut that will be assigned, a popup warning will be displayed to the user.
-	// This is used when registering shortcuts that have been visible to the user before (read: have been
-	// read from the preferences file). New shortcuts will never warn, even when they land on some funny
-	// random fallback key like Ctrl+Alt+Shift+Z for "File Open..." <g>
-	private static ShortCut registerShortCut(String shortText, String longText, int requestedKey, int requestedGroup, Integer modifier,
-        ShortCut originalShortCut) {
-		doInit();
-		if (ShortCuts.containsKey(shortText)) { // a re-register? maybe a sc already read from the preferences?
-			ShortCut sc = ShortCuts.get(shortText);
-			sc.setLongText(longText); // or set by the platformHook, in this case the original longText doesn't match the real action
-			return sc;
-		}
-		Integer defaultModifier = Groups.get(requestedGroup + GROUPS_DEFAULT);
-		if(modifier != null) {
-			if(modifier == SHIFT_DEFAULT)
-				defaultModifier |= KeyEvent.SHIFT_DOWN_MASK;
-			else
-				defaultModifier = modifier;
-		}
-		else if (defaultModifier == null) { // garbage in, no shortcurt out
-			defaultModifier = Groups.get(GROUP_NONE + GROUPS_DEFAULT);
-		}
-		ShortCut conflictsWith = null;
-		ShortCut potentialShortCut = findShortcut(requestedKey, defaultModifier);
-		if (potentialShortCut != null) { // 3 stage conflict handling
-			conflictsWith = potentialShortCut;
-			defaultModifier = Groups.get(requestedGroup + GROUPS_ALT1);
-			if (defaultModifier == null) { // garbage in, no shortcurt out
-				defaultModifier = Groups.get(GROUP_NONE + GROUPS_DEFAULT);
-			}
-			potentialShortCut = findShortcut(requestedKey, defaultModifier);
-			if (potentialShortCut != null) {
-				defaultModifier = Groups.get(requestedGroup + GROUPS_ALT2);
-				if (defaultModifier == null) { // garbage in, no shortcurt out
-					defaultModifier = Groups.get(GROUP_NONE + GROUPS_DEFAULT);
-				}
-				potentialShortCut = findShortcut(requestedKey, defaultModifier);
-				if (potentialShortCut != null) { // if all 3 modifiers for a group are used, we give up
-					potentialShortCut = findRandomShortcut(shortText, longText, requestedKey, requestedGroup);
-				} else {
-					potentialShortCut = new ShortCut(shortText, longText, requestedKey, requestedGroup, requestedKey, defaultModifier, false, false);
-				}
-			} else {
-				potentialShortCut = new ShortCut(shortText, longText, requestedKey, requestedGroup, requestedKey, defaultModifier, false, false);
-			}
-			if (originalShortCut != null && !originalShortCut.isSame(potentialShortCut)) {
-				displayWarning(conflictsWith, potentialShortCut, shortText, longText);
-			} else if (originalShortCut == null) {
-				System.out.println("Silent shortcut conflict: '"+shortText+"' moved by '"+conflictsWith.getShortText()+"' to '"+potentialShortCut.getKeyText()+"'.");
-			}
-		} else {
-			potentialShortCut = new ShortCut(shortText, longText, requestedKey, requestedGroup, requestedKey, defaultModifier, true, false);
-		}
-		ShortCuts.put(shortText, potentialShortCut);
-		return potentialShortCut;
-	}
-
-	// a lengthy warning message
-	private static void displayWarning(ShortCut conflictsWith, ShortCut potentialShortCut, String shortText, String longText) {
-		JOptionPane.showMessageDialog(Main.parent, tr("Setting the keyboard shortcut ''{0}'' for the action ''{1}'' ({2}) failed\n"+
-		                                              "because the shortcut is already taken by the action ''{3}'' ({4}).\n\n",
-		                                              conflictsWith.getKeyText(), longText, shortText,
-		                                              conflictsWith.getLongText(), conflictsWith.getShortText())+
-		                                              (potentialShortCut.getKeyText().equals("") ?
-		                                              	tr("This action will have no shortcut.\n\n")
-		                                              :
-		                                              	tr("Using the shortcut ''{0}'' instead.\n\n", potentialShortCut.getKeyText())
-		                                              )+
-		                                              tr("(Hint: You can edit the shortcuts in the preferences.)")
-		                             );
-	}
-}
Index: unk/src/org/openstreetmap/josm/tools/ShortCutLabel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ShortCutLabel.java	(revision 1083)
+++ 	(revision )
@@ -1,29 +1,0 @@
-// License: GPL. Copyright 2007 by Immanuel Scholz and others
-package org.openstreetmap.josm.tools;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.awt.event.KeyEvent;
-
-@Deprecated
-public class ShortCutLabel {
-	@Deprecated
-	public static String name(int shortCut, int modifiers) {
-		if (shortCut == 0 && modifiers == 0)
-			return "";
-		String s = "";
-		if ((modifiers & KeyEvent.CTRL_MASK) != 0 || (modifiers & KeyEvent.CTRL_DOWN_MASK) != 0)
-			s += tr("Ctrl-");
-		if ((modifiers & KeyEvent.ALT_MASK) != 0 || (modifiers & KeyEvent.ALT_DOWN_MASK) != 0)
-			s += tr("Alt-");
-		if ((modifiers & KeyEvent.ALT_GRAPH_MASK) != 0 || (modifiers & KeyEvent.ALT_GRAPH_DOWN_MASK) != 0)
-			s += tr("AltGr-");
-		if ((modifiers & KeyEvent.SHIFT_MASK) != 0 || (modifiers & KeyEvent.SHIFT_DOWN_MASK) != 0)
-			s += tr("Shift-");
-		if (shortCut >= KeyEvent.VK_F1 && shortCut <= KeyEvent.VK_F12)
-			s += "F"+(shortCut-KeyEvent.VK_F1+1);
-		else
-			s += Character.toUpperCase((char)shortCut);
-		return s;
-	}
-}
Index: /trunk/src/org/openstreetmap/josm/tools/Shortcut.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 1084)
+++ /trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 1084)
@@ -0,0 +1,440 @@
+//License: GPL. Copyright 2007 by Immanuel Scholz and others
+package org.openstreetmap.josm.tools;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+import org.openstreetmap.josm.Main;
+
+import java.awt.event.KeyEvent;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Collection;
+import javax.swing.KeyStroke;
+import javax.swing.JMenu;
+import javax.swing.JOptionPane;
+
+/**
+ * Global shortcut class.
+ *
+ * Note: This class represents a single shortcut, contains the factory to obtain
+ *       shortcut objects from, manages shortcuts and shortcut collisions, and
+ *       finally manages loading and saving shortcuts to/from the preferences.
+ *
+ * Action authors: You only need the registerShortcut() factory. Ignore everything
+ *                 else.
+ *
+ * All: Use only public methods that are also marked to be used. The others are
+ *      public so the shortcut preferences can use them.
+ *
+ */
+public class Shortcut {
+//  public static final int SHIFT = KeyEvent.SHIFT_DOWN_MASK;
+//  public static final int CTRL = KeyEvent.CTRL_DOWN_MASK;
+//  public static final int SHIFT_CTRL = KeyEvent.SHIFT_DOWN_MASK|KeyEvent.CTRL_DOWN_MASK;
+    public static final int SHIFT_DEFAULT = 1;
+    private String shortText;        // the unique ID of the shortcut
+    private String longText;         // a human readable description that will be shown in the preferences
+    private int requestedKey;        // the key, the caller requested
+    private int requestedGroup;      // the group, the caller requested
+    private int assignedKey;         // the key that actually is used
+    private int assignedModifier;    // the modifiers that are used
+    private boolean assignedDefault; // true if it got assigned what was requested. (Note: modifiers will be ignored in favour of group when loading it from the preferences then.)
+    private boolean assignedUser;    // true if the user changed this shortcut
+    private boolean automatic;       // true if the user cannot change this shortcut (Note: it also will not be saved into the preferences)
+    private boolean reset;           // true if the user requested this shortcut to be set to its default value (will happen on next restart, as this shortcut will not be saved to the preferences)
+
+    // simple constructor
+    private Shortcut(String shortText, String longText, int requestedKey, int requestedGroup, int assignedKey, int assignedModifier, boolean assignedDefault, boolean assignedUser) {
+        this.shortText = shortText;
+        this.longText = longText;
+        this.requestedKey = requestedKey;
+        this.requestedGroup = requestedGroup;
+        this.assignedKey = assignedKey;
+        this.assignedModifier = assignedModifier;
+        this.assignedDefault = assignedDefault;
+        this.assignedUser = assignedUser;
+        this.automatic = false;
+        this.reset = false;
+    }
+
+    public String getShortText() {
+        return shortText;
+    }
+
+    public String getLongText() {
+        return longText;
+    }
+
+    // a shortcut will be renamed when it is handed out again, because the original name
+    // may be a dummy
+    private void setLongText(String longText) {
+        this.longText = longText;
+    }
+
+    private int getRequestedKey() {
+        return requestedKey;
+    }
+
+    public int getRequestedGroup() {
+        return requestedGroup;
+    }
+
+    public int getAssignedKey() {
+        return assignedKey;
+    }
+
+    public int getAssignedModifier() {
+        return assignedModifier;
+    }
+
+    public boolean getAssignedDefault() {
+        return assignedDefault;
+    }
+
+    public boolean getAssignedUser() {
+        return assignedUser;
+    }
+
+    public boolean getAutomatic() {
+        return automatic;
+    }
+
+    private boolean getReset() {
+        return reset;
+    }
+
+    /**
+     * FOR PREF PANE ONLY
+     */
+    public void setAutomatic() {
+        automatic = true;
+    }
+
+    /**
+     * FOR PREF PANE ONLY
+     */
+    public void setAssignedModifier(int assignedModifier) {
+        this.assignedModifier = assignedModifier;
+    }
+
+    /**
+     * FOR PREF PANE ONLY
+     */
+    public void setAssignedKey(int assignedKey) {
+        this.assignedKey = assignedKey;
+    }
+
+    /**
+     * FOR PREF PANE ONLY
+     */
+    public void setAssignedUser(boolean assignedUser) {
+        this.reset = (!this.assignedUser && assignedUser);
+        if (assignedUser) assignedDefault = false;
+        this.assignedUser = assignedUser;
+    }
+
+    /**
+     * Use this to register the shortcut with Swing
+     */
+    public KeyStroke getKeyStroke() {
+        if (assignedModifier != -1) 
+            return KeyStroke.getKeyStroke(assignedKey, assignedModifier);		
+        return null;
+    }
+
+    private boolean isSame(int isKey, int isModifier) {
+        // -1 --- an unassigned shortcut is different from any other shortcut
+        return( isKey == assignedKey && isModifier == assignedModifier && assignedModifier != groups.get(GROUP_NONE));
+    }
+
+    // create a shortcut object from an string as saved in the preferences
+    private Shortcut(String prefString) {
+        String[] s = prefString.split(";");
+        this.shortText = s[0];
+        this.longText = s[1];
+        this.requestedKey = Integer.parseInt(s[2]);
+        this.requestedGroup = Integer.parseInt(s[3]);
+        this.assignedKey = Integer.parseInt(s[4]);
+        this.assignedModifier = Integer.parseInt(s[5]);
+        this.assignedDefault = Boolean.parseBoolean(s[6]);
+        this.assignedUser = Boolean.parseBoolean(s[7]);
+    }
+
+    // get a string that can be put into the preferences
+    private String asPrefString() {
+        return shortText + ";" + longText + ";" + requestedKey + ";" + requestedGroup + ";" + assignedKey + ";" + assignedModifier + ";" + assignedDefault + ";" + assignedUser;
+    }
+
+    private boolean isSame(Shortcut other) {
+        return assignedKey == other.assignedKey && assignedModifier == other.assignedModifier;
+    }
+
+    /**
+     * use this to set a menu's mnemonic
+     */
+    public void setMnemonic(JMenu menu) {
+        if (requestedGroup == GROUP_MNEMONIC && assignedModifier == groups.get(requestedGroup + GROUPS_DEFAULT) && getKeyStroke() != null && KeyEvent.getKeyText(assignedKey).length() == 1) {
+            menu.setMnemonic(KeyEvent.getKeyText(assignedKey).charAt(0)); //getKeyStroke().getKeyChar() seems not to work here
+        }
+    }
+
+    /**
+     * use this to get a human readable text for your shortcut
+     */
+    public String getKeyText() {
+        KeyStroke keyStroke = getKeyStroke();
+        if (keyStroke == null) return "";
+        String modifText = KeyEvent.getKeyModifiersText(keyStroke.getModifiers());
+        if ("".equals (modifText)) return KeyEvent.getKeyText (keyStroke.getKeyCode ());
+        return modifText + "+" + KeyEvent.getKeyText(keyStroke.getKeyCode ());
+    }
+
+    ///////////////////////////////
+    // everything's static below //
+    ///////////////////////////////
+
+    // here we store our shortcuts
+    private static Map<String, Shortcut> shortcuts = new LinkedHashMap<String, Shortcut>();
+
+    // and here our modifier groups
+    private static Map<Integer, Integer> groups = new HashMap<Integer, Integer>();
+
+    // check if something collides with an existing shortcut
+    private static Shortcut findShortcut(int requestedKey, int modifier) {
+        if (modifier == groups.get(GROUP_NONE)) {
+            return null;
+        }
+        for (Shortcut sc : shortcuts.values()) {
+            if (sc.isSame(requestedKey, modifier)) {
+                return sc;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * FOR PREF PANE ONLY
+     */
+    public static Collection<Shortcut> listAll() {
+        return shortcuts.values();
+    }
+
+    // try to find an unused shortcut
+    private static Shortcut findRandomShortcut(String shortText, String longText, int requestedKey, int requestedGroup) {
+        int[] mods = {groups.get(requestedGroup + GROUPS_DEFAULT), groups.get(requestedGroup + GROUPS_ALT1), groups.get(requestedGroup + GROUPS_ALT2)};
+        for (int m : mods) {
+            for (int k = KeyEvent.VK_A; k < KeyEvent.VK_Z; k++) { // we'll limit ourself to 100% safe keys
+                if ( findShortcut(k, m) == null ) {
+                    return new Shortcut(shortText, longText, requestedKey, requestedGroup, k, m, false, false);
+                }
+            }
+        }
+        return new Shortcut(shortText, longText, requestedKey, requestedGroup, requestedKey, groups.get(GROUP_NONE), false, false);
+    }
+
+    // use these constants to request shortcuts
+    public static final int GROUP_NONE = 0;          // no shortcut
+    public static final int GROUP_HOTKEY = 1;        // a button action, will use another modifier than MENU on system with a meta key
+    public static final int GROUP_MENU = 2;          // a menu action, e.g. "ctrl-e"/"cmd-e" (export)
+    public static final int GROUP_EDIT = 3;          // direct edit key, e.g. "a" (add)
+    public static final int GROUP_LAYER = 4;         // toggle one of the right-hand-side windows, e.g. "alt-l" (layers)
+    public static final int GROUP_DIRECT = 5;        // for non-letter keys, preferable without modifier, e.g. F5
+    public static final int GROUP_MNEMONIC = 6;      // for use with Menu.setMnemonic() only!
+    public static final int GROUP__MAX = 7;
+    public static final int GROUP_RESERVED = 1000;
+    public static final int GROUPS_DEFAULT = 0;
+    public static final int GROUPS_ALT1 = GROUP__MAX;
+    public static final int GROUPS_ALT2 = GROUP__MAX * 2;
+
+    // safely read a shortcut from the preferences
+    private static String[] getConfigStringArray(String key) {
+        String s = Main.pref.get(key, null);
+        if (s == null || s.equals("null") || s.equals(""))
+            return null;
+        return s.split(";");
+    }
+
+    // bootstrap
+    private static boolean initdone = false;
+    private static void doInit() {
+        if (initdone) return;
+        initdone = true;
+        // if we have no modifier groups in the config, we have to create them
+        if (Main.pref.get("shortcut.groups.configured", null) == null) {
+            Main.platform.initShortcutGroups();
+            Main.pref.put("shortcut.groups.configured", true);
+        }
+        // pull in the groups
+        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
+            groups.put(new Integer(i), new Integer(Main.pref.getInteger("shortcut.groups."+i, -1)));
+        }
+        // (1) System reserved shortcuts
+        Main.platform.initSystemShortcuts();
+        // (2) User defined shortcuts
+        int i = 0;
+        String p = Main.pref.get("shortcut.shortcut."+i, null);
+        while (p != null) {
+            Shortcut sc = new Shortcut(p);
+            if (sc.getAssignedUser()) registerShortcut(sc);
+            i++;
+            p = Main.pref.get("shortcut.shortcut."+i, null);
+        }
+        // Shortcuts at their default values
+        i = 0;
+        p = Main.pref.get("shortcut.shortcut."+i, null);
+        while (p != null) {
+            Shortcut sc = new Shortcut(p);
+            if (!sc.getAssignedUser() && sc.getAssignedDefault()) registerShortcut(sc);
+            i++;
+            p = Main.pref.get("shortcut.shortcut."+i, null);
+        }
+        // Shortcuts that were automatically moved
+        i = 0;
+        p = Main.pref.get("shortcut.shortcut."+i, null);
+        while (p != null) {
+            Shortcut sc = new Shortcut(p);
+            if (!sc.getAssignedUser() && !sc.getAssignedDefault()) registerShortcut(sc);
+            i++;
+            p = Main.pref.get("shortcut.shortcut."+i, null);
+        }
+    }
+
+    // shutdown handling
+    public static void savePrefs() {
+//      we save this directly from the preferences pane, so don't overwrite these values here
+//      for (int i = GROUP_NONE; i < GROUP__MAX+GROUPS_ALT2; i++) {
+//      Main.pref.put("shortcut.groups."+i, Groups.get(i).toString());
+//      }
+        int i = 0;
+        for (Shortcut sc : shortcuts.values()) {
+//          TODO: Remove sc.getAssignedUser() when we fixed all internal conflicts
+            if (!sc.getAutomatic() && !sc.getReset() && sc.getAssignedUser()) {
+                Main.pref.put("shortcut.shortcut."+i, sc.asPrefString());
+                i++;
+            }
+        }
+        Main.pref.put("shortcut.shortcut."+i, "");
+    }
+
+    // this is used to register a shortcut that was read from the preferences
+    private static void registerShortcut(Shortcut sc) {
+        registerShortcut(sc.getShortText(), sc.getLongText(), sc.getRequestedKey(), sc.getRequestedGroup(), sc.getAssignedModifier(), sc);
+    }
+
+    /**
+     * FOR PLATFORMHOOK USE ONLY
+     *
+     * This registers a system shortcut. See PlatformHook for details.
+     */
+    public static Shortcut registerSystemShortcut(String shortText, String longText, int key, int modifier) {
+        if (shortcuts.containsKey(shortText)) {
+            return shortcuts.get(shortText);
+        }
+        Shortcut potentialShortcut = findShortcut(key, modifier);
+        if (potentialShortcut != null) {
+            // this always is a logic error in the hook
+            System.err.println("CONFLICT WITH SYSTEM KEY "+shortText);
+            return null;
+        } 
+        potentialShortcut = new Shortcut(shortText, longText, key, GROUP_RESERVED, key, modifier, true, false);
+        shortcuts.put(shortText, potentialShortcut);
+        return potentialShortcut;
+    }
+
+    /**
+     * Register a shortcut.
+     *
+     * Here you get your shortcuts from. The parameters are:
+     *
+     * shortText - an ID. re-use a "system:*" ID if possible, else use something unique.
+     *             "menu:*" is reserved for menu mnemonics, "core:*" is reserved for
+     *             actions that are part of JOSM's core. Use something like
+     *             <pluginname>+":"+<actionname>
+     * longText - this will be displayed in the shortcut preferences dialog. Better
+     *            use soomething the user will recognize...
+     * requestedKey - the key you'd prefer. Use a KeyEvent.VK_* constant here.
+     * requestedGroup - the group this shortcut fits best. This will determine the
+     *                  modifiers your shortcut will get assigned. Use the GROUP_*
+     *                  constants defined above.
+     */
+    public static Shortcut registerShortcut(String shortText, String longText, int requestedKey, int requestedGroup, int modifier) {
+        return registerShortcut(shortText, longText, requestedKey, requestedGroup, modifier, null);
+    }
+    public static Shortcut registerShortcut(String shortText, String longText, int requestedKey, int requestedGroup) {
+        return registerShortcut(shortText, longText, requestedKey, requestedGroup, null, null);
+    }
+
+    // and now the workhorse. same parameters as above, just one more: if originalShortcut is not null and
+    // is different from the shortcut that will be assigned, a popup warning will be displayed to the user.
+    // This is used when registering shortcuts that have been visible to the user before (read: have been
+    // read from the preferences file). New shortcuts will never warn, even when they land on some funny
+    // random fallback key like Ctrl+Alt+Shift+Z for "File Open..." <g>
+    private static Shortcut registerShortcut(String shortText, String longText, int requestedKey, int requestedGroup, Integer modifier,
+            Shortcut originalShortcut) {
+        doInit();
+        if (shortcuts.containsKey(shortText)) { // a re-register? maybe a sc already read from the preferences?
+            Shortcut sc = shortcuts.get(shortText);
+            sc.setLongText(longText); // or set by the platformHook, in this case the original longText doesn't match the real action
+            return sc;
+        }
+        Integer defaultModifier = groups.get(requestedGroup + GROUPS_DEFAULT);
+        if(modifier != null) {
+            if(modifier == SHIFT_DEFAULT)
+                defaultModifier |= KeyEvent.SHIFT_DOWN_MASK;
+            else
+                defaultModifier = modifier;
+        }
+        else if (defaultModifier == null) { // garbage in, no shortcurt out
+            defaultModifier = groups.get(GROUP_NONE + GROUPS_DEFAULT);
+        }
+        Shortcut conflictsWith = null;
+        Shortcut potentialShortcut = findShortcut(requestedKey, defaultModifier);
+        if (potentialShortcut != null) { // 3 stage conflict handling
+            conflictsWith = potentialShortcut;
+            defaultModifier = groups.get(requestedGroup + GROUPS_ALT1);
+            if (defaultModifier == null) { // garbage in, no shortcurt out
+                defaultModifier = groups.get(GROUP_NONE + GROUPS_DEFAULT);
+            }
+            potentialShortcut = findShortcut(requestedKey, defaultModifier);
+            if (potentialShortcut != null) {
+                defaultModifier = groups.get(requestedGroup + GROUPS_ALT2);
+                if (defaultModifier == null) { // garbage in, no shortcurt out
+                    defaultModifier = groups.get(GROUP_NONE + GROUPS_DEFAULT);
+                }
+                potentialShortcut = findShortcut(requestedKey, defaultModifier);
+                if (potentialShortcut != null) { // if all 3 modifiers for a group are used, we give up
+                    potentialShortcut = findRandomShortcut(shortText, longText, requestedKey, requestedGroup);
+                } else {
+                    potentialShortcut = new Shortcut(shortText, longText, requestedKey, requestedGroup, requestedKey, defaultModifier, false, false);
+                }
+            } else {
+                potentialShortcut = new Shortcut(shortText, longText, requestedKey, requestedGroup, requestedKey, defaultModifier, false, false);
+            }
+            if (originalShortcut != null && !originalShortcut.isSame(potentialShortcut)) {
+                displayWarning(conflictsWith, potentialShortcut, shortText, longText);
+            } else if (originalShortcut == null) {
+                System.out.println("Silent shortcut conflict: '"+shortText+"' moved by '"+conflictsWith.getShortText()+"' to '"+potentialShortcut.getKeyText()+"'.");
+            }
+        } else {
+            potentialShortcut = new Shortcut(shortText, longText, requestedKey, requestedGroup, requestedKey, defaultModifier, true, false);
+        }
+        shortcuts.put(shortText, potentialShortcut);
+        return potentialShortcut;
+    }
+
+    // a lengthy warning message
+    private static void displayWarning(Shortcut conflictsWith, Shortcut potentialShortcut, String shortText, String longText) {
+        JOptionPane.showMessageDialog(Main.parent, 
+                tr("Setting the keyboard shortcut ''{0}'' for the action ''{1}'' ({2}) failed\n"+
+                        "because the shortcut is already taken by the action ''{3}'' ({4}).\n\n",
+                        conflictsWith.getKeyText(), longText, shortText,
+                        conflictsWith.getLongText(), conflictsWith.getShortText())+
+                        (potentialShortcut.getKeyText().equals("") ?
+                                tr("This action will have no shortcut.\n\n")
+                                :
+                                    tr("Using the shortcut ''{0}'' instead.\n\n", potentialShortcut.getKeyText())
+                        )+
+                        tr("(Hint: You can edit the shortcuts in the preferences.)")
+        );
+    }
+}
