/******************************************************************************* * Copyright (c) MOBAC developers * * 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, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package mobac.gui.mapview.controller; //License: GPL. Copyright 2008 by Jan Peter Stotz import java.awt.Point; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.MouseWheelListener; import mobac.gui.mapview.PreviewMap; /** * Abstract base class for all mouse controller implementations. For implementing your own controller create a class * that derives from this one and implements one or more of the following interfaces: * <ul> * <li>{@link MouseListener}</li> * <li>{@link MouseMotionListener}</li> * <li>{@link MouseWheelListener}</li> * </ul> */ public abstract class JMapController { protected final PreviewMap map; protected boolean enabled = false; public JMapController(PreviewMap map) { this.map = map; } public JMapController(PreviewMap map, boolean enabled) { this(map); if (enabled) enable(); } public void enable() { if (enabled) return; if (this instanceof MouseListener) map.addMouseListener((MouseListener) this); if (this instanceof MouseWheelListener) map.addMouseWheelListener((MouseWheelListener) this); if (this instanceof MouseMotionListener) map.addMouseMotionListener((MouseMotionListener) this); this.enabled = true; } public void disable() { if (!enabled) return; if (this instanceof MouseListener) map.removeMouseListener((MouseListener) this); if (this instanceof MouseWheelListener) map.removeMouseWheelListener((MouseWheelListener) this); if (this instanceof MouseMotionListener) map.removeMouseMotionListener((MouseMotionListener) this); this.enabled = false; } protected Point convertToAbsolutePoint(Point p) { Point mapPoint = map.getTopLeftCoordinate(); mapPoint.x += p.getX(); mapPoint.y += p.getY(); mapPoint = map.getMapSource().getMapSpace().changeZoom(mapPoint, map.getZoom(), PreviewMap.MAX_ZOOM); return mapPoint; } }