/*---------------- 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.framework.Frame; import nl.idgis.giclient.framework.FrameWork; import nl.idgis.giclient.framework.GIComponent; import nl.idgis.giclient.framework.buttons.PaneButtonConfig; import nl.idgis.giclient.Ruler; import nl.idgis.giclient.GIClientConfig; import nl.idgis.giclient.gis.EditListener; import nl.idgis.giclient.util.Strings; import nl.idgis.giclient.gis.SelectableLayer; import nl.idgis.giclient.gis.SelectionListener; import nl.idgis.giclient.gis.Layer; import nl.idgis.giclient.event.StateEventDispatcher; import nl.idgis.giclient.event.StateEvent; import nl.idgis.giclient.event.StateEventListener; class nl.idgis.giclient.framework.SinglePaneComponent extends GIComponent implements EditListener, SelectionListener { private var pane:MovieClip = null; private var giClientConfig:GIClientConfig = null; // Set by init object. private var paneButtonConfig:PaneButtonConfig = null; private var giButtonConfigs:Array; private var initVisible:Boolean = false; private var frameClass:String = null; var contentProperties:Object = null; private var oldX:Number; private var eventDispatcher:StateEventDispatcher; function SinglePaneComponent(name:String, paneButtonConfig:PaneButtonConfig, giButtonConfigs:Array, url:String, urlContent:String, title:String, scrollable:Boolean, resizable:Boolean, closeable:Boolean, lightColor:Number, darkColor:Number, transparent:Boolean, x:Number, y:Number, width:String, height:String, initVisible:Boolean, frameClass:String) { super(name, url, title, scrollable, resizable, closeable, lightColor, darkColor, transparent, x, y, width, height); if(urlContent!=null){ contentProperties = new Object(); contentProperties["url"] = urlContent; } this.giButtonConfigs = giButtonConfigs; this.paneButtonConfig = paneButtonConfig; this.initVisible = initVisible; this.frameClass = frameClass; Stage.addListener(this); // TO PANE' eventDispatcher = new StateEventDispatcher(); } function onChangeEditing():Void { if (name == "PropertiesViewer") { if (ruler.isEditing()) { var layers:Array = ruler.getGIS().getEditableLayers(); for(var i:Number = 0; i < layers.length; i++) { var layer:SelectableLayer = SelectableLayer(layers[i]); layer.layerEventDispatcher.addSelectionListener(this); } //showPane(); } else { // hidePane(); } } } function onResize():Void { // TO PANE if (pane != null) { if (name == "OverViewer") { pane._x = Stage.width - 135; pane._y = y; } else if (name == "LegendViewer") { pane._x = x; pane._y = y; } else { pane._x = x * Stage.width / 800; pane._y = y * Stage.height / 600; } } } function setRuler(ruler:Ruler):Void { super.setRuler(ruler); paneButtonConfig.setSinglePaneComponent(this); if (initVisible) { showPane(contentProperties); } if (name == "PropertiesViewer") { ruler.rulerEventDispatcher.addEditListener(this); } } function getGIButtonConfigs():Array{ return giButtonConfigs; } function togglePaneVisible():Void { if (pane == null || pane._visible == false) { showPane(contentProperties); } else { hidePane(); } } function addEventListener(listener:StateEventListener, actionType:Number, propertyName:String):Void { eventDispatcher.addEventListener(listener, "SinglePaneComponent", actionType, propertyName); } function removeEventListener(listener:StateEventListener, actionType:Number, propertyName:String):Void { eventDispatcher.removeEventListener(listener, "SinglePaneComponent", actionType, propertyName); } function showPane(contentProperties:Object):Frame { paneButtonConfig.setGlowing(true); paneDepth = Frame.paneList.length + 2; if (pane == null) { var initObject:Object = {ruler: this.ruler, scrollContent: url, paneTitle: title, isScrolling: scrollable, resizable: this.resizable, hasShader: closeable, colorlight: lightColor, colordark: darkColor, doorzichtig: transparent, frameClass:this.frameClass}; initObject.paneComponent = this; initObject.contentProperties = contentProperties; pane = FrameWork.addFrame(name + "Pane", initObject); if (name == "OverViewer") { pane._x = Stage.width - 135; // REL TO PANE pane._y = y; } else if (name == "LegendViewer") { pane._x = x; pane._y = y; } else { pane._x = x * Stage.width / 800; pane._y = y * Stage.height / 600; } setSize(pane, width, height); } else { pane._visible = true; pane._x = oldX; pane.activateHandler(); } eventDispatcher.dispatchEvent(new StateEvent(this, "SinglePaneComponent", StateEvent.CHANGE, "visible")); return Frame(pane); } function hidePane():Void { if (pane != null && pane._visible != false) { if (name == "SateComponent") { ruler.getGIS().removeLandMark(pane.scrollpane_mc.tmp_mc.sateComponent.landMark); } paneButtonConfig.setGlowing(false); //pane.handleClose(); //pane.removeMovieClip(); pane._visible = false; oldX = pane._x; pane._x = -pane._width; //pane = null; // removeMovieClip does not nullify pane. eventDispatcher.dispatchEvent(new StateEvent(this, "SinglePaneComponent", StateEvent.CHANGE, "visible")); } } function getPane():Frame{ if(pane == null || pane._visible == false) { return null; } else { return Frame(pane); } } function onChangeLayerSelectedFeatures(layer : Layer, selected : Boolean, subSelected : Boolean, current : Boolean) : Void { if(layer == ruler.getEditLayer()) { showPane(); } } }