package maps.gml.editor;
import javax.swing.undo.UndoableEdit;
import javax.swing.undo.AbstractUndoableEdit;
import java.util.List;
import maps.gml.GMLNode;
import maps.gml.GMLRoad;
/**
A tool for creating roads.
*/
public class CreateRoadTool extends CreateShapeTool {
/**
Construct a CreateRoadTool.
@param editor The editor instance.
*/
public CreateRoadTool(GMLEditor editor) {
super(editor);
}
@Override
public String getName() {
return "Create road";
}
@Override
protected UndoableEdit finished(List<GMLNode> nodes) {
GMLRoad road = editor.getMap().createRoadFromNodes(nodes);
return new CreateRoadEdit(road);
}
private class CreateRoadEdit extends AbstractUndoableEdit {
private GMLRoad road;
public CreateRoadEdit(GMLRoad road) {
this.road = road;
}
@Override
public void undo() {
super.undo();
editor.getMap().removeRoad(road);
editor.getViewer().repaint();
}
@Override
public void redo() {
super.redo();
editor.getMap().addRoad(road);
editor.getViewer().repaint();
}
}
}