private function openDetect(event:AppEvent):void { var id:Number = event.data as Number; var idx:Object = configData.widgetIndex[id]; var wgt:Object = configData.widgetContainers[idx.container].widgets[idx.widget]; var wid:String = wgt.url; var blocked:ArrayCollection = new ArrayCollection([ "widgets/EditSWEATIR/EditSWEATIRWidget.swf" ]); if(blocked.contains(wid)){ this.close(); } } private function widgetOpenedHandler(event:Event):void { ViewerContainer.addEventListener(AppEvent.WIDGET_RUN, openDetect); }
What I was originally looking to do was if you had the Editor widget open and tried to open the viewer widget it would block the viewer widget from opening, instead of closing the editor widget.
import com.esri.viewer.IBaseWidget; import com.esri.viewer.IWidgetContainer; import mx.core.IVisualElement; import widgets.WidgetContainer.WidgetContainerWidget; private function widgetItemDG_widgetItemClickHandler(event:Event):void { var widgetItem:WidgetItem = ItemRenderer(event.target).data as WidgetItem; if (widgetItem.isGroup) { groupWidgetAC = new ArrayCollection(); // check the array of widgets if they are open before hand for each (var widgetObj:Object in widgetItem.widgets) { var widgetItem1:WidgetItem = new WidgetItem; widgetItem1.id = widgetObj.widget.id; widgetItem1.label = widgetObj.widget.label; widgetItem1.icon = widgetObj.widget.icon; widgetItem1.url = widgetObj.widget.url; widgetItem1.open = widgetObj.open; groupWidgetAC.addItem(widgetItem1); } menuToolTip.visible = false; widgetList.visible = true; } else { checkIfRunOk(widgetItem); } } private function checkIfRunOk(widgetItem:WidgetItem):void { var allow:Boolean = true; var sid:Number = ViewerContainer.getInstance().getWidgetId("Enhanced Search"); var sid2:Number = ViewerContainer.getInstance().getWidgetId("Draw and Measure"); if(!isNaN(sid)){ var idx:Object = configData.widgetIndex[widgetItem.id]; var wgtContainer:IWidgetContainer = configData.widgetContainers[idx.container].container.obj; var wc:* = wgtContainer; if(wc){ var ve:IVisualElement; for (var e:int = 0; e < wc.widgetContainer.widgetContainer.numElements; e++) { ve = wc.widgetContainer.widgetContainer.getElementAt(e); var baseWidget:IBaseWidget = ve as IBaseWidget; if (baseWidget.widgetId == sid) { if(ve.visible && widgetItem.label == "Draw and Measure"){ allow = false; break; } }else if(baseWidget.widgetId == sid2){ if(ve.visible && widgetItem.label == "Enhanced Search"){ allow = false; break; } } } } } if(allow) ViewerContainer.dispatchEvent(new AppEvent(AppEvent.WIDGET_RUN, widgetItem.id)); } private function widgetList_widgetItemClickHandler(event:Event):void { var widgetItem:WidgetItem = ItemRenderer(event.target).data as WidgetItem; checkIfRunOk(widgetItem); }
//My Add public var _configData:ConfigData; //End My Add //My Add public function getWidgetId(widgetLabel:String):Number { var id:Number = Number.NaN; for (var i:Number = 0; i < _configData.widgets.length; i++) { if (_configData.widgets.label == widgetLabel) id = _configData.widgets.id; } return id; } //End My Add private function postConfigHandler(event:AppEvent):void { //My Change var configData:ConfigData = _configData = event.data as ConfigData; //End My Change var ui:Array = configData.viewerUI; var splash:Object = {}; for (var i:int = 0; i < ui.length; i++) { if (ui.id == "splashpage") { splash.url = ui.value; splash.config = ui.config; splash.title = ui.title; } } if (splash.url) { loadSplash(splash); } }