/*---------------- 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.actions.Action; import nl.idgis.giclient.filterencoding.ComplexFilter; import nl.idgis.giclient.Ruler; import nl.idgis.giclient.gis.SelectableLayer; import nl.idgis.giclient.query.QueryAspect; class nl.idgis.giclient.actions.SelectAndZoomAction extends Action { private var layer:SelectableLayer = null; private var filter:ComplexFilter = null; private var queryAspect:QueryAspect = null; public function SelectAndZoomAction(ruler:Ruler, actionObject:Object) { this.ruler = ruler; //this.layer = GILayer(actionObject); this.queryAspect = QueryAspect(actionObject); this.layer = SelectableLayer(queryAspect.getLayer()); } public function doAction():Void { if (layer == null) { ruler.getGIS().getActiveLayer(); } filter = ruler.getQueryAspectFilter(); var serverParams:Object = new Object(); //layer.getFeaturesByFilter(serverParams,this, filter); //layer.getConnector().getFeaturesByFilter(layer, serverParams, this, filter); serverParams["featureAction"] = SelectableLayer.SELECT; serverParams["responseAction"] = "SETFEATURES"; layer.setCurrentFilter(filter); queryAspect.getConnector().getFeaturesByFilter(queryAspect, serverParams, this, filter); } public function handleResponse(features:Array, responseObject:Object):Void { var featuresToZoom:Array = new Array(); //controleer of de gevonden features een envelope hebben //en verzamel ids var zoomEnvelopeExist:Boolean = false; var ids:Array = new Array(); for (var i:Number = 0;i < features.length; i++) { if(features[i].getEnvelope().getMinX() != null) { featuresToZoom.push(features[i]); } ids.push(features[i].getID()); } if(layer instanceof SelectableLayer) { var sLayer:SelectableLayer = SelectableLayer(layer); sLayer.setSelectedFeatures(ids, false, null); //sLayer.setCurrentFeature(new Array(ids[0]), false, null); sLayer.setCurrentFilter(filter); } ruler.getGIS().zoomToFeatures(featuresToZoom); } }