Index: /trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/Main.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/Main.java	(revision 3327)
@@ -301,5 +301,5 @@
         Object existing = inputMap.get(keyStroke);
         if (existing != null && !existing.equals(action)) {
-            System.out.println(String.format("Keystroke is already assigned to %s, will be overridden by %s", existing, action));
+            System.out.println(String.format("Keystroke %s is already assigned to %s, will be overridden by %s", keyStroke, existing, action));
         }
         inputMap.put(keyStroke, action);
@@ -309,5 +309,5 @@
 
     public static void unregisterActionShortcut(Shortcut shortcut) {
-        contentPanePrivate.getInputMap().remove(shortcut.getKeyStroke());
+        contentPanePrivate.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(shortcut.getKeyStroke());
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 3327)
@@ -72,4 +72,8 @@
     }
 
+    public static void autoScale(String mode) {
+        new AutoScaleAction(mode, false).autoScale();
+    }
+
     private final String mode;
 
@@ -101,4 +105,15 @@
         return shortcut;
     }
+
+    /**
+     *
+     * @param mode
+     * @param marker Used only to differentiate from default constructor
+     */
+    private AutoScaleAction(String mode, boolean marker) {
+        super(false);
+        this.mode = mode;
+    }
+
 
     public AutoScaleAction(String mode) {
Index: /trunk/src/org/openstreetmap/josm/actions/JosmAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 3327)
@@ -82,6 +82,12 @@
 
     public JosmAction() {
+        this(true);
+    }
+
+    public JosmAction(boolean installAdapters) {
         setHelpId();
-        installAdapters();
+        if (installAdapters) {
+            installAdapters();
+        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/MoveAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 3327)
@@ -2,6 +2,6 @@
 package org.openstreetmap.josm.actions;
 
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 
 import java.awt.event.ActionEvent;
@@ -28,4 +28,5 @@
 
     public enum Direction { UP, LEFT, RIGHT, DOWN }
+
     private Direction myDirection;
 
@@ -63,4 +64,7 @@
     public void actionPerformed(ActionEvent event) {
 
+        if (!Main.isDisplayingMapView())
+            return;
+
         // find out how many "real" units the objects have to be moved in order to
         // achive an 1-pixel movement
@@ -73,17 +77,17 @@
 
         switch (myDirection) {
-            case UP:
-                distx = 0;
-                disty = -disty;
-                break;
-            case DOWN:
-                distx = 0;
-                break;
-            case LEFT:
-                disty = 0;
-                distx = -distx;
-                break;
-            default:
-                disty = 0;
+        case UP:
+            distx = 0;
+            disty = -disty;
+            break;
+        case DOWN:
+            distx = 0;
+            break;
+        case LEFT:
+            disty = 0;
+            distx = -distx;
+            break;
+        default:
+            disty = 0;
         }
 
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 3327)
@@ -88,4 +88,6 @@
     private EastNorth currentMouseEastNorth;
 
+    private Shortcut extraShortcut;
+
     public DrawAction(MapFrame mapFrame) {
         super(tr("Draw"), "node/autonode", tr("Draw nodes"),
@@ -94,5 +96,6 @@
 
         // Add extra shortcut N
-        Main.registerActionShortcut(this, Shortcut.registerShortcut("mapmode:drawfocus", tr("Mode: Draw Focus"), KeyEvent.VK_N, Shortcut.GROUP_EDIT));
+        extraShortcut = Shortcut.registerShortcut("mapmode:drawfocus", tr("Mode: Draw Focus"), KeyEvent.VK_N, Shortcut.GROUP_EDIT);
+        Main.registerActionShortcut(this, extraShortcut);
 
         cursorCrosshair = getCursor();
@@ -241,6 +244,7 @@
         //
         DataSet ds = getCurrentDataSet();
-        if(ds != null)
+        if(ds != null) {
             ds.fireSelectionChanged();
+        }
     }
 
@@ -994,3 +998,9 @@
         setEnabled(getEditLayer() != null);
     }
+
+    @Override
+    public void destroy() {
+        super.destroy();
+        Main.unregisterActionShortcut(extraShortcut);
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 3327)
@@ -41,8 +41,10 @@
 import org.openstreetmap.josm.actions.JoinNodeWayAction;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.actions.JumpToAction;
 import org.openstreetmap.josm.actions.MergeLayerAction;
 import org.openstreetmap.josm.actions.MergeNodesAction;
 import org.openstreetmap.josm.actions.MergeSelectionAction;
 import org.openstreetmap.josm.actions.MirrorAction;
+import org.openstreetmap.josm.actions.MoveAction;
 import org.openstreetmap.josm.actions.MoveNodeAction;
 import org.openstreetmap.josm.actions.NewAction;
@@ -175,4 +177,11 @@
     public final int defaultMenuPos = 5;
 
+    public final JosmAction moveUpAction = new MoveAction(MoveAction.Direction.UP);
+    public final JosmAction moveDownAction = new MoveAction(MoveAction.Direction.DOWN);
+    public final JosmAction moveLeftAction = new MoveAction(MoveAction.Direction.LEFT);
+    public final JosmAction moveRightAction = new MoveAction(MoveAction.Direction.RIGHT);
+    public final JumpToAction jumpToAct = new JumpToAction();
+
+
     /**
      * Add a JosmAction to a menu.
Index: /trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 3327)
@@ -17,5 +17,4 @@
 import java.awt.Toolkit;
 import java.awt.event.AWTEventListener;
-import java.awt.event.ComponentEvent;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyAdapter;
@@ -39,5 +38,4 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.JumpToAction;
 import org.openstreetmap.josm.data.coor.CoordinateFormat;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -504,6 +502,6 @@
     private AWTEventListener awtListener = new AWTEventListener() {
         public void eventDispatched(AWTEvent event) {
-            if (event instanceof ComponentEvent &&
-                    ((ComponentEvent)event).getComponent() == mv) {
+            if (event instanceof InputEvent &&
+                    ((InputEvent)event).getComponent() == mv) {
                 synchronized (collector) {
                     mouseState.modifiers = ((InputEvent)event).getModifiersEx();
@@ -575,7 +573,6 @@
         this.collector = new Collector(mapFrame);
 
-        JumpToAction JumpToAct = new JumpToAction();
-        lonText.addMouseListener(JumpToAct);
-        latText.addMouseListener(JumpToAct);
+        lonText.addMouseListener(Main.main.menu.jumpToAct);
+        latText.addMouseListener(Main.main.menu.jumpToAct);
 
         // Listen for mouse movements and set the position text field
Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 3327)
@@ -34,5 +34,4 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
-import org.openstreetmap.josm.actions.MoveAction;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
 import org.openstreetmap.josm.data.Bounds;
@@ -190,4 +189,10 @@
     public MapView(final JPanel contentPane) {
         Main.pref.addPreferenceChangeListener(this);
+
+        //        new MoveAction(MoveAction.Direction.UP);
+        //        new MoveAction(MoveAction.Direction.DOWN);
+        //        new MoveAction(MoveAction.Direction.LEFT);
+        //        new MoveAction(MoveAction.Direction.RIGHT);
+
         addComponentListener(new ComponentAdapter(){
             @Override public void componentResized(ComponentEvent e) {
@@ -206,15 +211,11 @@
                     if (!zoomToDataSetBoundingBox(layer.data)) {
                         // no bounding box defined
-                        new AutoScaleAction("data").actionPerformed(null);
+                        AutoScaleAction.autoScale("data");
                     }
                 } else {
-                    new AutoScaleAction("layer").actionPerformed(null);
+                    AutoScaleAction.autoScale("layer");
                 }
 
                 new MapMover(MapView.this, contentPane);
-                new MoveAction(MoveAction.Direction.UP);
-                new MoveAction(MoveAction.Direction.DOWN);
-                new MoveAction(MoveAction.Direction.LEFT);
-                new MoveAction(MoveAction.Direction.RIGHT);
             }
         });
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 3327)
@@ -294,5 +294,5 @@
      * Launches the search dialog
      */
-    class SearchAction extends AbstractAction implements EditLayerChangeListener {
+    static class SearchAction extends AbstractAction implements EditLayerChangeListener {
         public SearchAction() {
             putValue(NAME, tr("Search"));
@@ -358,5 +358,5 @@
 
         public void actionPerformed(ActionEvent e) {
-            new AutoScaleAction("selection").autoScale();
+            AutoScaleAction.autoScale("selection");
         }
 
@@ -423,4 +423,5 @@
         }
 
+        @Override
         public void actionPerformed(ActionEvent e) {
             Relation relation = (Relation)model.getSelected().toArray()[0];
@@ -428,10 +429,11 @@
             Collection<OsmPrimitive> selection = model.getAllElements();
             for (RelationMember member: relation.getMembers()) {
-                if (selection.contains(member.getMember()))
+                if (selection.contains(member.getMember())) {
                     members.add(member);
+                }
             }
             Main.map.relationListDialog.selectRelation(relation);
             RelationEditor.getEditor(Main.map.mapView.getEditLayer(), relation,
-                members).setVisible(true);
+                    members).setVisible(true);
         }
     }
@@ -801,10 +803,11 @@
             {
                 text.append(": ");
-                for(OsmPrimitive o : sel)
-                   text.append(o.getDisplayName(df));
+                for(OsmPrimitive o : sel) {
+                    text.append(o.getDisplayName(df));
+                }
                 setText(text.toString());
-            }
-            else
+            } else {
                 setText(tr("Selection: {0}", text));
+            }
             addActionListener(this);
         }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 3327)
