/*---------------- 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.gis.Feature; import nl.idgis.giclient.gis.Layer; import nl.idgis.giclient.util.SynchListener; class nl.idgis.giclient.gis.LayerSession { private var layer:Layer = null; private var synchListener:SynchListener = null; private var filteredChanged:Boolean = false; private var selectedChanged:Boolean = false; private var subSelectedChanged:Boolean = false; private var currentChanged:Boolean = false; private var requestingFeatures:Array = null; function LayerSession(layer:Layer, synchListener:SynchListener) { this.layer = layer; this.synchListener = synchListener; requestingFeatures = new Array(); } function setFilteredChanged(filteredChanged:Boolean):Void { this.filteredChanged = filteredChanged; } function setSelectedChanged(selectedChanged:Boolean):Void { this.selectedChanged = selectedChanged; } function setSubSelectedChanged(subSelectedChanged:Boolean):Void { this.subSelectedChanged = subSelectedChanged; } function setCurrentChanged(currentChanged:Boolean):Void { this.currentChanged = currentChanged; } function addRequestingFeature(feature:Feature):Void { requestingFeatures.push(feature); } function removeRequestingFeature(feature:Feature):Void { for (var i:Number = 0; i < requestingFeatures.length; i++) { if (requestingFeatures[i] == feature) { requestingFeatures.splice(i, 1); return; } } } function getNumRequestingFeatures():Number { return requestingFeatures.length; } function flush():Void { if (synchListener != null) { synchListener.onSynch(layer, "SELECTION"); // Only the action SELECT currently works with synch listeners. } if (filteredChanged) { layer.layerEventDispatcher.changeFilteredFeatures(layer); } if ((selectedChanged) || (subSelectedChanged) || (currentChanged)) { //trace("LayerSession.flush, changeSelectedFeatures: " + layer.getName() + ";" + selectedChanged + ";" + subSelectedChanged + ";" + currentChanged); layer.layerEventDispatcher.changeSelectedFeatures(layer, selectedChanged, subSelectedChanged, currentChanged); } } }