Index: applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java	(revision 20835)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java	(revision 20839)
@@ -281,5 +281,5 @@
       
       //Prepare Stoplist
-      dialog.getStoplistTable().setModel
+      dialog.setStoplistTableModel
           (((TrackReference)tracksListModel.elementAt(selectedPos)).stoplistTM);
     }
Index: applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterDialog.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterDialog.java	(revision 20835)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterDialog.java	(revision 20839)
@@ -621,4 +621,20 @@
   }
   
+  public void setStoplistTableModel(TrackStoplistTableModel model)
+  {
+    stoplistTable.setModel(model);
+    JComboBox comboBox = new JComboBox();
+    comboBox.addItem("");
+    comboBox.addItem("yes");
+    comboBox.addItem("no");
+    comboBox.addItem("implicit");
+    stoplistTable.getColumnModel().getColumn(2)
+	.setCellEditor(new DefaultCellEditor(comboBox));
+    int width = stoplistTable.getPreferredSize().width;
+    stoplistTable.getColumnModel().getColumn(0).setPreferredWidth((int)(width * 0.4));
+    stoplistTable.getColumnModel().getColumn(1).setPreferredWidth((int)(width * 0.5));
+    stoplistTable.getColumnModel().getColumn(2).setPreferredWidth((int)(width * 0.1));
+  }
+  
   public JTable getWaypointsTable()
   {
Index: applications/editors/josm/plugins/public_transport/src/public_transport/TrackReference.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/TrackReference.java	(revision 20835)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/TrackReference.java	(revision 20839)
@@ -117,7 +117,5 @@
 
       Main.main.undoRedo.add(new TrackStoplistNameCommand
-              (this, e.getFirstRow(),
-	       (String)stoplistTM.getValueAt(e.getFirstRow(), 0),
-	       (String)stoplistTM.getValueAt(e.getFirstRow(), 1)));
+              (this, e.getFirstRow()));
       stoplistTM.setTimeAt
 	  (e.getFirstRow(), (String)stoplistTM.getValueAt(e.getFirstRow(), 0));
Index: applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistDeleteCommand.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistDeleteCommand.java	(revision 20835)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistDeleteCommand.java	(revision 20839)
@@ -15,9 +15,10 @@
   private class NodeTimeName
   {
-    NodeTimeName(Node node, String time, String name)
+    NodeTimeName(Node node, String time, String name, String shelter)
     {
       this.node = node;
       this.time = time;
       this.name = name;
+      this.shelter = shelter;
     }
     
@@ -25,4 +26,5 @@
     public String time;
     public String name;
+    public String shelter;
   };
   
@@ -62,5 +64,6 @@
       nodesForUndo.add(new NodeTimeName
 	  (node, (String)stoplistTM.getValueAt(j, 0),
-	   (String)stoplistTM.getValueAt(j, 1)));
+	   (String)stoplistTM.getValueAt(j, 1),
+	   (String)stoplistTM.getValueAt(j, 2)));
       stoplistTM.removeRow(j);
       if (node == null)
@@ -78,5 +81,5 @@
       int j = workingLines.elementAt(i).intValue();
       NodeTimeName ntn = nodesForUndo.elementAt(workingLines.size() - i - 1);
-      stoplistTM.insertRow(j, ntn.node, ntn.time, ntn.name);
+      stoplistTM.insertRow(j, ntn.node, ntn.time, ntn.name, ntn.shelter);
       if (ntn.node == null)
 	continue;
Index: applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistNameCommand.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistNameCommand.java	(revision 20835)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistNameCommand.java	(revision 20839)
@@ -20,9 +20,10 @@
   private String oldTime = null;
   private String time = null;
+  private String oldShelter = null;
+  private String shelter = null;
   private LatLon oldLatLon = null;
   
   @SuppressWarnings("unchecked")
-  public TrackStoplistNameCommand
-    (TrackReference trackref, int workingLine, String time, String name)
+  public TrackStoplistNameCommand(TrackReference trackref, int workingLine)
   {
     this.trackref = trackref;
@@ -33,9 +34,10 @@
       oldName = node.get("name");
       oldTime = trackref.stoplistTM.timeAt(workingLine);
+      oldShelter = node.get("shelter");
       oldLatLon = (LatLon)node.getCoor().clone();
-      System.out.println("Setze oldLatLon: " + oldLatLon);
     }
-    this.name = name;
-    this.time = time;
+    this.time = (String)trackref.stoplistTM.getValueAt(workingLine, 0);
+    this.name = (String)trackref.stoplistTM.getValueAt(workingLine, 1);
+    this.shelter = (String)trackref.stoplistTM.getValueAt(workingLine, 2);
   }
   
@@ -46,11 +48,22 @@
     {
       node.put("name", name);
+      node.put("shelter", shelter);
       double dTime = StopImporterDialog.parseTime(time);
       node.setCoor(trackref.computeCoor(dTime));
-      trackref.inEvent = true;
+    }
+    trackref.inEvent = true;
+    if (time == null)
+      trackref.stoplistTM.setValueAt("", workingLine, 0);
+    else
       trackref.stoplistTM.setValueAt(time, workingLine, 0);
+    if (name == null)
+      trackref.stoplistTM.setValueAt("", workingLine, 1);
+    else
       trackref.stoplistTM.setValueAt(name, workingLine, 1);
-      trackref.inEvent = false;
-    }
+    if (shelter == null)
+      trackref.stoplistTM.setValueAt("", workingLine, 2);
+    else
+      trackref.stoplistTM.setValueAt(shelter, workingLine, 2);
+    trackref.inEvent = false;
     return true;
   }
