// 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.coor.LatLon;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
public class TrackStoplistNameCommand extends Command {
private int workingLine = 0;
private TrackReference trackref = null;
private String oldName = null;
private String name = null;
private String oldTime = null;
private String time = null;
private String oldShelter = null;
private TransText shelter = null;
private LatLon oldLatLon = null;
public TrackStoplistNameCommand(TrackReference trackref, int workingLine) {
this.trackref = trackref;
this.workingLine = workingLine;
Node node = trackref.stoplistTM.nodeAt(workingLine);
if (node != null) {
oldName = node.get("name");
oldTime = trackref.stoplistTM.timeAt(workingLine);
oldShelter = node.get("shelter");
oldLatLon = node.getCoor();
}
this.time = (String) trackref.stoplistTM.getValueAt(workingLine, 0);
this.name = (String) trackref.stoplistTM.getValueAt(workingLine, 1);
this.shelter = (TransText) trackref.stoplistTM.getValueAt(workingLine, 2);
if ("".equals(this.shelter.text))
this.shelter = null;
}
@Override
public boolean executeCommand() {
Node node = trackref.stoplistTM.nodeAt(workingLine);
if (node != null) {
node.put("name", name);
node.put("shelter", shelter.text);
double dTime = StopImporterDialog.parseTime(time);
node.setCoor(trackref.computeCoor(dTime));
}
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.stoplistTM.setValueAt(shelter, workingLine, 2);
trackref.inEvent = false;
return true;
}
@Override
public void undoCommand() {
Node node = trackref.stoplistTM.nodeAt(workingLine);
if (node != null) {
node.put("name", oldName);
node.put("shelter", oldShelter);
node.setCoor(oldLatLon);
}
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.stoplistTM.setValueAt(new TransText(oldShelter), workingLine, 2);
trackref.inEvent = false;
}
@Override
public void fillModifiedData(Collection<OsmPrimitive> modified,
Collection<OsmPrimitive> deleted, Collection<OsmPrimitive> added) {
}
@Override
public String getDescriptionText() {
return tr("Public Transport: Edit track stop list");
}
}