package pipe.actions.gui; import pipe.constants.GUIConstants; import pipe.controllers.PetriNetController; import pipe.controllers.ZoomController; import pipe.controllers.application.PipeApplicationController; import pipe.views.PipeApplicationView; import java.awt.event.ActionEvent; /** * Sets the drop down zoom action */ @SuppressWarnings("serial") public class SetZoomAction extends GuiAction { /** * Main application controller */ private final PipeApplicationController applicationController; /** * Main application view */ private final PipeApplicationView applicationView; /** * Controller * @param name image name * @param tooltip tooltip message * @param keystroke keyboard short cut * @param applicationController main application controller * @param applicationView main application view */ public SetZoomAction(String name, String tooltip, String keystroke, PipeApplicationController applicationController, PipeApplicationView applicationView) { super(name, tooltip, keystroke); this.applicationController = applicationController; this.applicationView = applicationView; } /** * Sets the zoom combo box selected percentage and performs a zoom action. * @param actionEvent event */ @Override public void actionPerformed(ActionEvent actionEvent) { String selection = (String) applicationView.zoomComboBox.getSelectedItem(); validateAndZoom(selection); } /** * Validates if the zoom selection is in the format <number>% and * if so performs a zoom * @param selection zoom selection */ private void validateAndZoom(String selection) { String validatedSelection = selection; if (selection.endsWith("%")) { validatedSelection = selection.substring(0, (selection.length()) - 1); } if (Integer.parseInt(validatedSelection) < GUIConstants.ZOOM_MIN || Integer.parseInt(validatedSelection) > GUIConstants.ZOOM_MAX) { applicationView.zoomComboBox.setSelectedItem(""); return; } PetriNetController currentPetriNetController = applicationController.getActivePetriNetController(); ZoomController zoomer = currentPetriNetController.getZoomController(); if (zoomer.getPercent() != Integer.parseInt(validatedSelection)) { zoomer.setZoom(Integer.parseInt(validatedSelection)); } } }