OpenFlux: Tree and TreeDataGrid Components (view source enabled)
Ok, so after getting a working OpenFlux DataGrid component I decided the next obvious step is to try and build a TreeDataGrid component. Although there is still more work to be done, I spent a few hours last night and was able to get a Tree and TreeDataGrid component working. There are definitely still bugs (don't even try sorting the DataGrid hint hint) but it's a great start.
The best part is 100% of the code from the Tree and DataGrid components were re-used for the TreeDataGrid. In fact, the TreeDataGrid isn't even a separate component, it's just a new view for the regular OpenFlux DataGrid.
I think this really shows off where OpenFlux's architecture shines. Moving the logic in to separate controllers allows you to easily mix and match functionality to build any component you desire quickly. If the Flex SDK was written in a similar way the AdvancedDataGrid wouldn't have had to be written from scratch.
Over the next couple weeks I plan on fixing the remaining issues and at that point I'll switch to blogging on how to use all this new functionality to build some really cool 3D components (OpenFlux/Plexiglass).
Feel free to view the source and post any feedback you have in the comments.

February 2nd, 2009 - 06:17
Great job, Ryan!
But ‘plus’ buttons are flickering for some reasons.
February 2nd, 2009 - 06:47
Yeah I noticed that too. I think it has to do with the background being redrawn. I’ll figure it out
February 2nd, 2009 - 08:00
Still a few bugs, especially with the drag n drop feature. Open Bob and drag Tim on Joe, and suddenly, Ted disappears.
I also had a couple of outOfBounds (-1) exception using d&d.
February 2nd, 2009 - 08:22
Yeah, d&d still needs some work with the Tree component. I’ll need to keep track of which inner array you are attempting drag from/drop to. The Flex Tree component uses a “treeItems” data format for this.
I really appreciate the feedback! I mainly just wanted to get the code up early so people can see the start of creating a more complex OpenFlux component. (Especially since I won’t have much spare time until the weekend to continue development)