package pipe.actions.gui; import pipe.controllers.PetriNetController; import pipe.controllers.application.PipeApplicationController; import pipe.historyActions.MultipleEdit; import pipe.utilities.gui.GuiUtils; import uk.ac.imperial.pipe.exceptions.PetriNetComponentException; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; /** * Performs the cut action for cut, copy and paste. */ @SuppressWarnings("serial") public class CutAction extends GuiAction { /** * Application controller */ private final PipeApplicationController applicationController; /** * Constructor * @param applicationController main PIPE application controller */ public CutAction(PipeApplicationController applicationController) { super("Cut", "Cut (Ctrl-X)", KeyEvent.VK_X, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()); this.applicationController = applicationController; } /** * When this event is called it copies and deletes the selected items. * * It creates an multi undo action for the cut componentds. * @param actionEvent event */ @Override public void actionPerformed(final ActionEvent actionEvent) { PetriNetController petriNetController = applicationController.getActivePetriNetController(); if (!petriNetController.getSelectedComponents().isEmpty()) { petriNetController.copySelection(); try { registerUndoEvent(new MultipleEdit(petriNetController.deleteSelection())); } catch (PetriNetComponentException e) { GuiUtils.displayErrorMessage(null, e.getMessage()); } } } }