package uci.graphedit; import java.awt.Event; public class ModeCreateAltEdge extends ModeCreate { private NetNode sourceNode; /** Construct a new ModeCreateArc */ public ModeCreateAltEdge(Document par) { super(par); } public void setCursorType(Editor ed) { ed.setCursor(ed.CROSSHAIR_CURSOR); } /** Create the new item that will be drawn. In this case I would * rather create the ArcPerspective when I am done. Here I just * create a rubberband line to show during the interaction. */ public DiagramElement createNewItem(Event e) { return new FigLine(e.x, e.y, 0, 0, Globals.prefs().rubberbandAttrs()); } public boolean mouseDown(Event e, int x, int y) { DiagramElement underMouse = parent.pick(x,y); if (underMouse != null) if(underMouse instanceof Perspective) { sourceNode=(NetNode)((Perspective)underMouse).owner(); return super.mouseDown(e, x, y); } done(); return true; } public boolean mouseUp(Event e, int x, int y) { newItem.damagedIn(parent); newItem = null; done(); DiagramElement de = parent.pick(x, y); if (de != null) { if (de instanceof Perspective) { NetNode destNode = (NetNode)((Perspective) de).owner(); if (sourceNode!= null && destNode != sourceNode) { if(!(sourceNode instanceof ConstClass)) { Class arcClass; NetArc newArc; try { arcClass = Class.forName("uci.graphedit.NetArc"); } catch (java.lang.ClassNotFoundException ignore) { return false; } try { newArc = (NetArc)arcClass.newInstance(); } catch (java.lang.IllegalAccessException ignore) { return false; } catch (java.lang.InstantiationException ignore) { return false; } newArc.connect(sourceNode, destNode); newArc.setId(parent.nextId()); ArcPerspective ap; ap=new ArcPerspective(newArc); parent.add(ap); ap.reorder(ActionReorder.SEND_TO_BACK, parent.view()); parent.selectItem(ap); } } } } return true; } } /* end class ModeCreateAltArc */