/* GeoGebra - Dynamic Mathematics for Everyone http://www.geogebra.org This file is part of GeoGebra. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. */ package org.geogebra.desktop.euclidian; import java.awt.Component; import java.awt.event.ComponentEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import javax.swing.ToolTipManager; import org.geogebra.common.euclidian.EuclidianController; import org.geogebra.common.euclidian.event.AbstractEvent; import org.geogebra.common.kernel.Kernel; import org.geogebra.desktop.euclidian.event.MouseEventD; import org.geogebra.desktop.main.AppD; /** * EuclidianController.java * * Created on 16. October 2001, 15:41 */ public class EuclidianControllerD extends EuclidianController implements EuclidianControllerListeners { private int moveCounter = 0; private int defaultInitialDelay; /*********************************************** * Creates new EuclidianController * * @param kernel * kernel **********************************************/ public EuclidianControllerD(Kernel kernel) { super(kernel.getApplication()); setKernel(kernel); // for tooltip manager defaultInitialDelay = ToolTipManager.sharedInstance().getInitialDelay(); } @Override public AppD getApplication() { return (AppD) app; } @Override public void mouseClicked(MouseEvent e) { // let mousePressed and mouseReleased take care of this } @Override public void mousePressed(MouseEvent e) { AbstractEvent event = MouseEventD.wrapEvent(e); closePopups(event.getX(), event.getY(), null); wrapMousePressed(event); if (!app.isRightClick(event)) { prepareModeForFreehand(); } moveCounter = 0; event.release(); } @Override public void mouseDragged(MouseEvent e) { AbstractEvent event = MouseEventD.wrapEvent(e); // no capture in desktop wrapMouseDragged(event, true); moveCounter++; event.release(); } @Override public void mouseReleased(MouseEvent e) { AbstractEvent event = MouseEventD.wrapEvent(e); if (moveCounter < 2) { this.resetModeAfterFreehand(); } wrapMouseReleased(event); this.resetModeAfterFreehand(); event.release(); } @Override public void mouseMoved(MouseEvent e) { AbstractEvent event = MouseEventD.wrapEvent(e); wrapMouseMoved(event); event.release(); } @Override public void mouseEntered(MouseEvent e) { wrapMouseEntered(); } @Override public void mouseExited(MouseEvent e) { AbstractEvent event = MouseEventD.wrapEvent(e); wrapMouseExited(event); event.release(); } /* * public void focusGained(FocusEvent e) { initToolTipManager(); } * * public void focusLost(FocusEvent e) { resetToolTipManager(); } */ @Override public void initToolTipManager() { // set tooltip manager ToolTipManager ttm = ToolTipManager.sharedInstance(); ttm.setInitialDelay(defaultInitialDelay / 2); ttm.setEnabled(((AppD) app).getAllowToolTips()); } @Override public void resetToolTipManager() { ToolTipManager ttm = ToolTipManager.sharedInstance(); ttm.setInitialDelay(defaultInitialDelay); } /* ****************************************************** */ /* * final protected void transformCoords(boolean usePointCapturing) { // calc * real world coords calcRWcoords(); * * if (usePointCapturing) { double pointCapturingPercentage = 1; switch * (view.getPointCapturingMode()) { case * EuclidianConstants.POINT_CAPTURING_AUTOMATIC: if * (!view.isGridOrAxesShown())break; * * case EuclidianView.POINT_CAPTURING_ON: pointCapturingPercentage = 0.125; * * case EuclidianView.POINT_CAPTURING_ON_GRID: // X = (x, y) ... next grid * point double x = Kernel.roundToScale(xRW, view.gridDistances[0]); double * y = Kernel.roundToScale(yRW, view.gridDistances[1]); // if |X - XRW| < * gridInterval * pointCapturingPercentage then take the grid point double a * = Math.abs(x - xRW); double b = Math.abs(y - yRW); if (a < * view.gridDistances[0] * pointCapturingPercentage && b < * view.gridDistances[1] * pointCapturingPercentage) { xRW = x; yRW = y; * mouseLoc.x = view.toScreenCoordX(xRW); mouseLoc.y = * view.toScreenCoordY(yRW); } * * default: // point capturing off } } } */ // fetch the two selected points /* * protected void join(){ GeoPoint[] points = getSelectedPoints(); GeoLine * line = kernel.Line(null, points[0], points[1]); } */ @Override public void componentResized(ComponentEvent e) { // tell the view that it was resized getView().updateSize(); } @Override public void componentShown(ComponentEvent e) { // do nothing } @Override public void componentHidden(ComponentEvent e) { // do nothing } @Override public void componentMoved(ComponentEvent e) { // do nothing } /** * Zooms in or out using mouse wheel */ @Override public void mouseWheelMoved(MouseWheelEvent e) { wrapMouseWheelMoved(e.getX(), e.getY(), e.getWheelRotation(), e.isShiftDown() || e.isMetaDown(), e.isAltDown()); } @Override public void addListenersTo(Component evjpanel) { evjpanel.addMouseMotionListener(this); evjpanel.addMouseListener(this); evjpanel.addMouseWheelListener(this); evjpanel.addComponentListener(this); } }