package pipe.handlers;
import pipe.controllers.PetriNetController;
import pipe.controllers.GUIAnimator;
import uk.ac.imperial.pipe.models.petrinet.Transition;
import javax.swing.*;
import java.awt.event.MouseEvent;
/**
* TransitionAnimationHandler fires the transition when clicked
* if in animation mode
*/
public class TransitionAnimationHandler extends javax.swing.event.MouseInputAdapter {
/**
* Underlying component
*/
private final Transition transition;
/**
* Petri net controller the transition belongs in
*/
private final PetriNetController petriNetController;
/**
*
* @param transition transition model
* @param petriNetController Petri net controller for the Petri net the transition belongs in
*/
public TransitionAnimationHandler(Transition transition, PetriNetController petriNetController) {
this.transition = transition;
this.petriNetController = petriNetController;
}
/**
* When clicked this fires the transition if it is enabled in animation mode
* @param e mouse event
*/
@Override
public void mouseClicked(MouseEvent e) {
if (petriNetController.isInAnimationMode() && SwingUtilities.isLeftMouseButton(e) && transition.isEnabled()) {
GUIAnimator animator = petriNetController.getAnimator();
animator.fireTransition(transition);
//TODO: STEP FORWARD AND BACK
// PipeApplicationView applicationView = petriNetController.getPetriNetTab().getApplicationView();
// applicationView.getAnimateActionManager().setStepForward(animator.isStepForwardAllowed());
// applicationView.getAnimateActionManager().setStepBackward(animator.isStepBackAllowed());
}
}
}