/* * (c) 2005-2006 Carlos G�mez Rodr�guez, todos los derechos reservados / all rights reserved. * Licencia en license/bsd.txt / License in license/bsd.txt * * Created at regulus on 16-dic-2006 13:59:55 * as file TranslateTool.java on package org.f2o.absurdum.puck.gui */ package org.f2o.absurdum.puck.gui; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionAdapter; import java.awt.event.MouseMotionListener; import javax.swing.AbstractAction; import org.f2o.absurdum.puck.gui.config.PuckConfiguration; import org.f2o.absurdum.puck.gui.cursors.CursorHandler; import org.f2o.absurdum.puck.gui.graph.GraphEditingPanel; /** * @author carlos * * Created at regulus, 16-dic-2006 13:59:55 */ public class TranslateTool extends ToolAction { private MouseListener listener; private MouseMotionListener motionListener; private boolean enabled = false; private boolean justEnabled = true; private int lastX = 0; private int lastY = 0; private double speedFactor = 5.0; public TranslateTool ( GraphEditingPanel panel ) { super(panel); listener = new MouseAdapter() { public void mouseClicked(MouseEvent arg0) { enabled = !enabled; if ( enabled ) justEnabled = true; else { /* TranslateTool.this.panel.setToolListener(null); TranslateTool.this.panel.setToolMotionListener(null); */ toolDone(); //ZoomTool.this.panel.setSpecialNode(null); getPanel().getPropertiesPanel().repaint(); getPanel().repaint(); } } }; motionListener = new MouseMotionAdapter() { public void mouseMoved(MouseEvent arg0) { if ( enabled ) { if ( justEnabled ) justEnabled = false; else { int diffY = arg0.getY()-lastY; int diffX = arg0.getX()-lastX; if ( "push".equals(PuckConfiguration.getInstance().getProperty("translateMode")) ) { getPanel().setViewXOffset( getPanel().getViewXOffset() + Math.ceil(diffX / getPanel().getViewZoom() * speedFactor)); getPanel().setViewYOffset( getPanel().getViewYOffset() + Math.ceil(diffY / getPanel().getViewZoom() * speedFactor)); } else //"hold" { System.out.println("HOLD IT!"); getPanel().setViewXOffset( getPanel().getViewXOffset() - Math.ceil(diffX / getPanel().getViewZoom() * speedFactor)); getPanel().setViewYOffset( getPanel().getViewYOffset() - Math.ceil(diffY / getPanel().getViewZoom() * speedFactor)); } getPanel().repaint(); } lastX = arg0.getX(); lastY = arg0.getY(); } } }; } public void loadTool() { getPanel().setToolListener(listener); getPanel().setToolMotionListener(motionListener); getPanel().setCursor(CursorHandler.getInstance().getCursor("MOVE")); } public void unloadTool() { getPanel().resetToolListeners(); getPanel().setCursor(CursorHandler.getInstance().getCursor("DEFAULT")); } }