package pipe.actions.gui; import pipe.controllers.GUIAnimator; import pipe.controllers.PetriNetController; import pipe.controllers.application.PipeApplicationController; import java.awt.event.ActionEvent; /** * This action is responsible for firing multiple random enabled * transitions when animation mode is on */ @SuppressWarnings("serial") public class MultiRandomAnimateAction extends AnimateAction { /** * Step backward action, used to set its availability when a step forward has been performed. */ private final GuiAction stepBackwardAction; /** * Main PIPE application controller */ private final PipeApplicationController applicationController; /** * Constructor * @param name image name * @param tooltip tooltip message * @param keystroke shortcut keystroke * @param stepBackwardAction step backward action * @param applicationController main PIPE application controller */ public MultiRandomAnimateAction(String name, String tooltip, String keystroke, GuiAction stepBackwardAction, PipeApplicationController applicationController) { super(name, tooltip, keystroke); this.stepBackwardAction = stepBackwardAction; this.applicationController = applicationController; } /** * Fires the specified number of enabled transitions * @param event event */ @Override public void actionPerformed(ActionEvent event) { PetriNetController petriNetController = applicationController.getActivePetriNetController(); GUIAnimator animator = petriNetController.getAnimator(); if (animator.getNumberSequences() > 0) { // stop animation animator.setNumberSequences(0); setSelected(false); } else { stepBackwardAction.setEnabled(true); setSelected(true); animator.startRandomFiring(); } } }