package pipe.handlers; import pipe.actions.gui.CreateAction; import pipe.controllers.PetriNetController; import pipe.actions.gui.PipeApplicationModel; import uk.ac.imperial.pipe.models.petrinet.Connectable; import javax.swing.*; import java.awt.Container; import java.awt.event.MouseEvent; /** * ConnectableHandler handles mouse clicks on Connectables. */ public class ConnectableHandler<T extends Connectable> extends PetriNetObjectHandler<T> { /** * Constructor * @param contentpane content pane * @param obj underlying Petri net component * @param controller Petri net controller the component belongs to * @param applicationModel main PIPE application model */ ConnectableHandler(Container contentpane, T obj, PetriNetController controller, PipeApplicationModel applicationModel) { super(contentpane, obj, controller, applicationModel); enablePopup = true; } /** * When the mosue is pressed on the Petri net component show the options menu * or select it * @param e mouse event */ @Override public void mousePressed(MouseEvent e) { super.mousePressed(e); if (e.isPopupTrigger()) { JPopupMenu menu = getPopup(e); menu.show(e.getComponent(), 0, 0); } else if (e.getButton() == MouseEvent.BUTTON1) { CreateAction selectedAction = applicationModel.getSelectedAction(); selectedAction.doConnectableAction(component, petriNetController); } } /** * getPopup adds menu items which connectables all share * @param e event * @return new JPopupMenu with hide and show attributes and supers attributes */ @Override protected JPopupMenu getPopup(MouseEvent e) { JPopupMenu popupMenu = super.getPopup(e); // JMenuItem menuItem = new JMenuItem(new ShowHideInfoAction<>(viewComponent)); // if (viewComponent.getAttributesVisible()){ // menuItem.setText("Hide Attributes"); // } else { // menuItem.setText("Show Attributes"); // } // popupMenu.insert(menuItem, 0); return popupMenu; } }