// License: GPL. For details, see LICENSE file.
package public_transport;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.util.Collection;
import java.util.Vector;
import javax.swing.DefaultListModel;
import org.openstreetmap.josm.command.Command;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
public class SettingsStoptypeCommand extends Command {
private static class HighwayRailway {
HighwayRailway(Node node) {
this.node = node;
highway = node.get("highway");
railway = node.get("railway");
}
public Node node;
public String highway;
public String railway;
}
private Vector<HighwayRailway> oldStrings = null;
private WaypointTableModel waypointTM = null;
private DefaultListModel<?> tracksListModel = null;
private String type = null;
public SettingsStoptypeCommand(StopImporterAction controller) {
waypointTM = controller.getWaypointTableModel();
tracksListModel = controller.getTracksListModel();
type = controller.getDialog().getStoptype();
oldStrings = new Vector<>();
}
@Override
public boolean executeCommand() {
oldStrings.clear();
for (int i = 0; i < waypointTM.getRowCount(); ++i) {
if (waypointTM.nodes.elementAt(i) != null) {
Node node = waypointTM.nodes.elementAt(i);
oldStrings.add(new HighwayRailway(node));
StopImporterAction.setTagsWrtType(node, type);
}
}
for (int j = 0; j < tracksListModel.size(); ++j) {
TrackReference track = (TrackReference) tracksListModel.elementAt(j);
for (int i = 0; i < track.stoplistTM.getRowCount(); ++i) {
if (track.stoplistTM.nodeAt(i) != null) {
Node node = track.stoplistTM.nodeAt(i);
oldStrings.add(new HighwayRailway(node));
StopImporterAction.setTagsWrtType(node, type);
}
}
}
return true;
}
@Override
public void undoCommand() {
for (int i = 0; i < oldStrings.size(); ++i) {
HighwayRailway hr = oldStrings.elementAt(i);
hr.node.put("highway", hr.highway);
hr.node.put("railway", hr.railway);
}
}
@Override
public void fillModifiedData(Collection<OsmPrimitive> modified,
Collection<OsmPrimitive> deleted, Collection<OsmPrimitive> added) {
}
@Override
public String getDescriptionText() {
return tr("Public Transport: Change stop type");
}
}