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);
}
}