/* * Scute * * Homepage: http://hyperdata.org/scute * * License : http://www.apache.org/licenses/LICENSE-2.0 * See also license.txt or http://hyperdata.org/wiki/Scute:License * * Danny Ayers 2011 */ package org.hyperdata.scute.graph; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.util.Iterator; /** * The Class MouseHandler. */ public class MouseHandler implements MouseMotionListener, MouseListener { /** The graph panel. */ private final GraphDiagramPanel graphPanel; /** The pick. */ private Node pick; /** * Instantiates a new mouse handler. * * @param graphPanel * the graph panel */ public MouseHandler(GraphDiagramPanel graphPanel) { this.graphPanel = graphPanel; pick = graphPanel.getPick(); } /* (non-Javadoc) * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent) */ @Override public void mouseClicked(MouseEvent e) { } /* (non-Javadoc) * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent) */ @Override public void mousePressed(MouseEvent e) { // addMouseMotionListener(this); double bestdist = Double.MAX_VALUE; int x = e.getX(); int y = e.getY(); // for (int i = 0; i < graphPanel.getNnodes(); i++) { // Node n = graphPanel.getNode(i); Iterator<Node> nIterator = graphPanel.nodeIterator(); while (nIterator.hasNext()) { Node n = nIterator.next(); double dist = (n.getX() - x) * (n.getX() - x) + (n.getY() - y) * (n.getY() - y); if (dist < bestdist) { pick = n; bestdist = dist; } } graphPanel.setPickFixed(pick.isFixed()); pick.setFixed(true); pick.setX(x); pick.setY(y); graphPanel.repaint(); e.consume(); } /* (non-Javadoc) * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent) */ @Override public void mouseReleased(MouseEvent e) { graphPanel.removeMouseMotionListener(this); if (pick != null) { pick.setX(e.getX()); pick.setY(e.getY()); pick.setFixed(graphPanel.isPickFixed()); pick = null; } graphPanel.repaint(); e.consume(); } /* (non-Javadoc) * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent) */ @Override public void mouseEntered(MouseEvent e) { } /* (non-Javadoc) * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent) */ @Override public void mouseExited(MouseEvent e) { } /* (non-Javadoc) * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent) */ @Override public void mouseDragged(MouseEvent e) { pick.setX(e.getX()); pick.setY(e.getY()); graphPanel.repaint(); e.consume(); } /* (non-Javadoc) * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent) */ @Override public void mouseMoved(MouseEvent e) { } }