/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.eas.client.controls.geopane.mousetools;
import com.eas.client.controls.geopane.JGeoPane;
import com.eas.client.controls.geopane.actions.ZoomInAction;
import java.awt.event.MouseWheelEvent;
import java.awt.geom.Point2D;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author mg
*/
public class WheelZoomer extends GeoPaneTool {
public WheelZoomer(JGeoPane aPane) {
super(aPane);
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
try {
Point2D.Double screenCenterBefore = pane.awtScreen2Cartesian(e.getPoint());
if (e.getWheelRotation() > 0) {
pane.scaleView(1 / ZoomInAction.DEFAULT_ZOOM_FACTOR_STEP, 1 / ZoomInAction.DEFAULT_ZOOM_FACTOR_STEP, false);
} else {
pane.scaleView(ZoomInAction.DEFAULT_ZOOM_FACTOR_STEP, ZoomInAction.DEFAULT_ZOOM_FACTOR_STEP, false);
}
Point2D.Double screenCenterAfter = pane.awtScreen2Cartesian(e.getPoint());
pane.translateView(screenCenterAfter.x - screenCenterBefore.x, screenCenterAfter.y - screenCenterBefore.y, true);
pane.repaint();
} catch (Exception ex) {
Logger.getLogger(ZoomInAction.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public boolean isCapable(MouseToolCapability aCapability) {
return aCapability == MouseToolCapability.WHEEL;
}
}