Hello,
Well, I have had some encouraging words lately. This is my driving force, if I can inspire people to create with their mind and not worry about rules, I have accomplished my duty.
Well, as you know I have a lot of 'large' components coming up, not controls but framework components. I thought I would post this one as it's still in beta but a good Thursday look, I love Thursdays.
The screen shot below shows you the TaskPaneFX and TaskListFX. If you search this blog you will find more on them but, these are not even the same animals.

Ok, what are we looking at Mike?
1. A fully abstracted drag and drop container system(framework).
2. The bar is a 'barRenderer' (for you Campbell Anderson) that implements the ITitleBar and ITitleBarDataRenderer.
3. The TaskPaneFX is the Blue bar, the TaskListFX is the Orange bar.
4. pane and list a both capable of dnd.
5. effects and movement for this new 'movement' of Flex 2.
6. Saves and Loads the ENTIRE work space application to-from mxml/xml/object
7. all composities are implemented as renderers and hold abstrat data.
8. plus so much other stuff, that is why there are asdoc's
The bar
Inheritance, we get some nasty debates but, anybody that doesn’t think inheritance has a time and place, leave your comments at the door.
The title bar gets inherited back a ways in an abstract class called BarWorkSpaceFX. This bar can be positioned at LayoutPosition TOP, LEFT, BOTTOM, RIGHT all calculated with viewMetrics.
The title bar has interface properties of like title, titleIcon, showCloseButton, showMinMaxButton, showIconizeButton, normal styles and skins and dispatches events for the buttons. This functionality comes from the TitleBarModule class.
The bar is great because you can swap any bar that implements that interface and dispatches those events. So if you don't like my title bar in the component you buy, swap with a subclass one of my bar classes and make your own!(you don’t even have to subclass my class) Gone are the days of 'how do I add a button to the Panel's title bar~!'.
The bar also implements it's own layout state. This enables it to do some funky stuff. Like when the Panel in the swf example minimizes.
Note: You could also use a right click, undock to window for dragging around. This is not in the example though.
The dnd Container
What we have here is the DNDWorkSpace class that is a subclass of the BarWorkSpace class. This class implements the IDragClient interface. Oh yeah, did I mention that the bar implements the IDragButton!?
This class sets up all dnd with the PaneDragManager and OverlayManager. Oh yeah, black boxes, those are for airplanes. Managers are for managing UIComponent layers. Think of a component as having distinct layers. Each layer utilizes inheritence, managers manage each layer.
The container also adds a dragButtonRenderer. This could be another bar, button whatever. If you don't want to have the bar drag, then add a button or graphic somewhere else in the container! This instance also is ruled by the LayoutPosition TOP, LEFT, BOTTOM, RIGHT and CENTER.. RIGHT_CLICK etc.
The DNDWorkSpace class has properties like dragTolerance, dragEnabled, dropEnabled all that fun stuff.
This class does not add effects that is for the next class, PaneFX.
The pane Container
The PaneFX class adds properties like isOpen, openDragPosition, closedDragPosition and effect styles.
This class sets us up for a draggable view of some sort. This will be the super class of some great components. It's also the superclass of the TaskPaneFX and TaskListFX. These to components are 'demonstrations' of what the framework can 'produce'.
What is a framework if it cannot be implemented?
The TaskPaneFX is written to only accept TaskList as children. This is because the TaskPaneFX can open and close a single child, all or and array of children with the;
multiSetIsOpen(numArrList:Object = null, bFlag:Boolean = true);
method. The pane and list also have a barDoubleClickEnabled property as you can see from the example.
More to come...
The manager's
The managers are where all the fun stuff happen. The OverlayManager is right out of my ResizeManagerFX component. If you have looked at that component you can see the power of this manager. The simple little overlay used on the example is just a simple skin.
In the framework we have popUpOverlayRenderer and clientOverlayRenderer not all components use both but it's there if they need it.
The framework also has methods subclasses need to implement like getClientOverlay() nad getPopUpOverlay() that are public methods from the IOverlayClient interface.
This way the overlay manager can call the methods through the interface and the current client dished the correct overlay for the current procedure.
Another thing to note is the TaskPaneFX 'can' be dragged and dropped but is not implemented in this example.
Yes, there are still some bugs in this and there are some tween and move rules I haven’t created yet in the managers IE moving a component to a 0 index, the removeTween isn't working correctly.
Well, I have to run but, I hope this gets you engines reving for what Flex 2 can really do. Remember, this is not an Application it is components in disguise.
PS Do you notice the ‘WorkSpaceFX’ word? HAHA This means that there are two methods in the base class of the framework;
-saveWorkSpace()
-loadWorkSpace(xml)
This allows you to save the WHOLE STATE of the application into mxml! Then you can reload it whenever you want and the same exact UI will be created.
All of my components inherit this or implement the IWorkSpace interface. So you can save a whole UI session with one click for your user. I am doing this with this exact interface. Click on the save workspace button. This is not fine tuned yet.
Peace, Mike