@@ -51,6 +51,6 @@
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumnModel;
 import javax.swing.table.TableModel;
-import javax.swing.table.TableColumnModel;
 import javax.swing.text.JTextComponent;
 
@@ -157,4 +157,7 @@
 
     private DataSetListenerAdapter dataChangedAdapter = new DataSetListenerAdapter(this);
+    private AddAction addAction = new AddAction();
+    private Shortcut addActionShortcut = Shortcut.registerShortcut("properties:add", tr("Add Properties"), KeyEvent.VK_B,
+            Shortcut.GROUP_MNEMONIC);
 
     @Override
@@ -164,4 +167,5 @@
         MapView.addEditLayerChangeListener(this);
         updateSelection();
+        Main.registerActionShortcut(addAction, addActionShortcut);
     }
 
@@ -171,4 +175,5 @@
         SelectionEventManager.getInstance().removeSelectionListener(this);
         MapView.removeEditLayerChangeListener(this);
+        Main.unregisterActionShortcut(addActionShortcut);
     }
 
@@ -331,5 +336,4 @@
      * @param row
      */
-    @SuppressWarnings("unchecked")
     void membershipEdit(int row) {
         Relation relation = (Relation)membershipData.getValueAt(row, 0);
@@ -474,5 +478,5 @@
             + tr("Please select the objects you want to change properties for.") + "</p></html>");
 
