Index: src/org/openstreetmap/josm/actions/DialogsToggleAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/DialogsToggleAction.java	(revision 5965)
+++ src/org/openstreetmap/josm/actions/DialogsToggleAction.java	(working copy)
@@ -29,7 +29,7 @@
                 tr("Toggle dialogs panel"),
                 (Icon) null, /* no icon */
                 tr("Toggle dialogs panel, maximize mapview"),
-                Shortcut.registerShortcut("menu:view:dialogspanel", tr("Toggle dialogs panel"),KeyEvent.CHAR_UNDEFINED, Shortcut.NONE),
+                Shortcut.registerShortcut("menu:view:dialogspanel", tr("Toggle dialogs panel"),KeyEvent.VK_TAB, Shortcut.DIRECT),
                 true, "dialogspanel", /* register in toolbar */
                 false
         );
Index: src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 5965)
+++ src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(working copy)
@@ -127,7 +127,7 @@
                 mapFrame, ImageProvider.getCursor("crosshair", null));
 
         snappingShortcut = Shortcut.registerShortcut("mapmode:drawanglesnapping",
-                tr("Mode: Draw Angle snapping"), KeyEvent.VK_TAB, Shortcut.DIRECT);
+                tr("Mode: Draw Angle snapping"), KeyEvent.CHAR_UNDEFINED, Shortcut.NONE);
         snapChangeAction = new SnapChangeAction();
         snapCheckboxMenuItem = addMenuItem();
         snapHelper.setMenuCheckBox(snapCheckboxMenuItem);
Index: src/org/openstreetmap/josm/gui/ExtendedDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 5965)
+++ src/org/openstreetmap/josm/gui/ExtendedDialog.java	(working copy)
@@ -1,9 +1,11 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui;
 
+import java.awt.AWTKeyStroke;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Component;
+import java.awt.DefaultKeyboardFocusManager;
 import java.awt.Dimension;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
@@ -14,9 +16,11 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 
 import javax.swing.AbstractAction;
 import javax.swing.Action;
+import javax.swing.FocusManager;
 import javax.swing.Icon;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
@@ -100,6 +104,13 @@
      */
     private boolean placeContentInScrollPane;
 
+    /** 
+    * TAB is de-registered as a defaultFocusTraversalKey and reused 
+    * in the main application to quickly toggle dialogs.  Within 
+    * ExtendedDialogs however, we'll want TAB to traverse focus. 
+    */ 
+    private static Set<AWTKeyStroke> defaultFocusTraversalKeys = (new DefaultKeyboardFocusManager()).getDefaultFocusTraversalKeys(FocusManager.FORWARD_TRAVERSAL_KEYS); 
+ 	 
     // For easy access when inherited
     protected Insets contentInsets = new Insets(10,5,0,5);
     protected ArrayList<JButton> buttons = new ArrayList<JButton>();
@@ -147,6 +158,7 @@
             setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
         }
         this.disposeOnClose = disposeOnClose;
+        setFocusTraversalKeys(FocusManager.FORWARD_TRAVERSAL_KEYS, defaultFocusTraversalKeys);
     }
 
     /**
Index: src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- src/org/openstreetmap/josm/gui/MapFrame.java	(revision 5965)
+++ src/org/openstreetmap/josm/gui/MapFrame.java	(working copy)
@@ -75,8 +75,8 @@
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Shortcut;
 
-
 /**
  * One Map frame with one dataset behind. This is the container gui class whose
  * display can be set to the different views.
@@ -236,8 +236,26 @@
         // status line below the map
         statusLine = new MapStatus(this);
         MapView.addLayerChangeListener(this);
+        
+         // unregister TAB key if needed 
+ 	if (Shortcut.findShortcut(KeyEvent.VK_TAB, 0) != null) { 
+ 	    unregisterTabKey(); 
+        }
     }
 
+    /** 
+    * Free tabulator key (call if someone else needs it) 
+    */ 
+    public final void unregisterTabKey() { 
+        System.out.println("Tab key unregistered"); 
+ 	HashSet<KeyStroke> ks = new HashSet<KeyStroke>(1); 
+ 	ks.add(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, KeyEvent.CTRL_DOWN_MASK)); 
+ 	KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager(); 
+ 	kfm.setDefaultFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, ks); 
+ 	splitPane.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, ks); 
+    }
+        
+        
     public boolean selectSelectTool(boolean onlyIfModeless) {
         if(onlyIfModeless && !Main.pref.getBoolean("modeless", false))
             return false;
Index: src/org/openstreetmap/josm/tools/Shortcut.java
===================================================================
--- src/org/openstreetmap/josm/tools/Shortcut.java	(revision 5965)
+++ src/org/openstreetmap/josm/tools/Shortcut.java	(working copy)
@@ -245,7 +245,7 @@
     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) {
+    public static Shortcut findShortcut(int requestedKey, int modifier) {
         if (modifier == getGroupModifier(NONE))
             return null;
         for (Shortcut sc : shortcuts.values()) {
