Solved! Go to Solution.
override protected function commitProperties():void { super.commitProperties(); var featureLayer:FeatureLayer = hostComponent.featureLayer; var formattedAttributes:Object = hostComponent.formattedAttributes; var graphic:Graphic = hostComponent.graphic; var map:Map = hostComponent.map; var popUpInfo:PopUpInfo = hostComponent.popUpInfo; var validMediaInfos:Array = hostComponent.validPopUpMediaInfos; var geometry:Geometry = graphic ? graphic.geometry : null; var layerDetails:LayerDetails = featureLayer ? featureLayer.layerDetails : null; vGroup.removeAllElements(); vGroup.addElement(ToggleLayers); if (popUpInfo) { if (popUpInfo.title) { titleText.text = StringUtil.substitute(popUpInfo.title, formattedAttributes); if (titleText.text) { vGroup.addElement(titleText); vGroup.addElement(titleLine); } } var htmlText:String; if (popUpInfo.description) { htmlText = StringUtil.substitute(popUpInfo.description, formattedAttributes); if (htmlText) { var descriptionText:Text = new PopUpText(); descriptionText.percentWidth = 100; descriptionText.styleSheet = textStyleSheet; cleanAndSetHtmlText(descriptionText, htmlText); trace(descriptionText.htmlText); vGroup.addElement(descriptionText); } } else { var descriptionForm:Form; for each (var fieldInfo:PopUpFieldInfo in popUpInfo.popUpFieldInfos) { if (fieldInfo.visible) { var formItem:FormItem = new FormItem(); formItem.label = fieldInfo.label || fieldInfo.fieldName; var label:Label; htmlText = formattedAttributes[fieldInfo.fieldName]; if (htmlText) { // convert attribute field values that just contain URLs into links var match:Array = htmlText.match(/^\s*((https?|ftp):\/\/\S+)\s*$/i); if (match && match.length > 0) { label = new Label(); htmlText = '<a href="' + match[1] + '" target="_blank">' + match[1] + "</a>"; } else { label = new PopUpText(); } cleanAndSetHtmlText(label, htmlText); label.selectable = true; label.styleSheet = this.textStyleSheet; label.width = 150; formItem.addChild(label); } if (!descriptionForm) { descriptionForm = new Form(); descriptionForm.percentWidth = 100; descriptionForm.horizontalScrollPolicy = ScrollPolicy.OFF; descriptionForm.verticalScrollPolicy = ScrollPolicy.OFF; descriptionForm.styleName = "formStyle"; } descriptionForm.addChild(formItem); } } if (descriptionForm) { vGroup.addElement(descriptionForm); } } if (validMediaInfos && validMediaInfos.length > 0) { vGroup.addElement(mediaBrowser); mediaBrowser.attributes = graphic.attributes; mediaBrowser.formattedAttributes = formattedAttributes; mediaBrowser.popUpFieldInfos = popUpInfo.popUpFieldInfos; mediaBrowser.popUpMediaInfos = validMediaInfos; } if (popUpInfo.showAttachments && graphic && featureLayer && layerDetails && layerDetails.hasAttachments && layerDetails.objectIdField) { vGroup.addElement(attachmentInspector); attachmentInspector.showAttachments(graphic, featureLayer); } if (map && geometry) { vGroup.addElement(zoomToButton); } } } protected function layerRBgroup_changeHandler(event:Event):void { var map:Map = hostComponent.map; map.getLayer("Public Safety").visible = !map.getLayer("Public Safety").visible; map.getLayer("Bridges").visible = !map.getLayer("Bridges").visible; } ]]> </fx:Script> <fx:Declarations> <!--- @private --> <mx:Text id="titleText" width="100%" fontWeight="bold"/> <!--- @private --> <s:Line id="titleLine" width="100%"> <s:stroke> <s:SolidColorStroke id="titleLineSymbol" color="black" weight="1"/> </s:stroke> </s:Line> <!--- @private --> <supportClasses:PopUpMediaBrowser id="mediaBrowser" width="100%" skinClass="com.esri.ags.skins.supportClasses.PopUpMediaBrowserSkin"/> <!--- @private --> <esri:AttachmentInspector id="attachmentInspector" width="100%" addEnabled="false" deleteEnabled="false"/> <!--- @private --> <mx:LinkButton id="zoomToButton" click="zoomToButton_clickHandler(event)" fontWeight="bold" label="{resourceManager.getString('ESRIMessages', 'zoomLabel')}"/> <!--- @private --> <s:RadioButtonGroup id="layerRBgroup" change="layerRBgroup_changeHandler(event)"/> <!--- @private --> <s:HGroup gap="6" verticalAlign="middle" id="ToggleLayers"> <s:RadioButton id="layerA" group="{layerRBgroup}" label="Toggle Layer A" selected="true"/> <s:RadioButton id="layerB" group="{layerRBgroup}" label="Toggle Layer B"/> </s:HGroup> </fx:Declarations>
Mark,
First of all, In the future be sure to post Flex Viewer and/or Widget questions to the Flex Viewer forum:
http://forums.arcgis.com/forums/111-ArcGIS-Viewer-for-Flex
Are you talking about just toggling the visibility of those two layer?
override protected function commitProperties():void { super.commitProperties(); var featureLayer:FeatureLayer = hostComponent.featureLayer; var formattedAttributes:Object = hostComponent.formattedAttributes; var graphic:Graphic = hostComponent.graphic; var map:Map = hostComponent.map; var popUpInfo:PopUpInfo = hostComponent.popUpInfo; var validMediaInfos:Array = hostComponent.validPopUpMediaInfos; var geometry:Geometry = graphic ? graphic.geometry : null; var layerDetails:LayerDetails = featureLayer ? featureLayer.layerDetails : null; vGroup.removeAllElements(); vGroup.addElement(ToggleLayers); if (popUpInfo) { if (popUpInfo.title) { titleText.text = StringUtil.substitute(popUpInfo.title, formattedAttributes); if (titleText.text) { vGroup.addElement(titleText); vGroup.addElement(titleLine); } } var htmlText:String; if (popUpInfo.description) { htmlText = StringUtil.substitute(popUpInfo.description, formattedAttributes); if (htmlText) { var descriptionText:Text = new PopUpText(); descriptionText.percentWidth = 100; descriptionText.styleSheet = textStyleSheet; cleanAndSetHtmlText(descriptionText, htmlText); trace(descriptionText.htmlText); vGroup.addElement(descriptionText); } } else { var descriptionForm:Form; for each (var fieldInfo:PopUpFieldInfo in popUpInfo.popUpFieldInfos) { if (fieldInfo.visible) { var formItem:FormItem = new FormItem(); formItem.label = fieldInfo.label || fieldInfo.fieldName; var label:Label; htmlText = formattedAttributes[fieldInfo.fieldName]; if (htmlText) { // convert attribute field values that just contain URLs into links var match:Array = htmlText.match(/^\s*((https?|ftp):\/\/\S+)\s*$/i); if (match && match.length > 0) { label = new Label(); htmlText = '<a href="' + match[1] + '" target="_blank">' + match[1] + "</a>"; } else { label = new PopUpText(); } cleanAndSetHtmlText(label, htmlText); label.selectable = true; label.styleSheet = this.textStyleSheet; label.width = 150; formItem.addChild(label); } if (!descriptionForm) { descriptionForm = new Form(); descriptionForm.percentWidth = 100; descriptionForm.horizontalScrollPolicy = ScrollPolicy.OFF; descriptionForm.verticalScrollPolicy = ScrollPolicy.OFF; descriptionForm.styleName = "formStyle"; } descriptionForm.addChild(formItem); } } if (descriptionForm) { vGroup.addElement(descriptionForm); } } if (validMediaInfos && validMediaInfos.length > 0) { vGroup.addElement(mediaBrowser); mediaBrowser.attributes = graphic.attributes; mediaBrowser.formattedAttributes = formattedAttributes; mediaBrowser.popUpFieldInfos = popUpInfo.popUpFieldInfos; mediaBrowser.popUpMediaInfos = validMediaInfos; } if (popUpInfo.showAttachments && graphic && featureLayer && layerDetails && layerDetails.hasAttachments && layerDetails.objectIdField) { vGroup.addElement(attachmentInspector); attachmentInspector.showAttachments(graphic, featureLayer); } if (map && geometry) { vGroup.addElement(zoomToButton); } } } protected function layerRBgroup_changeHandler(event:Event):void { var map:Map = hostComponent.map; map.getLayer("Public Safety").visible = !map.getLayer("Public Safety").visible; map.getLayer("Bridges").visible = !map.getLayer("Bridges").visible; } ]]> </fx:Script> <fx:Declarations> <!--- @private --> <mx:Text id="titleText" width="100%" fontWeight="bold"/> <!--- @private --> <s:Line id="titleLine" width="100%"> <s:stroke> <s:SolidColorStroke id="titleLineSymbol" color="black" weight="1"/> </s:stroke> </s:Line> <!--- @private --> <supportClasses:PopUpMediaBrowser id="mediaBrowser" width="100%" skinClass="com.esri.ags.skins.supportClasses.PopUpMediaBrowserSkin"/> <!--- @private --> <esri:AttachmentInspector id="attachmentInspector" width="100%" addEnabled="false" deleteEnabled="false"/> <!--- @private --> <mx:LinkButton id="zoomToButton" click="zoomToButton_clickHandler(event)" fontWeight="bold" label="{resourceManager.getString('ESRIMessages', 'zoomLabel')}"/> <!--- @private --> <s:RadioButtonGroup id="layerRBgroup" change="layerRBgroup_changeHandler(event)"/> <!--- @private --> <s:HGroup gap="6" verticalAlign="middle" id="ToggleLayers"> <s:RadioButton id="layerA" group="{layerRBgroup}" label="Toggle Layer A" selected="true"/> <s:RadioButton id="layerB" group="{layerRBgroup}" label="Toggle Layer B"/> </s:HGroup> </fx:Declarations>
hostComponent.parent.parent.parent.parent.addEventListener("close", infoWinClose_Handler); private function infoWinClose_Handler(event:Event):void { //your code here trace(event.type); }