/* * TransitionTimingEdit.java */ package pipe.historyActions.transition; import uk.ac.imperial.pipe.models.petrinet.Transition; import javax.swing.undo.AbstractUndoableEdit; /** * Undo item for changing whether a transition is timed or immediate */ public class TransitionTiming extends AbstractUndoableEdit { /** * Underlying transition model */ private final Transition transition; /** * True if timed */ private final boolean timedValue; /** * Constructor * * @param transition underlying transition model * @param timedValue true if timed */ public TransitionTiming(final Transition transition, final boolean timedValue) { this.transition = transition; this.timedValue = timedValue; } @Override public int hashCode() { int result = transition != null ? transition.hashCode() : 0; result = 31 * result + (timedValue ? 1 : 0); return result; } @Override public boolean equals(final Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } final TransitionTiming that = (TransitionTiming) o; if (timedValue != that.timedValue) { return false; } if (transition != null ? !transition.equals(that.transition) : that.transition != null) { return false; } return true; } /** * Toggles the transition to its previous timed value */ @Override public void undo() { super.undo(); transition.setTimed(!timedValue); } /** * Toggles the transition to its new timed value */ @Override public void redo() { super.redo(); transition.setTimed(timedValue); } }