/* * Created on 05-Mar-2004 * Author is Michael Camacho * */ package pipe.handlers; import pipe.actions.gui.PipeApplicationModel; import pipe.controllers.PetriNetController; import pipe.gui.widgets.AnnotationEditorPanel; import pipe.gui.widgets.EscapableDialog; import uk.ac.imperial.pipe.models.petrinet.Annotation; import javax.swing.*; import java.awt.Container; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.MouseEvent; /** * Mouse handler for an annotation */ public final class AnnotationNoteHandler extends PetriNetObjectHandler<Annotation> { /** * Constructor * @param contentpane content pane * @param note note * @param controller Petri net controller * @param applicationModel application model */ public AnnotationNoteHandler(Container contentpane, Annotation note, PetriNetController controller, PipeApplicationModel applicationModel) { super(contentpane, note, controller, applicationModel); enablePopup = true; } /** * Creates the popup menu that the user will see when they right click on a * component * @param e mouse event */ @Override public JPopupMenu getPopup(MouseEvent e) { int popupIndex = 0; JPopupMenu popup = super.getPopup(e); JMenuItem menuItem = new JMenuItem(new AbstractAction() { @Override public void actionPerformed(ActionEvent actionEvent) { showEditor(); } }); menuItem.setText("Edit text"); popup.insert(menuItem, popupIndex++); // // menuItem = new JMenuItem(new EditAnnotationBorderAction(component)); // if (component.hasBorder()) { // menuItem.setText("Disable Border"); // } else { // menuItem.setText("Enable Border"); // } // popup.insert(menuItem, popupIndex++); // menuItem = new JMenuItem( // new EditAnnotationBackgroundAction((AnnotationNote) component)); // if (((AnnotationNote) component).isFilled()) { // menuItem.setText("Transparent"); // } else { // menuItem.setText("Solid Background"); // } // popup.insert(new JPopupMenu.Separator(), popupIndex++); // popup.insert(menuItem, popupIndex); return popup; } /** * Shows the editor when right clicking on an annotation */ private void showEditor() { // Build interface Window window = SwingUtilities.getWindowAncestor(contentPane); EscapableDialog guiDialog = new EscapableDialog(window, "PIPE5", true); guiDialog.add(new AnnotationEditorPanel(petriNetController.getAnnotationController(component))); // Make window fit contents' preferred size guiDialog.pack(); // Move window to the middle of the screen guiDialog.setLocationRelativeTo(null); guiDialog.setResizable(false); guiDialog.setVisible(true); } }