// License: GPL. For details, see LICENSE file. package public_transport; import static org.openstreetmap.josm.tools.I18n.tr; import java.util.Collection; import org.openstreetmap.josm.command.Command; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.OsmPrimitive; 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; } @Override 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; } @Override 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; } } @Override public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted, Collection<OsmPrimitive> added) { } @Override public String getDescriptionText() { return tr("Public Transport: Relocate nodes in track stoplist"); } }