Index: applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java	(revision 20839)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java	(revision 20867)
@@ -21,4 +21,6 @@
 import java.util.zip.GZIPInputStream;
 
+import javax.swing.AbstractAction;
+import javax.swing.Action;
 import javax.swing.DefaultListModel;
 import javax.swing.JButton;
@@ -415,3 +417,165 @@
 	+ formatS.format(second));
   }
+  
+  public Action getFocusWaypointNameAction()
+  {
+    return new FocusWaypointNameAction();
+  }
+  
+  public Action getFocusWaypointShelterAction(String shelter)
+  {
+    return new FocusWaypointShelterAction(shelter);
+  }
+
+  public Action getFocusWaypointDeleteAction()
+  {
+    return new AbstractAction()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+	JTable table = dialog.getWaypointsTable();
+	int row = table.getEditingRow();
+	if (row < 0)
+	  return;
+	table.clearSelection();
+	table.addRowSelectionInterval(row, row);
+	Main.main.undoRedo.add
+	    (new WaypointsDisableCommand(StopImporterAction.this));
+      }
+    };
+  }
+
+  public Action getFocusTrackStoplistNameAction()
+  {
+    return new FocusTrackStoplistNameAction();
+  }
+  
+  public Action getFocusTrackStoplistShelterAction(String shelter)
+  {
+    return new FocusTrackStoplistShelterAction(shelter);
+  }
+
+  public Action getFocusStoplistDeleteAction()
+  {
+    return new AbstractAction()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+	JTable table = dialog.getStoplistTable();
+	int row = table.getEditingRow();
+	if (row < 0)
+	  return;
+	table.clearSelection();
+	table.addRowSelectionInterval(row, row);
+	Main.main.undoRedo.add
+	    (new TrackStoplistDeleteCommand(StopImporterAction.this));
+      }
+    };
+  }
+
+  private class FocusWaypointNameAction extends AbstractAction
+  {
+    public void actionPerformed(ActionEvent e)
+    {
+      JTable table = dialog.getWaypointsTable();
+      showNodesFromTable(table, waypointTM.nodes);
+      markNodesFromTable(table, waypointTM.nodes);
+      int row = table.getEditingRow();
+      if (row < 0)
+	row = 0;
+      waypointTM.inEvent = true;
+      if (table.getCellEditor() != null)
+      {
+	if (!table.getCellEditor().stopCellEditing())
+	  table.getCellEditor().cancelCellEditing();
+      }
+      table.editCellAt(row, 1);
+      table.getCellEditor().getTableCellEditorComponent
+	  (table, "", true, row, 1);
+      waypointTM.inEvent = false;
+    }
+  };
+  
+  private class FocusWaypointShelterAction extends AbstractAction
+  {
+    private String defaultShelter = null;
+    
+    public FocusWaypointShelterAction(String defaultShelter)
+    {
+      this.defaultShelter = defaultShelter;
+    }
+    
+    public void actionPerformed(ActionEvent e)
+    {
+      JTable table = dialog.getWaypointsTable();
+      showNodesFromTable(table, waypointTM.nodes);
+      markNodesFromTable(table, waypointTM.nodes);
+      int row = table.getEditingRow();
+      if (row < 0)
+	row = 0;
+      waypointTM.inEvent = true;
+      if (table.getCellEditor() != null)
+      {
+	if (!table.getCellEditor().stopCellEditing())
+	  table.getCellEditor().cancelCellEditing();
+      }
+      table.editCellAt(row, 2);
+      waypointTM.inEvent = false;
+      table.getCellEditor().getTableCellEditorComponent
+          (table, defaultShelter, true, row, 2);
+    }
+  };
+  
+  private class FocusTrackStoplistNameAction extends AbstractAction
+  {
+    public void actionPerformed(ActionEvent e)
+    {
+      JTable table = dialog.getStoplistTable();
+      showNodesFromTable(table, currentTrack.stoplistTM.getNodes());
+      markNodesFromTable(table, currentTrack.stoplistTM.getNodes());
+      int row = table.getEditingRow();
+      if (row < 0)
+	row = 0;
+      currentTrack.inEvent = true;
+      if (table.getCellEditor() != null)
+      {
+	if (!table.getCellEditor().stopCellEditing())
+	  table.getCellEditor().cancelCellEditing();
+      }
+      table.editCellAt(row, 1);
+      table.getCellEditor().getTableCellEditorComponent
+          (table, "", true, row, 1);
+      currentTrack.inEvent = false;
+    }
+  };
+  
+  private class FocusTrackStoplistShelterAction extends AbstractAction
+  {
+    private String defaultShelter = null;
+    
+    public FocusTrackStoplistShelterAction(String defaultShelter)
+    {
+      this.defaultShelter = defaultShelter;
+    }
+    
+    public void actionPerformed(ActionEvent e)
+    {
+      JTable table = dialog.getStoplistTable();
+      showNodesFromTable(table, currentTrack.stoplistTM.getNodes());
+      markNodesFromTable(table, currentTrack.stoplistTM.getNodes());
+      int row = table.getEditingRow();
+      if (row < 0)
+	row = 0;
+      currentTrack.inEvent = true;
+      if (table.getCellEditor() != null)
+      {
+	if (!table.getCellEditor().stopCellEditing())
+	  table.getCellEditor().cancelCellEditing();
+      }
+      table.editCellAt(row, 2);
+      currentTrack.inEvent = false;
+      table.getCellEditor().getTableCellEditorComponent
+          (table, defaultShelter, true, row, 2);
+    }
+  };
 }
