/*---------------- FILE HEADER --------------------------------------- This file is part of Geoide. Copyright (C) 2005-2006 by: IDgis B.V. http://www.idgis.nl This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Contact: Herman Assink IDgis bv P.O. Box 15 7450 AA Holten The Netherlands E-Mail: herman.assink@idgis.nl * @version 1.4.0 * @author IDgis team * ------------------------------------------------------------------------*/ import nl.idgis.giclient.config.Colors; import nl.idgis.giclient.geoma.LinearRing; import nl.idgis.giclient.geoma.Point; import nl.idgis.giclient.geoma.Square; import nl.idgis.giclient.gui.mapviewer.MapGeometry; import nl.idgis.giclient.gui.mapviewer.MapViewer; import nl.idgis.giclient.modes.MapViewerSelectByGeometry; class nl.idgis.giclient.modes.MapViewerSelectBySquare extends MapViewerSelectByGeometry { function performPress(mapViewer:MapViewer,pressX:Number,pressY:Number, point:Point):Void { this.mapViewer = mapViewer; if(newGeometry){ selectionGeometry = null; newGeometry = false; } if (point == null) { point = mapViewer.pixel2Point(mapViewer._xmouse, mapViewer._ymouse); } if (selectionGeometry == null) { if (selectionMapGeometry != null) { removeMapGeometry(mapViewer); } var points:Array = new Array(point, point); var linearRing:LinearRing = new LinearRing(point.getSRS(), points); linearRing.addPoint(new Point(point.getSRS(), point.getX(), point.getY())); linearRing.addPoint(new Point(point.getSRS(), point.getX(), point.getY())); linearRing.addPoint(new Point(point.getSRS(), point.getX(), point.getY())); selectionGeometry = new Square(point.getSRS(), linearRing); selectionMapGeometry = MapGeometry(mapViewer.getGeometryLayer().addMapGeometry(selectionGeometry, MapGeometry.SELECTION, Colors.selectionGeometryColor, "")); selectionMapGeometry.onChangeGeometry(); } else { setSelection(); showBufferFrame(); newGeometry = true; } } function performMouseMove(mapViewer:MapViewer):Void { if (!newGeometry) { var point:Point = mapViewer.pixel2Point(mapViewer._xmouse,mapViewer._ymouse); var points:Array = Square(selectionGeometry).getExteriorRing().getPoints(); points[1].setXY(point.getX(), points[1].getY()); points[2].setXY(point.getX(), point.getY()); points[3].setXY(points[3].getX(), point.getY()); // TODO MODEL CONSTRAINTS selectionMapGeometry.onChangeGeometry(); // TODO EVENT MODEL } } }