package pipe.actions.manager; import pipe.actions.gui.GuiAction; import pipe.actions.gui.AddTokenAction; import pipe.actions.gui.CreateAction; import pipe.actions.gui.DeleteTokenAction; import pipe.actions.gui.SpecifyTokenAction; import pipe.controllers.application.PipeApplicationController; import pipe.actions.gui.PipeApplicationModel; import pipe.views.PipeApplicationView; import javax.swing.event.UndoableEditListener; import java.util.Arrays; /** * Houses the actions that are responsible for editing tokens */ public class TokenActionManager implements ActionManager { /** * Pop up for editing tokens */ public final SpecifyTokenAction specifyTokenClasses; /** * Action to add a token to a place */ public CreateAction tokenAction; /** * Action to delete a token from a place */ public CreateAction deleteTokenAction; /** * Constructor * @param undoListener undo listener * @param applicationModel PIPE application model * @param applicationController PIPE application controller * @param applicationView PIPE application view */ public TokenActionManager(UndoableEditListener undoListener, PipeApplicationModel applicationModel, PipeApplicationController applicationController, PipeApplicationView applicationView) { tokenAction = new AddTokenAction(applicationModel); deleteTokenAction = new DeleteTokenAction(applicationModel); specifyTokenClasses = new SpecifyTokenAction(applicationController, applicationView); tokenAction.addUndoableEditListener(undoListener); deleteTokenAction.addUndoableEditListener(undoListener); specifyTokenClasses.addUndoableEditListener(undoListener); } /** * * @return all token actions housed */ @Override public Iterable<GuiAction> getActions() { return Arrays.asList(tokenAction, deleteTokenAction, specifyTokenClasses); } /** * Enables the actions that set the number of tokens in a place */ @Override public void enableActions() { tokenAction.setEnabled(true); deleteTokenAction.setEnabled(true); } /** * Disables the actions that set the number of tokens in a place */ @Override public void disableActions() { tokenAction.setEnabled(false); deleteTokenAction.setEnabled(false); } }