/** * */ package agg.gui.editor; import java.awt.Cursor; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.SwingUtilities; import agg.editor.impl.EdArc; import agg.editor.impl.EdGraphObject; import agg.editor.impl.Loop; import agg.gui.AGGAppl; /** * @author olga * */ public class GraphEditorMouseAdapter extends MouseAdapter { private GraphEditor editor; public GraphEditorMouseAdapter(final GraphEditor grapheditor) { this.editor = grapheditor; this.editor.addMouseListener(this); } public void mouseEntered(MouseEvent e) { Object source = e.getSource(); if (source == this.editor.getGraphPanel().getCanvas()) { AGGAppl.getInstance().setCursor(this.editor.getGraphPanel().getEditCursor()); } } public void mouseExited(MouseEvent e) { AGGAppl.getInstance().setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); } public void mousePressed(MouseEvent e) { // System.out.println(">>> GraphEditor.mousePressed "); if (this.editor.getGraph() == null) { return; } Object source = e.getSource(); int x = e.getX(); int y = e.getY(); if ((e.isPopupTrigger() || SwingUtilities.isRightMouseButton(e)) && this.editor.getGraph().isEditable()) { if (this.editor.getGraphPanel().getCanvas().isLeftPressed()) this.editor.allowToShowPopupMenu(false); } else if (SwingUtilities.isMiddleMouseButton(e)) { if (this.editor.getGraphPanel().getCanvas().getPickedObject(e.getX(), e.getY(), this.editor.getGraphics().getFontMetrics()) != null) { AGGAppl.getInstance().setCursor(new Cursor(Cursor.MOVE_CURSOR)); } } else if (SwingUtilities.isLeftMouseButton(e)) { if (this.editor.getGraphPanel().getCanvas().isRightPressed()) { this.editor.allowToShowPopupMenu(false); } switch (this.editor.getGraphPanel().getEditMode()) { case EditorConstants.DRAW: break; case EditorConstants.MOVE: if (source == this.editor.getGraphPanel().getCanvas() && this.editor.getGraphPanel() != null) { EdGraphObject ego = this.editor.getGraph().getPicked(x, y); if (ego != null && ego.isArc()) { EdArc ea = (EdArc) ego; if (ea.getAnchorID() == Loop.UPPER_LEFT) AGGAppl.getInstance().setCursor(new Cursor( Cursor.NW_RESIZE_CURSOR)); else if (ea.getAnchorID() == Loop.UPPER_RIGHT) AGGAppl.getInstance().setCursor(new Cursor( Cursor.NE_RESIZE_CURSOR)); else if (ea.getAnchorID() == Loop.BOTTOM_RIGHT) AGGAppl.getInstance().setCursor(new Cursor( Cursor.SE_RESIZE_CURSOR)); else if (ea.getAnchorID() == Loop.BOTTOM_LEFT) AGGAppl.getInstance().setCursor(new Cursor( Cursor.SW_RESIZE_CURSOR)); else if (ea.getAnchorID() == Loop.CENTER) AGGAppl.getInstance().setCursor(new Cursor( Cursor.MOVE_CURSOR)); } } break; case EditorConstants.SET_PARENT: break; case EditorConstants.UNSET_PARENT: break; default: break; } } } public void mouseReleased(MouseEvent e) { if (this.editor.getGraph() == null) { return; } // System.out.println(">>> GraphEditor.mouseReleased "); if ((SwingUtilities.isRightMouseButton(e) || e.isPopupTrigger()) && this.editor.getGraph().isEditable()) { if (this.editor.isPopupMenuAllowed()) this.editor.showPopupMenu(e); this.editor.allowToShowPopupMenu(true); this.editor.getGraphPanel().getCanvas().unsetLeftAndRightPressed(); } else if (e.getSource() == this.editor.getGraphPanel().getCanvas()) { if (!this.editor.getGraphPanel().getCanvas().isRightPressed()) this.editor.getGraphPanel().getCanvas().setLeftPressed(false); switch (this.editor.getGraphPanel().getEditMode()) { case EditorConstants.ARC: this.editor.setMsg("You have just picked the source of an edge. Click on a node to get the target."); break; case EditorConstants.DRAW: this.editor.drawModeProc(); AGGAppl.getInstance().setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); if (this.editor.getGraGraEditor() != null) this.editor.getGraGraEditor().setMsg(this.editor.getMsg()); break; case EditorConstants.MOVE: AGGAppl.getInstance().setCursor(new Cursor(Cursor.MOVE_CURSOR)); break; case EditorConstants.COPY_ARC: AGGAppl.getInstance().setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); break; case EditorConstants.COPY: /* if (this.editor.getGraph().getMsg().length() != 0) this.editor.setMsg(this.editor.getGraph().getMsg()); if (this.editor.getGraphPanel().getLastEditMode() != EditorConstants.COPY) { if (this.editor.getGraGraEditor() != null) { this.editor.getGraGraEditor().setEditMode(this.editor.getGraGraEditor().getLastEditMode()); this.editor.getGraGraEditor().forwardModeCommand(EditorConstants.getModeOfID(this.editor.getGraGraEditor().getLastEditMode())); } else this.editor.setEditMode(this.editor.getGraphPanel().getLastEditMode()); this.editor.setCursorOfApplFrame(this.editor.getGraphPanel().getLastEditCursor()); } else { if (this.editor.getGraGraEditor() != null) { this.editor.getGraGraEditor().setEditMode(this.editor.getGraGraEditor().getLastEditMode()); this.editor.getGraGraEditor().forwardModeCommand(EditorConstants.getModeOfID(this.editor.getGraGraEditor().getLastEditMode())); } else { this.editor.setEditMode(this.editor.getGraphPanel().getLastEditMode()); } AGGAppl.getInstance().setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); } if (this.editor.getGraGraEditor() != null) { if ((this.editor.getSourceOfCopy() != null) && !this.editor.getGraph().equals(this.editor.getSourceOfCopy())) { GraphPanel gp = this.editor.getGraGraEditor().getPanelOfGraph(this.editor.getSourceOfCopy()); this.editor.getSourceOfCopy().eraseSelected(gp.getCanvas().getGraphics(), true); this.editor.getSourceOfCopy().deselectAll(); this.editor.getGraGraEditor().resetAfterCopy(); gp.repaint(); } this.editor.getGraGraEditor().setMsg(this.editor.getMsg()); } this.editor.getGraph().setGraphToCopy(null); this.editor.setSourceOfCopy(null); */ break; default: AGGAppl.getInstance().setCursor(this.editor.getGraphPanel().getEditCursor()); break; } } } public void mouseClicked(MouseEvent e) { } }