package maps.gml.editor; import javax.swing.undo.AbstractUndoableEdit; import javax.swing.undo.UndoableEdit; import java.util.List; import maps.gml.GMLNode; import maps.gml.GMLBuilding; /** A tool for creating buildings. */ public class CreateBuildingTool extends CreateShapeTool { /** Construct a CreateBuildingTool. @param editor The editor instance. */ public CreateBuildingTool(GMLEditor editor) { super(editor); } @Override public String getName() { return "Create building"; } @Override protected UndoableEdit finished(List<GMLNode> nodes) { GMLBuilding building = editor.getMap().createBuildingFromNodes(nodes); return new CreateBuildingEdit(building); } private class CreateBuildingEdit extends AbstractUndoableEdit { private GMLBuilding building; public CreateBuildingEdit(GMLBuilding building) { this.building = building; } @Override public void undo() { super.undo(); editor.getMap().removeBuilding(building); editor.getViewer().repaint(); } @Override public void redo() { super.redo(); editor.getMap().addBuilding(building); editor.getViewer().repaint(); } } }