Try calling createComponetsFromDescriptor.
The controlbar is managed through trickery. You can't just add it as a child. ________________________________ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of carriefieldsamy Sent: Thursday, May 22, 2008 8:51 AM To: [email protected] Subject: [flexcoders] TittleWindow ControlBar not showing up Hi Everyone, I'm trying to dynamically create dragable TitleWindows with ControlBars and the ControlBars are not showing up. At this point I am adding a label to the control bar. Eventually it will be an image. Thanks in Advance! Here's the code: <?xml version="1.0" encoding="utf-8"?> <core:DashboardModuleBase xmlns:mx="http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> " xmlns:core="com.arc90.dashboard.view.core.*" xmlns:arcComps="com.arc90.flexlib.controls.*" xmlns:comps="com.arc90.dashboard.view.components.*" layout="absolute" creationComplete="facade.startup(this)"> <mx:Script> <![CDATA[ import mx.controls.Button; import mx.containers.ControlBar; import com.arc90.dashboard.ApplicationFacade; import mx.events.DragEvent; import mx.events.FlexEvent; import mx.core.DragSource; import mx.managers.DragManager; import mx.containers.TitleWindow; import com.arc90.dashboard.view.components.DragWindow; import mx.events.CloseEvent; import mx.collections.ArrayCollection; import mx.containers.HBox; import mx.controls.Label; import mx.controls.TextInput; [Embed(source="/assets/icons/policyicon.png")] [Bindable] private var policyWidgetAddImage:Class; [Embed(source="/assets/icons/reporticon.png")] [Bindable] private var reportWidgetAddImage:Class; [Embed(source="/assets/icons/rssicon.png")] [Bindable] private var rssWidgetAddImage:Class; private var policyWidgetID:int = -1; private var reportWidgetID:int = -1; private var rssWidgetID:int = -1; private var policyWidgetsAC:ArrayCollection = new ArrayCollection(); private var reportWidgetsAC:ArrayCollection = new ArrayCollection(); private var rssWidgetAC:ArrayCollection = new ArrayCollection(); // Function called by the canvas dragEnter event; enables dropping private function doDragEnter(event:DragEvent):void { DragManager.acceptDragDrop(Canvas(event.target)); } // Variables used to hold the mouse pointer's location in the title bar. // Since the mouse pointer can be anywhere in the title bar, you have to // compensate for it when you drop the panel. public var xOff:Number; public var yOff:Number; // Function called by the Canvas dragDrop event; // Sets the panel's position, // "dropping" it in its new location. private function doDragDrop(event:DragEvent):void { // Compensate for the mouse pointer's location in the title bar. var tempX:int = event.currentTarget.mouseX - xOff; event.dragInitiator.x = tempX; var tempY:int = event.currentTarget.mouseY - yOff; event.dragInitiator.y = tempY; // Put the dragged panel on top of all other components. canvas.setChildIndex(TitleWindow(event.dragInitiator), canvas.numChildren-1); } // creates the widgets config view and adds it to the canvas. // this should happen in a widget creator file. private function addWidgetClickHandler(event:MouseEvent):void{ var dw:DragWindow = new DragWindow(); var hbox:HBox = new HBox(); var label:Label = new Label(); var textField:TextInput = new TextInput(); var controlBar:ControlBar = new ControlBar(); var img:Image = new Image(); img.source = rssWidgetAddImage; var lbl:Label = new Label(); lbl.text = "some text in the controlbar"; controlBar.addChild(lbl); dw.setStyle("paddingLeft","10"); dw.setStyle("paddingRight","10"); dw.setStyle("paddingTop","10"); dw.setStyle("paddingBottom","10"); dw.showCloseButton = true; dw.horizontalScrollPolicy = "off"; dw.verticalScrollPolicy = "off"; dw.addEventListener(CloseEvent.CLOSE, removeMe); // widget specific config switch(event.currentTarget.id) { case "imgAddPolicy": dw.title = "Policy Search"; policyWidgetID = policyWidgetID + 1; dw.id = policyWidgetID.toString(); dw.width = 200; dw.height = 90; label.text = "Policy ID:";// dynamic textField.width = 90; // widget specific break; case "imgAddReport": dw.title = "Report Search"; reportWidgetID = reportWidgetID + 1; dw.id = reportWidgetID.toString(); dw.width = 300; dw.height = 90; label.text = "Report URL:";// dynamic textField.width = 150; // widget specific break; case "imgAddRSS": dw.title = "RSS Feed"; rssWidgetID = rssWidgetID + 1; dw.id = rssWidgetID.toString(); dw.width = 300; dw.height = 90; label.text = "RSS Feed URL:";// dynamic textField.width = 150; // widget specific break; } // add children to the hbox hbox.addChild(label); // add label to the hbox hbox.addChild(textField);// add text field to hbox // add children to the component dw.addChild(hbox);// add hbox to display window (titleWindow called dw) //dw.addEventListener(FlexEvent.CREATION_COMPLETE,onCompleteAddControlBa r); controlBar.percentWidth = 100; hbox.addChildAt(controlBar,dw.numChildren+1); dw.createComponentsFromDescriptors(); // dw.percentHeight = 100; // position component var canvasHalfWidth:int = canvas.width/2; var widgetHalfWidth:int = dw.width/2; dw.x = canvasHalfWidth - widgetHalfWidth; canvas.addChild(dw);// add title window to canvas //textField.text = dw.id;// displays id in text box ** take out } private function removeMe(event:CloseEvent):void{ canvas.removeChild(event.currentTarget as DisplayObject); } // Creation complete handler for each panel to add the // mouseMove event handler to the title bar. // Clicking the mouse button, then moving the mouse on the title bar (myTitleBar as exposed through DragWindow) // initiates the d&d operation. private function myPanelCCHandler(event:Event):void { event.currentTarget.myTitleBar.addEventListener(MouseEvent.MOUSE_DOWN, tbMouseMoveHandler); } // Drag initiator event handler for // the title bar's mouseMove event. private function tbMouseMoveHandler(event:MouseEvent):void { var dragInitiator:TitleWindow=TitleWindow(event.currentTarget.parent); var ds:DragSource = new DragSource(); ds.addData(event.currentTarget.parent, 'titleWindow'); // Update the xOff and yOff variables to show the // current mouse location in the Panel. xOff = event.currentTarget.mouseX; yOff = event.currentTarget.mouseY; // Initiate d&d. DragManager.doDrag(dragInitiator, ds, event); } ]]> </mx:Script> <!-- view components here --> <mx:VBox id="dashboardVBox" width="100%" height="100%" > <arcComps:Banner id="myBanner" minHeight="40" message="testing the banner" backgroundColor="#FCA702" width="100%" visible="true" cornerRadius="10"/> <mx:Canvas id="canvas" width="100%" height="100%" dragEnter="doDragEnter(event);" dragDrop="doDragDrop(event);"> </mx:Canvas> <!-- add fisheye component --> <mx:HBox id="widgetBox" visible="true" horizontalGap="20" width="100%" borderColor="#ffcc00" borderStyle="solid" borderThickness="2" backgroundColor="#FFCC00" backgroundAlpha="0.3" paddingBottom="5" paddingTop="10" paddingLeft="5" paddingRight="5"> <mx:Spacer width="100%"/> <mx:Image id="imgAddPolicy" source="{policyWidgetAddImage}" width="64" height="64" click="addWidgetClickHandler(event)"/> <mx:Image id="imgAddReport" source="{reportWidgetAddImage}" width="64" height="64" click="addWidgetClickHandler(event)"/> <mx:Image id="imgAddRSS" source="{rssWidgetAddImage}" click="addWidgetClickHandler(event)"/> <mx:Spacer width="100%"/> </mx:HBox> </mx:VBox> </core:DashboardModuleBase> DragWindow.as package com.arc90.dashboard.view.components { import flash.events.Event; import mx.containers.ControlBar; import mx.containers.TitleWindow; import mx.core.UIComponent; import mx.events.FlexEvent; public class DragWindow extends TitleWindow { // Add the creationCOmplete event handler. public function DragWindow() { super(); isPopUp = true; addEventListener(FlexEvent.CREATION_COMPLETE, creationCompleteHandler); } // Expose the title bar property for draggin and dropping. // can refer to myTitleBar outside of this file. [Bindable] public var myTitleBar:UIComponent; private function creationCompleteHandler(event:Event):void { myTitleBar = titleBar; } } }

