package com.opendoorlogistics.codefromweb.jxmapviewer2.fork.swingx.input; import java.awt.Rectangle; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.geom.Point2D; import com.opendoorlogistics.codefromweb.jxmapviewer2.fork.swingx.JXMapViewer; /** * used to pan using the arrow keys * @author joshy */ public class PanKeyListener extends KeyAdapter { private static final int OFFSET = 10; private JXMapViewer viewer; /** * @param viewer the jxmapviewer */ public PanKeyListener(JXMapViewer viewer) { this.viewer = viewer; } @Override public void keyPressed(KeyEvent e) { int delta_x = 0; int delta_y = 0; switch (e.getKeyCode()) { case KeyEvent.VK_LEFT: delta_x = -OFFSET; break; case KeyEvent.VK_RIGHT: delta_x = OFFSET; break; case KeyEvent.VK_UP: delta_y = -OFFSET; break; case KeyEvent.VK_DOWN: delta_y = OFFSET; break; } if (delta_x != 0 || delta_y != 0) { Rectangle bounds = viewer.getViewportBounds(); double x = bounds.getCenterX() + delta_x; double y = bounds.getCenterY() + delta_y; viewer.setCenter(new Point2D.Double(x, y)); viewer.repaint(); } } }