<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Widgets within an accordion container in ArcGIS Viewer for Flex Questions</title>
    <link>https://community.esri.com/t5/arcgis-viewer-for-flex-questions/widgets-within-an-accordion-container/m-p/450319#M12891</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi I'm new to Flex / ArcGIS this past month, my experience has been mostly with Actionscript 3 and Flash. I'm trying to modify the viewer so that the widgets themselves open as items within an accordion rather than the default widget container. I've got an accordion built, and using the code in the HeaderController was able to populate each accordion header with the labels that end up in the configData (from config.xml), and when you click the accordion header is triggers the widget to run within the default WidgetContainer (just like the widget menu in the HeaderController), but I am really chasing my tail trying to get the actual widgets to load as content beneath their respective headers.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My goal is for this solution to involve as little tweaking to the stock 2.4.1 app as possible, namely, only having to add my own widgets, and change the index.mxml / config.xml / default.css. I'd rather not get into hacking up WidgetManager.mxml / WidgetContainer.mxml if I don't have to.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there a way to take advantage of all tracking and such that WidgetManager does (open/closed/loaded/ready/etc) and yet have the widgets render as accordion items? The best idea I can come up with right now seems to be to let them load within the widgetcontainer, then "steal" them out of it and add them into the accordion.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My messy preliminary code below. Does any of this make sense? &lt;span class="lia-unicode-emoji" title=":face_with_tongue:"&gt;😛&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:s="library://ns.adobe.com/flex/spark"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:mx="library://ns.adobe.com/flex/mx"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:viewer="com.esri.viewer.*"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:WidgetAccordion="widgets.GISDirectUI.WidgetAccordion.*"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:widgetContainer="widgets.WidgetContainer.*"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height="100%"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; borderSkin="{null}"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; creationComplete="creationCompleteHandler(event)"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetConfigLoaded="init()"&amp;gt;
 
 &amp;lt;fx:Script&amp;gt;
&amp;nbsp; &amp;lt;![CDATA[
&amp;nbsp;&amp;nbsp; import com.esri.viewer.ViewerContainer;
&amp;nbsp;&amp;nbsp; import com.esri.viewer.AppEvent;
&amp;nbsp;&amp;nbsp; import com.esri.viewer.IBaseWidget;
&amp;nbsp;&amp;nbsp; import com.esri.viewer.WidgetStates;
&amp;nbsp;&amp;nbsp; import com.esri.viewer.IWidgetContainer;
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; import mx.core.IVisualElement;
&amp;nbsp;&amp;nbsp; import mx.events.FlexEvent;
&amp;nbsp;&amp;nbsp; import mx.collections.ArrayCollection;
&amp;nbsp;&amp;nbsp; import mx.controls.Button;
&amp;nbsp;&amp;nbsp; import mx.effects.easing.*;
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; [Bindable]
&amp;nbsp;&amp;nbsp; private var widgetItemAC:ArrayCollection;
&amp;nbsp;&amp;nbsp; [Bindable]
&amp;nbsp;&amp;nbsp; private var groupWidgetAC:ArrayCollection;
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; private function creationCompleteHandler(event:FlexEvent):void
&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (configData)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItemAC = getWidgetItems(configData.widgets);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var curHeader:Button;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i:int = 0; i &amp;lt; widgetBox.numChildren; i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curHeader = Button(widgetBox.getHeaderAt(i));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curHeader.addEventListener(MouseEvent.CLICK, accordionItemClick);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; private function init():void
&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (configXML)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; private function getWidgetItems(widgetList:Array):ArrayCollection
&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var menuItems:ArrayCollection = new ArrayCollection;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var widgetItem:WidgetItem;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i:int = 0; i &amp;lt; widgetList.length; )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (widgetList&lt;I&gt;.grouped)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // grouped
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var widgetArray:Array = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var length:Number = widgetList&lt;I&gt;.groupLength;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var k:int = 0; k &amp;lt; length; k++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetArray.push({ widget: widgetList[i + k], open: (widgetList&lt;I&gt;.preload &amp;amp;&amp;amp; (widgetList&lt;I&gt;.preload == "open" || widgetList&lt;I&gt;.preload == "minimized")) ? true : false });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem = new WidgetItem;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.isGroup = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.label = widgetList&lt;I&gt;.groupLabel;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.icon = widgetList&lt;I&gt;.groupIcon;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.widgets = widgetArray;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuItems.addItem(widgetItem);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // move to the next group
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = i + length;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // upgrouped
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem = new WidgetItem;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.id = widgetList&lt;I&gt;.id;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.label = widgetList&lt;I&gt;.label;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.icon = widgetList&lt;I&gt;.icon;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.url = widgetList&lt;I&gt;.url;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.open = widgetList&lt;I&gt;.preload &amp;amp;&amp;amp; (widgetList&lt;I&gt;.preload == "open" || widgetList&lt;I&gt;.preload == "minimized");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuItems.addItem(widgetItem);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // move to the next individual widget
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; return menuItems;
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; private function accordionItemClick(event:Event):void
&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; ViewerContainer.dispatchEvent(new AppEvent(AppEvent.WIDGET_RUN, event.target.parent.selectedIndex));
&amp;nbsp;&amp;nbsp;&amp;nbsp; //event.target.parent.getHeaderAt(event.target.parent.selectedIndex).addChild(configData.widgetContainers[0].widgets[event.target.parent.selectedIndex]);
&amp;nbsp;&amp;nbsp;&amp;nbsp; //event.target.parent.getHeaderAt(event.target.parent.selectedIndex).addElement(configData.widgetContainers[0].widgets[event.target.parent.selectedIndex]);
&amp;nbsp;&amp;nbsp;&amp;nbsp; trace(configData.widgetContainers[0].widgets[event.target.parent.selectedIndex].label);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp; ]]&amp;gt;
 &amp;lt;/fx:Script&amp;gt;