Index: applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterDialog.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterDialog.java	(revision 20839)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterDialog.java	(revision 20867)
@@ -25,4 +25,5 @@
 import javax.swing.JButton;
 import javax.swing.JComboBox;
+import javax.swing.JComponent;
 import javax.swing.JDialog;
 import javax.swing.JFileChooser;
@@ -35,4 +36,5 @@
 import javax.swing.JTable;
 import javax.swing.JTextField;
+import javax.swing.KeyStroke;
 import javax.swing.ListSelectionModel;
 import javax.swing.event.ListSelectionEvent;
@@ -93,5 +95,5 @@
       
     //Tracks Tab
-    Container contentPane = tabTracks;
+    JPanel contentPane = tabTracks;
     GridBagLayout gridbag = new GridBagLayout();
     GridBagConstraints layoutCons = new GridBagConstraints();
@@ -315,13 +317,37 @@
     contentPane.add(bSuggestStops);
       
-      //Stops Tab
+    //Stops Tab
     contentPane = tabStops;
     gridbag = new GridBagLayout();
     layoutCons = new GridBagConstraints();
     contentPane.setLayout(gridbag);
+    contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put
+        (KeyStroke.getKeyStroke("alt N"), "stopImporter.focusName");
+    contentPane.getActionMap().put
+	("stopImporter.focusName", controller.getFocusTrackStoplistNameAction());
+    contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put
+        (KeyStroke.getKeyStroke("alt S"), "stopImporter.focusShelterYes");
+    contentPane.getActionMap().put
+	("stopImporter.focusShelterYes",
+	 controller.getFocusTrackStoplistShelterAction("yes"));
+    contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put
+        (KeyStroke.getKeyStroke("alt T"), "stopImporter.focusShelterNo");
+    contentPane.getActionMap().put
+	("stopImporter.focusShelterNo",
+	 controller.getFocusTrackStoplistShelterAction("no"));
+    contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put
+        (KeyStroke.getKeyStroke("alt U"), "stopImporter.focusShelterImplicit");
+    contentPane.getActionMap().put
+	("stopImporter.focusShelterImplicit",
+	 controller.getFocusTrackStoplistShelterAction("implicit"));
+    contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put
+        (KeyStroke.getKeyStroke("alt D"), "stopImporter.stoplistDelete");
+    contentPane.getActionMap().put
+	("stopImporter.stoplistDelete",
+	 controller.getFocusStoplistDeleteAction());
       
     stoplistTable = new JTable();
     JScrollPane tableSP = new JScrollPane(stoplistTable);
-      
+    
     layoutCons.gridx = 0;
     layoutCons.gridy = 0;
@@ -428,9 +454,33 @@
     contentPane.add(bSort);
       
-      //Waypoints Tab
+    //Waypoints Tab
     contentPane = tabWaypoints;
     gridbag = new GridBagLayout();
     layoutCons = new GridBagConstraints();
     contentPane.setLayout(gridbag);
+    contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put
+        (KeyStroke.getKeyStroke("alt N"), "stopImporter.focusName");
+    contentPane.getActionMap().put
+	("stopImporter.focusName", controller.getFocusWaypointNameAction());
+    contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put
+        (KeyStroke.getKeyStroke("alt S"), "stopImporter.focusShelterYes");
+    contentPane.getActionMap().put
+	("stopImporter.focusShelterYes",
+	 controller.getFocusWaypointShelterAction("yes"));
+    contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put
+        (KeyStroke.getKeyStroke("alt T"), "stopImporter.focusShelterNo");
+    contentPane.getActionMap().put
+	("stopImporter.focusShelterNo",
+	 controller.getFocusWaypointShelterAction("no"));
+    contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put
+        (KeyStroke.getKeyStroke("alt U"), "stopImporter.focusShelterImplicit");
+    contentPane.getActionMap().put
+	("stopImporter.focusShelterImplicit",
+	 controller.getFocusWaypointShelterAction("implicit"));
+    contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put
+        (KeyStroke.getKeyStroke("alt D"), "stopImporter.waypointsDelete");
+    contentPane.getActionMap().put
+	("stopImporter.waypointsDelete",
+	 controller.getFocusWaypointDeleteAction());
       
     waypointTable = new JTable();
Index: applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistNameCommand.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistNameCommand.java	(revision 20839)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistNameCommand.java	(revision 20867)
@@ -40,4 +40,6 @@
     this.name = (String)trackref.stoplistTM.getValueAt(workingLine, 1);
     this.shelter = (String)trackref.stoplistTM.getValueAt(workingLine, 2);
+    if ("".equals(this.shelter))
+      this.shelter = null;
   }
   
Index: applications/editors/josm/plugins/public_transport/src/public_transport/WaypointsNameCommand.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/WaypointsNameCommand.java	(revision 20839)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/WaypointsNameCommand.java	(revision 20867)
@@ -33,5 +33,5 @@
     this.shelter = shelter;
     if ("".equals(shelter))
-      shelter = null;
+      this.shelter = null;
   }
   
