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.GMLSpace; /** A tool for creating spaces. */ public class CreateSpaceTool extends CreateShapeTool { /** Construct a CreateSpaceTool. @param editor The editor instance. */ public CreateSpaceTool(GMLEditor editor) { super(editor); } @Override public String getName() { return "Create space"; } @Override protected UndoableEdit finished(List<GMLNode> nodes) { GMLSpace space = editor.getMap().createSpaceFromNodes(nodes); return new CreateSpaceEdit(space); } private class CreateSpaceEdit extends AbstractUndoableEdit { private GMLSpace space; public CreateSpaceEdit(GMLSpace space) { this.space = space; } @Override public void undo() { super.undo(); editor.getMap().removeSpace(space); editor.getViewer().repaint(); } @Override public void redo() { super.redo(); editor.getMap().addSpace(space); editor.getViewer().repaint(); } } }