package nl.fontys.sofa.limo.view.util.undoable.widget.leg; import javax.swing.undo.AbstractUndoableEdit; import nl.fontys.sofa.limo.domain.component.leg.Leg; import nl.fontys.sofa.limo.view.chain.ChainGraphScene; import nl.fontys.sofa.limo.view.node.bean.HubNode; import nl.fontys.sofa.limo.view.node.bean.LegNode; import nl.fontys.sofa.limo.view.widget.HubWidget; import nl.fontys.sofa.limo.view.widget.LegWidget; /** * The * {@link nl.fontys.sofa.limo.view.util.undoable.widget.leg.LegWidgetUndoableEdit} * class is an abstract class which provides methods for creating or deleting a * leg 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 LegWidgetUndoableEdit extends AbstractUndoableEdit { private final LegNode legNode; private final HubNode source; private final HubNode target; private final ChainGraphScene scene; public LegWidgetUndoableEdit(LegWidget legWidget, HubNode source, HubNode target, ChainGraphScene scene) { this.scene = scene; this.legNode = (LegNode) scene.findObject(legWidget); this.source = source; this.target = target; } protected void addLegWidget() { LegWidget leg = (LegWidget) scene.addEdge(legNode); scene.connectHubWidgets( (HubWidget) scene.findWidget(source), leg, (HubWidget) scene.findWidget(target)); scene.validate(); } protected void removeLegWidget() { scene.getChainBuilder().disconnectLeg(legNode.getLookup().lookup(Leg.class)); scene.removeEdge(legNode); scene.validate(); } @Override public boolean canRedo() { return true; } @Override public boolean canUndo() { return true; } }