&amp;nbsp; 
&amp;nbsp; &amp;lt;s:BorderContainer id="rightPanel"
&amp;nbsp;&amp;nbsp; width="300" height="100%"
&amp;nbsp;&amp;nbsp; backgroundAlpha=".95"
&amp;nbsp;&amp;nbsp; backgroundColor="0x2c2c2c"&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;lt;mx:Accordion id="widgetBox" width="100%" height="300" openDuration="125" openEasingFunction="{Linear.easeOut}"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Repeater id="widgets" dataProvider="{widgetItemAC}"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:VBox id="wrapper" width="100%" height="100%" label="{widgets.currentItem.label}"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- &amp;lt;s:Label id="theurl" text="{widgets.currentItem.url}"/&amp;gt; --&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:VBox&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Repeater&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Accordion&amp;gt;
&amp;nbsp; &amp;lt;/s:BorderContainer&amp;gt;
 
&amp;lt;/viewer:BaseWidget&amp;gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 19 Aug 2011 22:04:00 GMT</pubDate>
    <dc:creator>mbunambuna</dc:creator>
    <dc:date>2011-08-19T22:04:00Z</dc:date>
    <item>
      <title>Widgets within an accordion container</title>
      <link>https://community.esri.com/t5/arcgis-viewer-for-flex-questions/widgets-within-an-accordion-container/m-p/450319#M12891</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi I'm new to Flex / ArcGIS this past month, my experience has been mostly with Actionscript 3 and Flash. I'm trying to modify the viewer so that the widgets themselves open as items within an accordion rather than the default widget container. I've got an accordion built, and using the code in the HeaderController was able to populate each accordion header with the labels that end up in the configData (from config.xml), and when you click the accordion header is triggers the widget to run within the default WidgetContainer (just like the widget menu in the HeaderController), but I am really chasing my tail trying to get the actual widgets to load as content beneath their respective headers.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My goal is for this solution to involve as little tweaking to the stock 2.4.1 app as possible, namely, only having to add my own widgets, and change the index.mxml / config.xml / default.css. I'd rather not get into hacking up WidgetManager.mxml / WidgetContainer.mxml if I don't have to.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there a way to take advantage of all tracking and such that WidgetManager does (open/closed/loaded/ready/etc) and yet have the widgets render as accordion items? The best idea I can come up with right now seems to be to let them load within the widgetcontainer, then "steal" them out of it and add them into the accordion.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My messy preliminary code below. Does any of this make sense? &lt;span class="lia-unicode-emoji" title=":face_with_tongue:"&gt;😛&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:s="library://ns.adobe.com/flex/spark"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:mx="library://ns.adobe.com/flex/mx"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:viewer="com.esri.viewer.*"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:WidgetAccordion="widgets.GISDirectUI.WidgetAccordion.*"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:widgetContainer="widgets.WidgetContainer.*"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height="100%"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; borderSkin="{null}"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; creationComplete="creationCompleteHandler(event)"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetConfigLoaded="init()"&amp;gt;
 
 &amp;lt;fx:Script&amp;gt;
