package pipe.actions.manager; import pipe.actions.gui.*; import pipe.controllers.application.PipeApplicationController; import pipe.controllers.arcCreator.InhibitorCreator; import pipe.controllers.arcCreator.NormalCreator; import pipe.views.InhibitorArcHead; import pipe.views.NormalHead; import uk.ac.imperial.pipe.visitor.connectable.arc.InhibitorSourceVisitor; import uk.ac.imperial.pipe.visitor.connectable.arc.NormalArcSourceVisitor; import javax.swing.event.UndoableEditListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.util.Arrays; public class ComponentCreatorManager implements ActionManager { public CreateAction placeAction; public CreateAction transAction; public CreateAction timedtransAction; public final CreateAction arcAction; public final CreateAction inhibarcAction; public final SpecifyRateParameterAction rateParameterAction; public CreateAction annotationAction; public ComponentCreatorManager(UndoableEditListener undoListener, PipeApplicationModel applicationModel, PipeApplicationController applicationController) { placeAction = new PlaceAction(applicationModel); transAction = new ImmediateTransitionAction(applicationModel); timedtransAction = new TimedTransitionAction(applicationModel); annotationAction = new AnnotationAction(applicationModel); inhibarcAction = new ArcAction("Inhibitor Arc", "Add an inhibitor arc (alt-h)", KeyEvent.VK_H, InputEvent.ALT_DOWN_MASK, new InhibitorSourceVisitor(), new InhibitorCreator(), applicationModel, applicationController, new InhibitorArcHead()); arcAction = new ArcAction("Arc", "Add an arc (alt-a)", KeyEvent.VK_A, InputEvent.ALT_DOWN_MASK, new NormalArcSourceVisitor(), new NormalCreator(applicationController), applicationModel, applicationController, new NormalHead()); rateParameterAction = new SpecifyRateParameterAction(applicationController); placeAction.addUndoableEditListener(undoListener); transAction.addUndoableEditListener(undoListener); timedtransAction.addUndoableEditListener(undoListener); arcAction.addUndoableEditListener(undoListener); inhibarcAction.addUndoableEditListener(undoListener); annotationAction.addUndoableEditListener(undoListener); rateParameterAction.addUndoableEditListener(undoListener); } @Override public Iterable<GuiAction> getActions() { return Arrays.asList(placeAction, transAction, timedtransAction, arcAction, inhibarcAction, annotationAction, rateParameterAction); } @Override public void enableActions() { for (GuiAction action : getActions()) { action.setEnabled(true); } } @Override public void disableActions() { for (GuiAction action : getActions()) { action.setEnabled(false); } } }