package com.opendoorlogistics.codefromweb.jxmapviewer2.fork.swingx.input; import java.awt.Rectangle; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.geom.Point2D; import javax.swing.SwingUtilities; import com.opendoorlogistics.codefromweb.jxmapviewer2.fork.swingx.JXMapViewer; /** * Centers the map on the mouse cursor * if left is double-clicked or middle mouse * button is pressed. * @author Martin Steiger * @author joshy */ public class CenterMapListener extends MouseAdapter { private JXMapViewer viewer; /** * @param viewer the jxmapviewer */ public CenterMapListener(JXMapViewer viewer) { this.viewer = viewer; } @Override public void mousePressed(MouseEvent evt) { boolean left = SwingUtilities.isLeftMouseButton(evt); boolean middle = SwingUtilities.isMiddleMouseButton(evt); boolean doubleClick = (evt.getClickCount() == 2); if (middle || (left && doubleClick)) { recenterMap(evt); } } private void recenterMap(MouseEvent evt) { Rectangle bounds = viewer.getViewportBounds(); double x = bounds.getX() + evt.getX(); double y = bounds.getY() + evt.getY(); viewer.setCenter(new Point2D.Double(x, y)); viewer.setZoom(viewer.getZoom() - 1); viewer.repaint(); } }