@@ -62,11 +75,21 @@
     {
       node.put("name", oldName);
-      System.out.println("Verwende oldLatLon: " + oldLatLon);
+      node.put("shelter", oldShelter);
       node.setCoor(oldLatLon);
-      trackref.inEvent = true;
+    }
+    trackref.inEvent = true;
+    if (oldTime == null)
+      trackref.stoplistTM.setValueAt("", workingLine, 0);
+    else
       trackref.stoplistTM.setValueAt(oldTime, workingLine, 0);
+    if (oldName == null)
+      trackref.stoplistTM.setValueAt("", workingLine, 1);
+    else
       trackref.stoplistTM.setValueAt(oldName, workingLine, 1);
-      trackref.inEvent = false;
-    }
+    if (oldShelter == null)
+      trackref.stoplistTM.setValueAt("", workingLine, 2);
+    else
+      trackref.stoplistTM.setValueAt(oldShelter, workingLine, 2);
+    trackref.inEvent = false;
   }
   
Index: applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistSortCommand.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistSortCommand.java	(revision 20835)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistSortCommand.java	(revision 20839)
@@ -60,4 +60,5 @@
 	  (stoplistTM.nodeAt(j), (String)stoplistTM.getValueAt(j, 0),
 	    (String)stoplistTM.getValueAt(j, 1),
+	    (String)stoplistTM.getValueAt(j, 2),
 	     StopImporterDialog.parseTime(stopwatchStart)));
       stoplistTM.removeRow(j);
@@ -71,5 +72,5 @@
     {
       NodeSortEntry nse = iter.next();
-      stoplistTM.insertRow(insPos, nse.node, nse.time, nse.name);
+      stoplistTM.insertRow(insPos, nse.node, nse.time, nse.name, nse.shelter);
       if (insPos >= 0)
 	++insPos;
@@ -101,11 +102,14 @@
     public String time = null;
     public String name = null;
+    public String shelter = null;
     public double startTime = 0;
     
-    public NodeSortEntry(Node node, String time, String name, double startTime)
+    public NodeSortEntry
+        (Node node, String time, String name, String shelter, double startTime)
     {
       this.node = node;
       this.time = time;
       this.name = name;
+      this.shelter = shelter;
     }
     
Index: applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistTableModel.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistTableModel.java	(revision 20835)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistTableModel.java	(revision 20839)
@@ -13,5 +13,5 @@
   private Vector< Node > nodes = null;
   private Vector< String > times = null;
-  private Vector< String > columns = null;
+  private static Vector< String > columns = null;
     
   public TrackStoplistTableModel(TrackReference tr)
@@ -22,4 +22,5 @@
       columns.add("Time");
       columns.add("Name");
+      columns.add("Shelter");
     }
     nodes = new Vector< Node >();
@@ -48,5 +49,5 @@
   public void insertRow(int insPos, String time)
   {
-    insertRow(insPos, null, time, "");
+    insertRow(insPos, null, time, "", "");
   }
 
@@ -98,7 +99,8 @@
   }
 
-  public void insertRow(int insPos, Node node, String time, String name)
+  public void insertRow
+      (int insPos, Node node, String time, String name, String shelter)
   {
-    String[] buf = { "", "" };
+    String[] buf = { "", "", "" };
     buf[0] = time;
     buf[1] = name;
Index: applications/editors/josm/plugins/public_transport/src/public_transport/TrackSuggestStopsCommand.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/TrackSuggestStopsCommand.java	(revision 20835)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/TrackSuggestStopsCommand.java	(revision 20839)
@@ -157,5 +157,5 @@
 	time -= timeDelta;
 	Node node = StopImporterAction.createNode(latLon, type, "");
-	stoplistTM.insertRow(-1, node, StopImporterAction.timeOf(time), "");
+	stoplistTM.insertRow(-1, node, StopImporterAction.timeOf(time), "", "");
       }
 	
Index: applications/editors/josm/plugins/public_transport/src/public_transport/WaypointsNameCommand.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/WaypointsNameCommand.java	(revision 20835)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/WaypointsNameCommand.java	(revision 20839)
@@ -42,12 +42,15 @@
       waypointTM.nodes.elementAt(workingLine).put("name", name);
       waypointTM.nodes.elementAt(workingLine).put("shelter", shelter);
-      waypointTM.inEvent = true;
+    }
+    waypointTM.inEvent = true;
+    if (name == null)
+      waypointTM.setValueAt("", workingLine, 1);
+    else
       waypointTM.setValueAt(name, workingLine, 1);
-      if (shelter == null)
-	waypointTM.setValueAt("", workingLine, 2);
-      else
-	waypointTM.setValueAt(shelter, workingLine, 2);
-      waypointTM.inEvent = false;
-    }
+    if (shelter == null)
+      waypointTM.setValueAt("", workingLine, 2);
+    else
+      waypointTM.setValueAt(shelter, workingLine, 2);
+    waypointTM.inEvent = false;
     return true;
   }
@@ -59,12 +62,15 @@
       waypointTM.nodes.elementAt(workingLine).put("name", oldName);
       waypointTM.nodes.elementAt(workingLine).put("shelter", oldShelter);
-      waypointTM.inEvent = true;
+    }
+    waypointTM.inEvent = true;
+    if (oldName == null)
+      waypointTM.setValueAt("", workingLine, 1);
+    else
       waypointTM.setValueAt(oldName, workingLine, 1);
-      if (oldShelter == null)
-	waypointTM.setValueAt("", workingLine, 2);
-      else
-	waypointTM.setValueAt(oldShelter, workingLine, 2);
-      waypointTM.inEvent = false;
-    }
+    if (oldShelter == null)
+      waypointTM.setValueAt("", workingLine, 2);
+    else
+      waypointTM.setValueAt(oldShelter, workingLine, 2);
+    waypointTM.inEvent = false;
   }
   
