/* * Copyright (c) 2005, the JUNG Project and the Regents of the University of * California All rights reserved. * * This software is open-source under the BSD license; see either "license.txt" * or http://jung.sourceforge.net/license.txt for a description. * * Created on Aug 15, 2005 */ package edu.uci.ics.jung.visualization.control; import java.awt.Cursor; import java.awt.event.MouseEvent; import java.awt.geom.Point2D; import edu.uci.ics.jung.visualization.Layer; import edu.uci.ics.jung.visualization.VisualizationViewer; import edu.uci.ics.jung.visualization.transform.MutableTransformer; /** * Overrides TranslatingGraphMousePlugin so that mouse events in * the satellite view cause translating of the main view * * @see TranslatingGraphMousePlugin * @author Tom Nelson * */ public class SatelliteTranslatingGraphMousePlugin extends TranslatingGraphMousePlugin { public SatelliteTranslatingGraphMousePlugin() { super(); } public SatelliteTranslatingGraphMousePlugin(int modifiers) { super(modifiers); } /** * chack the modifiers. If accepted, translate the main view according * to the dragging of the mouse pointer in the satellite view * @param e the event */ public void mouseDragged(MouseEvent e) { VisualizationViewer vv = (VisualizationViewer)e.getSource(); boolean accepted = checkModifiers(e); if(accepted) { if(vv instanceof SatelliteVisualizationViewer) { VisualizationViewer vvMaster = ((SatelliteVisualizationViewer)vv).getMaster(); MutableTransformer modelTransformerMaster = vvMaster.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.LAYOUT); vv.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); try { Point2D q = vv.getRenderContext().getMultiLayerTransformer().inverseTransform(down); Point2D p = vv.getRenderContext().getMultiLayerTransformer().inverseTransform(e.getPoint()); float dx = (float) (p.getX()-q.getX()); float dy = (float) (p.getY()-q.getY()); modelTransformerMaster.translate(-dx, -dy); down.x = e.getX(); down.y = e.getY(); } catch(RuntimeException ex) { System.err.println("down = "+down+", e = "+e); throw ex; } } e.consume(); } } }