Resolves issue #16 - add keyboard support for map pan and zoom.

Zoom: +/- keys on main keyboard and number pad.
Pan: directional arrows and number pad arrows.
This commit is contained in:
dennis.sheirer
2014-06-17 00:54:00 +00:00
parent 80b1b8c553
commit 647c0cac8d

View File

@@ -22,6 +22,8 @@ import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.geom.Point2D;
import log.Log;
import org.jdesktop.swingx.JXMapViewer;
/**
@@ -47,21 +49,35 @@ public class PanKeyListener extends KeyAdapter
{
int delta_x = 0;
int delta_y = 0;
int requestedZoom = 0;
switch (e.getKeyCode())
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;
case KeyEvent.VK_LEFT:
case KeyEvent.VK_NUMPAD4:
delta_x = -OFFSET;
break;
case KeyEvent.VK_RIGHT:
case KeyEvent.VK_NUMPAD6:
delta_x = OFFSET;
break;
case KeyEvent.VK_UP:
case KeyEvent.VK_NUMPAD8:
delta_y = -OFFSET;
break;
case KeyEvent.VK_DOWN:
case KeyEvent.VK_NUMPAD2:
delta_y = OFFSET;
break;
case KeyEvent.VK_MINUS:
case KeyEvent.VK_SUBTRACT:
requestedZoom = 1;
break;
case KeyEvent.VK_ADD:
case KeyEvent.VK_EQUALS:
requestedZoom = -1;
break;
}
if (delta_x != 0 || delta_y != 0)
@@ -72,5 +88,12 @@ public class PanKeyListener extends KeyAdapter
viewer.setCenter(new Point2D.Double(x, y));
viewer.repaint();
}
if( requestedZoom != 0 )
{
int zoomLevel = viewer.getZoom() + requestedZoom;
viewer.setZoom( zoomLevel );
}
}
}