-    class MemberInfo {
+    static class MemberInfo {
         List<RelationMember> role = new ArrayList<RelationMember>();
         List<Integer> position = new ArrayList<Integer>();
@@ -480,6 +484,6 @@
         void add(RelationMember r, Integer p)
         {
-          role.add(r);
-          position.add(p);
+            role.add(r);
+            position.add(p);
         }
         String getPositionString()
@@ -496,8 +500,9 @@
                         ++cnt;
                     } else {
-                        if(cnt == 1)
+                        if(cnt == 1) {
                             positionString += ","+String.valueOf(last);
-                        else if(cnt > 1)
+                        } else if(cnt > 1) {
                             positionString += "-"+String.valueOf(last);
+                        }
                         positionString += "-"+String.valueOf(cur);
                         cnt = 0;
@@ -505,11 +510,13 @@
                     last = cur;
                 }
-                if(cnt == 1)
+                if(cnt == 1) {
                     positionString += ","+String.valueOf(last);
-                else if(cnt > 1)
+                } else if(cnt > 1) {
                     positionString += "-"+String.valueOf(last);
-            }
-            if(positionString.length() > 20)
-              positionString = positionString.substring(0,17)+"...";
+                }
+            }
+            if(positionString.length() > 20) {
+                positionString = positionString.substring(0,17)+"...";
+            }
             return positionString;
         }
@@ -589,5 +596,4 @@
 
         mod.getColumn(1).setCellRenderer(new DefaultTableCellRenderer() {
-            @SuppressWarnings("unchecked")
             @Override public Component getTableCellRendererComponent(JTable table, Object value,
                     boolean isSelected, boolean hasFocus, int row, int column) {
@@ -619,5 +625,4 @@
 
         mod.getColumn(2).setCellRenderer(new DefaultTableCellRenderer() {
-            @SuppressWarnings("unchecked")
             @Override public Component getTableCellRendererComponent(JTable table, Object value,
                     boolean isSelected, boolean hasFocus, int row, int column) {
@@ -667,5 +672,4 @@
 
         // -- add action and shortcut
-        AddAction addAction = new AddAction();
         this.btnAdd = new SideButton(addAction);
         btnAdd.setFocusable(true);
@@ -673,7 +677,4 @@
         btnAdd.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "onEnter");
         btnAdd.getActionMap().put("onEnter", addAction);
-
-        Main.registerActionShortcut(addAction, Shortcut.registerShortcut("properties:add", tr("Add Properties"), KeyEvent.VK_B,
-                Shortcut.GROUP_MNEMONIC));
 
         // -- edit action
@@ -873,6 +874,7 @@
                     Relation r = (Relation) ref;
                     MemberInfo mi = roles.get(r);
-                    if(mi == null)
+                    if(mi == null) {
                         mi = new MemberInfo();
+                    }
                     roles.put(r, mi);
                     int i = 1;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 3327)
@@ -203,6 +203,5 @@
             OsmPrimitive primitive = getMemberTableModel().getReferredPrimitive(row);
             layer.data.setSelected(primitive);
-            AutoScaleAction action = new AutoScaleAction("selection");
-            action.autoScale();
+            AutoScaleAction.autoScale("selection");
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 3327)
@@ -203,5 +203,5 @@
             if (p!= null) {
                 getEditLayer().data.setSelected(p.getPrimitiveId());
-                new AutoScaleAction("selection").autoScale();
+                AutoScaleAction.autoScale("selection");
             }
         }
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 3326)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 3327)
@@ -829,5 +829,4 @@
         if (data == null)
             return null;
-        OsmDataLayer layer = Main.main.getEditLayer();
         PresetPanel p = new PresetPanel();
         LinkedList<Item> l = new LinkedList<Item>();
