package nl.fontys.sofa.limo.view.util.undoable.widget.hub; import java.awt.Point; import javax.swing.undo.AbstractUndoableEdit; import nl.fontys.sofa.limo.view.chain.ChainGraphScene; import nl.fontys.sofa.limo.view.node.bean.HubNode; import nl.fontys.sofa.limo.view.widget.HubWidget; /** * The * {@link nl.fontys.sofa.limo.view.util.undoable.widget.hub.HubWidgetUndoableEdit} * class is an abstract class which provides methods for creating or deleting a * hub to its child classes. Beyond that, the class extends the * {@link javax.swing.undo.AbstractUndoableEdit} class. The child objects of * this class are meant to be added to an {@link javax.swing.undo.UndoManager}. * * * @author Christina Zenzes */ public abstract class HubWidgetUndoableEdit extends AbstractUndoableEdit { protected ChainGraphScene scene; HubNode node; private HubWidget widget; private final boolean isStartHub; public HubWidgetUndoableEdit(ChainGraphScene scene, HubWidget widget) { this.scene = scene; this.widget = widget; this.node = (HubNode) scene.findObject(widget); this.isStartHub = scene.getStartWidget() == widget; } protected void addHub() { Point location = widget.getLocation(); widget = (HubWidget) scene.addNode(node); widget.setPreferredLocation(location); scene.addHubWidget(widget); if (isStartHub) { scene.setStartWidget(widget); widget.setStartFlag(true); } scene.validate(); } protected void removeHub() { scene.removeHubWidget(widget); scene.removeNodeWithEdges(node); scene.validate(); } @Override public boolean canRedo() { return true; } @Override public boolean canUndo() { return true; } }