package pipe.actions.gui;
import pipe.controllers.PetriNetController;
import pipe.controllers.application.PipeApplicationController;
import pipe.views.PipeApplicationView;
import uk.ac.imperial.pipe.exceptions.PetriNetComponentNotFoundException;
import java.awt.event.ActionEvent;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Handles the combo box user interactions for selecting tokens. This class is responsible for
* updating controllers and models of the selected token.
*/
@SuppressWarnings("serial")
public class ChooseTokenClassAction extends GuiAction {
/**
* Class logger
*/
private static final Logger LOGGER = Logger.getLogger(ChooseTokenClassAction.class.getName());
/**
* Application view
*/
private final PipeApplicationView pipeApplicationView;
/**
* Application controller, used to get the currently selected Petri net
*/
private final PipeApplicationController applicationController;
/**
* Constructor for the action
* @param pipeApplicationView overall application view
* @param applicationController overalll application controller
*/
public ChooseTokenClassAction(PipeApplicationView pipeApplicationView,
PipeApplicationController applicationController) {
super("chooseTokenClass", "Select current token");
this.pipeApplicationView = pipeApplicationView;
this.applicationController = applicationController;
}
/**
* When a new token is selected this drop dow action selects the token in the controller
* @param evt event
*/
@Override
public void actionPerformed(ActionEvent evt) {
String currentSelection = (String) pipeApplicationView.tokenClassComboBox.getSelectedItem();
PetriNetController petriNetController = applicationController.getActivePetriNetController();
try {
petriNetController.selectToken(currentSelection);
} catch (PetriNetComponentNotFoundException e) {
LOGGER.log(Level.SEVERE, e.getMessage());
}
}
}