package jeql.workbench.ui.geomview.tool; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.geom.Point2D; import jeql.workbench.Workbench; import jeql.workbench.ui.geomview.GeometryViewPanel; import jeql.workbench.ui.geomview.Viewport; //import com.vividsolutions.jts.awt.FontGlyphReader; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.PrecisionModel; public abstract class BasicTool implements Tool { private PrecisionModel gridPM; public BasicTool() { super(); } protected Graphics2D getGraphics2D() { Graphics2D g = (Graphics2D) panel().getGraphics(); if (g != null) { // guard against g == null g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); } return g; } // protected void gestureFinished() throws Exception; public void mouseClicked(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseDragged(MouseEvent e) { } public void mouseMoved(MouseEvent e) { } public Cursor getCursor() { return Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR); } /** * Called when tool is activated. * * If subclasses override this method they must call <tt>super.activate()</tt>. */ public void activate() { gridPM = getViewport().getGridPrecisionModel(); } protected GeometryViewPanel panel() { // this should probably be passed in during setup return Workbench.geomView(); } private Viewport getViewport() { return panel().getViewport(); } Point2D toView(Coordinate modePt) { return getViewport().toView(modePt); } double toView(double distance) { return getViewport().toView(distance); } Point2D toModel(java.awt.Point viewPt) { return getViewport().toModel(viewPt); } Coordinate toModelCoordinate(java.awt.Point viewPt) { return getViewport().toModelCoordinate(viewPt); } double toModel(double viewDist) { return viewDist / getViewport().getScale(); } protected Coordinate toModelSnappedToViewGrid(Point2D p) { // snap to view grid Coordinate pModel = getViewport().toModelCoordinate(p); gridPM.makePrecise(pModel); return pModel; } protected double gridSize() { return getViewport().getGridSizeModel(); } /* protected Coordinate toModelSnappedToDrawingGrid(Point2D p) { Point2D pt = panel().snapToGrid(getViewport().toModel(p)); return new Coordinate(pt.getX(), pt.getY()); } */ }