sclass CirclesRelater extends MouseAdapter { Canvas canvas; CirclesAndLines cal; Circle circle; *(Canvas *canvas, CirclesAndLines *cal) { if (containsInstance(canvas.tools, CirclesRelater)) ret; canvas.tools.add(this); canvas.addMouseListener(this); canvas.addMouseMotionListener(this); } public void mousePressed(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON2) circle = findCircle(canvas.pointFromEvent(e)); } public void mouseDragged(MouseEvent e) { } public void mouseReleased(MouseEvent e) { mouseDragged(e); if (circle != null) { final Circle circle2 = findCircle(canvas.pointFromEvent(e)); final Circle circle1 = circle; if (circle != circle2 && circle2 != null) { final JTextField tf = jTextField(); showFormTitled("Link nodes", "Node 1", circle1.text, "Node 2", circle2.text, "Connection Name", tf, r { cal.arrow(circle, getTextTrim(tf), circle2); canvas.update(); }); } } circle = null; } Circle findCircle(Pt p) { ret cal.findCircle(canvas, p); } }