/* * (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 11:53:27 * as file ZoomTool.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.cursors.CursorHandler; import org.f2o.absurdum.puck.gui.graph.GraphEditingPanel; import org.f2o.absurdum.puck.gui.graph.Node; /** * @author carlos * * Created at regulus, 16-dic-2006 11:53:27 */ public class ZoomTool extends ToolAction { private MouseListener listener; private MouseMotionListener motionListener; private boolean enabled = false; private boolean justEnabled = true; private int lastX = 0; private int lastY = 0; public ZoomTool ( GraphEditingPanel panel ) { super(panel); listener = new MouseAdapter() { public void mouseClicked(MouseEvent arg0) { enabled = !enabled; if ( enabled ) justEnabled = true; else { /* ZoomTool.this.panel.setToolListener(null); ZoomTool.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 diff = arg0.getY()-lastY; double factor = Math.pow(2.0,diff/100.0); getPanel().multiplyZoom(factor); getPanel().repaint(); } lastX = arg0.getX(); lastY = arg0.getY(); } } /* public void mouseDragged(MouseEvent arg0) { if ( justEnabled ) justEnabled = false; else { int diff = arg0.getY()-lastY; double factor = Math.pow(2.0,diff/100.0); ZoomTool.this.panel.multiplyZoom(factor); ZoomTool.this.panel.repaint(); } lastX = arg0.getX(); lastY = arg0.getY(); } */ }; } public void loadTool() { getPanel().setToolListener(listener); getPanel().setToolMotionListener(motionListener); getPanel().setCursor(CursorHandler.getInstance().getCursor("ZOOM")); } public void unloadTool() { getPanel().resetToolListeners(); getPanel().setCursor(CursorHandler.getInstance().getCursor("DEFAULT")); } }