&amp;nbsp; &amp;lt;![CDATA[
&amp;nbsp;&amp;nbsp; import com.esri.viewer.ViewerContainer;
&amp;nbsp;&amp;nbsp; import com.esri.viewer.AppEvent;
&amp;nbsp;&amp;nbsp; import com.esri.viewer.IBaseWidget;
&amp;nbsp;&amp;nbsp; import com.esri.viewer.WidgetStates;
&amp;nbsp;&amp;nbsp; import com.esri.viewer.IWidgetContainer;
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; import mx.core.IVisualElement;
&amp;nbsp;&amp;nbsp; import mx.events.FlexEvent;
&amp;nbsp;&amp;nbsp; import mx.collections.ArrayCollection;
&amp;nbsp;&amp;nbsp; import mx.controls.Button;
&amp;nbsp;&amp;nbsp; import mx.effects.easing.*;
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; [Bindable]
&amp;nbsp;&amp;nbsp; private var widgetItemAC:ArrayCollection;
&amp;nbsp;&amp;nbsp; [Bindable]
&amp;nbsp;&amp;nbsp; private var groupWidgetAC:ArrayCollection;
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; private function creationCompleteHandler(event:FlexEvent):void
&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (configData)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItemAC = getWidgetItems(configData.widgets);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var curHeader:Button;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i:int = 0; i &amp;lt; widgetBox.numChildren; i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curHeader = Button(widgetBox.getHeaderAt(i));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curHeader.addEventListener(MouseEvent.CLICK, accordionItemClick);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; private function init():void
&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (configXML)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; private function getWidgetItems(widgetList:Array):ArrayCollection
&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var menuItems:ArrayCollection = new ArrayCollection;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var widgetItem:WidgetItem;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i:int = 0; i &amp;lt; widgetList.length; )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (widgetList&lt;I&gt;.grouped)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // grouped
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var widgetArray:Array = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var length:Number = widgetList&lt;I&gt;.groupLength;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var k:int = 0; k &amp;lt; length; k++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetArray.push({ widget: widgetList[i + k], open: (widgetList&lt;I&gt;.preload &amp;amp;&amp;amp; (widgetList&lt;I&gt;.preload == "open" || widgetList&lt;I&gt;.preload == "minimized")) ? true : false });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem = new WidgetItem;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.isGroup = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.label = widgetList&lt;I&gt;.groupLabel;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.icon = widgetList&lt;I&gt;.groupIcon;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.widgets = widgetArray;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuItems.addItem(widgetItem);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // move to the next group
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = i + length;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // upgrouped
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem = new WidgetItem;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.id = widgetList&lt;I&gt;.id;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.label = widgetList&lt;I&gt;.label;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.icon = widgetList&lt;I&gt;.icon;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.url = widgetList&lt;I&gt;.url;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widgetItem.open = widgetList&lt;I&gt;.preload &amp;amp;&amp;amp; (widgetList&lt;I&gt;.preload == "open" || widgetList&lt;I&gt;.preload == "minimized");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuItems.addItem(widgetItem);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // move to the next individual widget
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; return menuItems;
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; private function accordionItemClick(event:Event):void
&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; ViewerContainer.dispatchEvent(new AppEvent(AppEvent.WIDGET_RUN, event.target.parent.selectedIndex));
&amp;nbsp;&amp;nbsp;&amp;nbsp; //event.target.parent.getHeaderAt(event.target.parent.selectedIndex).addChild(configData.widgetContainers[0].widgets[event.target.parent.selectedIndex]);
&amp;nbsp;&amp;nbsp;&amp;nbsp; //event.target.parent.getHeaderAt(event.target.parent.selectedIndex).addElement(configData.widgetContainers[0].widgets[event.target.parent.selectedIndex]);
&amp;nbsp;&amp;nbsp;&amp;nbsp; trace(configData.widgetContainers[0].widgets[event.target.parent.selectedIndex].label);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp; ]]&amp;gt;
 &amp;lt;/fx:Script&amp;gt;
&amp;nbsp; 
&amp;nbsp; &amp;lt;s:BorderContainer id="rightPanel"
&amp;nbsp;&amp;nbsp; width="300" height="100%"
&amp;nbsp;&amp;nbsp; backgroundAlpha=".95"
&amp;nbsp;&amp;nbsp; backgroundColor="0x2c2c2c"&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;lt;mx:Accordion id="widgetBox" width="100%" height="300" openDuration="125" openEasingFunction="{Linear.easeOut}"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Repeater id="widgets" dataProvider="{widgetItemAC}"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:VBox id="wrapper" width="100%" height="100%" label="{widgets.currentItem.label}"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- &amp;lt;s:Label id="theurl" text="{widgets.currentItem.url}"/&amp;gt; --&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:VBox&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Repeater&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Accordion&amp;gt;
&amp;nbsp; &amp;lt;/s:BorderContainer&amp;gt;
 
&amp;lt;/viewer:BaseWidget&amp;gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Aug 2011 22:04:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-viewer-for-flex-questions/widgets-within-an-accordion-container/m-p/450319#M12891</guid>
      <dc:creator>mbunambuna</dc:creator>
      <dc:date>2011-08-19T22:04:00Z</dc:date>
    </item>
    <item>
      <title>Re: Widgets within an accordion container</title>
      <link>https://community.esri.com/t5/arcgis-viewer-for-flex-questions/widgets-within-an-accordion-container/m-p/450320#M12892</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi, did you ever find a solution?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to do something similar except using a tab container.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I want to embed a number of widgets within separate tabs, without breaking the viewer's widget model.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;regards&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Sep 2011 05:01:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-viewer-for-flex-questions/widgets-within-an-accordion-container/m-p/450320#M12892</guid>
      <dc:creator>DanielBaternik</dc:creator>
      <dc:date>2011-09-16T05:01:39Z</dc:date>
    </item>
  </channel>
</rss>

