package husacct.graphics.domain.util; import java.awt.Cursor; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.MouseEvent; import javax.swing.JComponent; import javax.swing.JViewport; import org.jhotdraw.draw.tool.AbstractTool; @SuppressWarnings("serial") public class PanTool extends AbstractTool { // private Logger log = Logger.getLogger(PanTool.class); private final Cursor dc; private final Cursor hc = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); private final JComponent comp; private final JViewport vport; private Point startPt = new Point(); public PanTool(JViewport vport, JComponent comp) { this.vport = vport; this.comp = comp; dc = comp.getCursor(); } @Override public void mouseDragged(MouseEvent e) { Point pt = e.getPoint(); int dx = pt.x - startPt.x; int dy = pt.y - startPt.y; Rectangle vr = vport.getViewRect(); vr.setRect(vr.x - dx, vr.y - dy, vr.width, vr.height); vport.scrollRectToVisible(vr); } @Override public void mousePressed(MouseEvent e) { comp.setCursor(hc); startPt.setLocation(e.getPoint()); } @Override public void mouseReleased(MouseEvent e) { comp.setCursor(dc); } }