package de.unisiegen.gtitool.ui.redoundo; import de.unisiegen.gtitool.core.entities.State; import de.unisiegen.gtitool.ui.jgraph.DefaultStateView; import de.unisiegen.gtitool.ui.jgraph.DefaultTransitionView; import de.unisiegen.gtitool.ui.model.DefaultMachineModel; /** * Representation of {@link RedoUndoItem} for {@link State} added action. * * @author Benjamin Mies * @version $Id$ */ public final class StateAddedItem extends RedoUndoItem { /** * The {@link DefaultMachineModel}. */ private DefaultMachineModel model; /** * The {@link DefaultStateView}. */ private DefaultStateView stateView; /** * The {@link DefaultTransitionView}. */ private DefaultTransitionView transition; /** * Allocates a new {@link StateAddedItem}. * * @param model The {@link DefaultMachineModel}. * @param stateView The {@link DefaultStateView}. * @param transition The {@link DefaultTransitionView}. */ public StateAddedItem ( DefaultMachineModel model, DefaultStateView stateView, DefaultTransitionView transition ) { super (); this.model = model; this.stateView = stateView; this.transition = transition; } /** * {@inheritDoc} * * @see RedoUndoItem#redo() */ @Override public final void redo () { this.stateView.addPort (); this.model.getMachine ().addState ( this.stateView.getState () ); this.model.getJGTIGraph ().getGraphLayoutCache ().insert ( this.stateView ); this.model.getStateViewList ().add ( this.stateView ); // add transitions if ( this.transition != null ) { this.model.createTransitionView ( this.transition.getTransition (), this.transition.getSourceView (), this.transition.getTargetView (), false, false, true ); } } /** * {@inheritDoc} * * @see RedoUndoItem#undo() */ @Override public void undo () { this.model.removeState ( this.stateView, false ); } }