Index: /applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java
===================================================================
--- /applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java	(revision 20833)
+++ /applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java	(revision 20834)
@@ -66,4 +66,5 @@
   private static TrackReference currentTrack = null;
   private static WaypointTableModel waypointTM = null;
+  public boolean inEvent = false;
   
   public StopImporterAction()
@@ -128,17 +129,19 @@
     else if ("stopImporter.settingsGPSTimeStart".equals(event.getActionCommand()))
     {
-      if ((dialog.gpsTimeStartValid()) && (currentTrack != null))
-      {
+      if ((!inEvent) && (dialog.gpsTimeStartValid()) && (currentTrack != null))
+	Main.main.undoRedo.add(new TrackStoplistRelocateCommand(this));
+/*      {
 	currentTrack.gpsSyncTime = dialog.getGpsTimeStart();
 	currentTrack.relocateNodes();
-      }
+      }*/
     }
     else if ("stopImporter.settingsStopwatchStart".equals(event.getActionCommand()))
     {
-      if ((dialog.stopwatchStartValid()) && (currentTrack != null))
-      {
+      if ((!inEvent) && (dialog.stopwatchStartValid()) && (currentTrack != null))
+	Main.main.undoRedo.add(new TrackStoplistRelocateCommand(this));
+/*      {
 	currentTrack.stopwatchStart = dialog.getStopwatchStart();
 	currentTrack.relocateNodes();
-      }
+      }*/
     }
     else if ("stopImporter.settingsTimeWindow".equals(event.getActionCommand()))
Index: /applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterDialog.java
===================================================================
--- /applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterDialog.java	(revision 20833)
+++ /applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterDialog.java	(revision 20834)
@@ -575,4 +575,9 @@
   }
   
+  public void setGpsTimeStart(String s)
+  {
+    tfGPSTimeStart.setText(s);
+  }
+  
   public boolean stopwatchStartValid()
   {
@@ -593,4 +598,9 @@
   {
     return tfStopwatchStart.getText();
+  }
+  
+  public void setStopwatchStart(String s)
+  {
+    tfStopwatchStart.setText(s);
   }
   
Index: /applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistRelocateCommand.java
===================================================================
--- /applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistRelocateCommand.java	(revision 20834)
+++ /applications/editors/josm/plugins/public_transport/src/public_transport/TrackStoplistRelocateCommand.java	(revision 20834)
@@ -0,0 +1,93 @@
+package public_transport;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Vector;
+import javax.swing.DefaultListModel;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.MutableTreeNode;
+
+public class TrackStoplistRelocateCommand extends Command
+{
+  private StopImporterAction controller = null;
+  private TrackReference currentTrack = null;
+  private String oldGpsSyncTime = null;
+  private String oldStopwatchStart = null;
+  private String gpsSyncTime = null;
+  private String stopwatchStart = null;
+  
+  public TrackStoplistRelocateCommand(StopImporterAction controller)
+  {
+    this.controller = controller;
+    this.currentTrack = controller.getCurrentTrack();
+    this.gpsSyncTime = controller.getDialog().getGpsTimeStart();
+    this.stopwatchStart = controller.getDialog().getStopwatchStart();
+    this.oldGpsSyncTime = currentTrack.gpsSyncTime;
+    this.oldStopwatchStart = currentTrack.stopwatchStart;
+  }
+  
+  public boolean executeCommand()
+  {
+    currentTrack.gpsSyncTime = gpsSyncTime;
+    currentTrack.stopwatchStart = stopwatchStart;
+    for (int i = 0; i < currentTrack.stoplistTM.getNodes().size(); ++i)
+    {
+      Node node = currentTrack.stoplistTM.nodeAt(i);
+      if (node == null)
+	continue;
+	
+      double time = StopImporterDialog.parseTime
+	    ((String)currentTrack.stoplistTM.getValueAt(i, 0));
+      node.setCoor(currentTrack.computeCoor(time));
+    }
+    if (currentTrack == controller.getCurrentTrack())
+    {
+      controller.inEvent = true;
+      controller.getDialog().setGpsTimeStart(gpsSyncTime);
+      controller.getDialog().setStopwatchStart(stopwatchStart);
+      controller.inEvent = false;
+    }
+    
+    return true;
+  }
+  
+  public void undoCommand()
+  {
+    currentTrack.gpsSyncTime = oldGpsSyncTime;
+    currentTrack.stopwatchStart = oldStopwatchStart;
+    for (int i = 0; i < currentTrack.stoplistTM.getNodes().size(); ++i)
+    {
+      Node node = currentTrack.stoplistTM.nodeAt(i);
+      if (node == null)
+	continue;
+	
+      double time = StopImporterDialog.parseTime
+	    ((String)currentTrack.stoplistTM.getValueAt(i, 0));
+      node.setCoor(currentTrack.computeCoor(time));
+    }
+    if (currentTrack == controller.getCurrentTrack())
+    {
+      controller.inEvent = true;
+      controller.getDialog().setGpsTimeStart(oldGpsSyncTime);
+      controller.getDialog().setStopwatchStart(oldStopwatchStart);
+      controller.inEvent = false;
+    }
+  }
+  
+  public void fillModifiedData
+    (Collection< OsmPrimitive > modified, Collection< OsmPrimitive > deleted,
+     Collection< OsmPrimitive > added)
+  {
+  }
+  
+  public MutableTreeNode description()
+  {
+    return new DefaultMutableTreeNode("public_transport.TrackStoplist.RelocateNodes");
+  }
+};
