Spark navigators :: ViewStack – TabNavigator – Accordion
Hello,
I’m happy to announce that Teoti Graphix, LLC will be offering spark framework navigators. Through the over 5 years of flex component development, this widget set was the most fun to create (to this point).
As a component developer since the beginning of flex, I have always found it hard to create rich components due to the fact the component’s view was always coupled to the component controller (the component class). With the Spark framework, all this has changed and the horizons are limitless.
Component development pattern
There is a consistent pattern you will see in all of our component releases.
- All front facing classes IE
TabNavigatorwill include the default skin in it’s Type style declaration. This means if you don’t want it linked, subclass theTabNavigatorBaseand implement your own default component. Note: In the future we may change this to default theme SWCs but for now this is how it works - All components follow the base class -> MXML pattern that Adobe has set. After creating a lot of Spark components, I find this very legitimate.
- All components have a core Skin, most of our more multi-placement composite holding component’s implement a default
LayoutBaseskin layout. - All component skins are simplified. This means some use of abstractions regarding border and state borders. For those designers that use tools to create skins, this will not affect you, just create another version of the skin implementing the SkinParts and do your fxg or layered skin graphic elements.
- Since we offer commercial components that will be used by many levels of developers, styles will be part of the components that will offer dynamic presentation whenever possible.
- Last but not least, anything that can be a skin or renderer is.
The Navigator Widget Toolkit
The navigator toolkit includes;
Components
- ViewStack
- TabNavigator
- TabBar
- TabButton
- Accordion, AccordionHeader
- SimpleBar
- SimpleTitleBar
Skins
- ViewStackSkin
- TabNavigatorSkin
- TabBarSkin, TabTopSkin, TabBottomSkin, TabLeftSkin, TabRightSkin
- AccordionSkin, AccordionHeaderSkin
- SimpleBorderSkin
Layouts
- ViewStackLayout
- TabNavigatorSkinLayout
- HorizontalButtonBarLayout
- VerticalButtonBarLayout
- AccordionSkinLayout
- AccordionSkinLayoutAnimated
VeiwStack
The ViewStack can be hooked up to any ISelectableList implementation such as the spark ButtonBar.

Along with this easy plugin functionality, a simple rotated ButtonBar works in a normal layout also.

The ViewStack also comes with the additional functionality of;
selectedIndexselectedChildwhich must implementINavigatorContentresizeToContentworks just like the Halo navigator’s, the navigator is resized when theselectedIndexchanges
TabNavigator
The TabNavigator inherits all the ViewStack functionality and adds a TabBar.
The TabNavigator also come with the additional functionality of;
tabBarPlacement(top, right, bottom and left)tabClosePolicy; default close button implementation in the TabButton (on,off,rollover,selected,disabled);- A
CHANGINGevent that is cancelable withselectedIndexis set - Drag and Drop support out of the box (rearrange tabs or drag into another navigator)
The image below shows the top tabBar placement.

The image below shows the right tabBar placement.

The image below shows the bottom tabBar placement.

The image below shows the left tabBar placement.

The image below shows the closePolicy of disabled.

There is so much more to talk about this component but I will save that for later.
Also note, with all tabBar placements, additional configurations include tabOffset, tabBar vertical and horizontal align and corner radii.
Accordion
The Accordion works just like the Halo version. Main differences include;
- Instead of reimplementing the
ViewStackclass like the Halo Accordion, this component subclassesViewStackBase. - The Accordion offers the direction property to allow for vertical and horizontal layout states.
- Inherits all
ISelectableListfunctionality from theViewStackBaseclass. - Is completely skinnable.
- All aspects of layout are swappable.
- The
AccordionHeaderskin is direction aware, this means you can swap out any header and base it’s presentation of the current direction of theAccordion.
The image below shows the vertical layout direction.

The image below shows the horizontal layout direction.

Conclusion
This is a very fun time for flex component development and our company is here to save you development time and money!
This set is scheduled for release just prior to Flex 4′s official release.
Version 1.0 limitations;
- History management is not enabled.
- Deferred instantiation is not enabled. (this has to do with SkinnableContainer, we are working on it)
- The Accordion animated layout is still beta.
Thanks,
Mike
Hi Mike
looks interesting.
if you have an email list you keep for customers, please add me to it and let me know when they are available, or for beta testing if you need.
look forward to hearing from you
regards
glenn
tinylion uk
Hi Glenn,
I’ll do that, the site is getting an overhaul, there is a mailing list that will update potential customers of release dates.
Mike
The following might be interesting to peeps who are looking for spark navigators.
http://www.tink.ws/blog/spark-datanavigators/
I’m very interested IF the Spark tab navigator component comes with source code (because I already know that I’ll have to implement my own accelerator key mechanism).
For all of our products there are currently 2 versions of packages, binary and source code. Eventually we will have a third which includes the component library unit tests.
So to answer your question, yes all source code would be available if you added that feature to the product.
Mike
Any news on pricing (with & without source code) and release date of the Spark navigator components?
Hi Tom,
I will have news soon about this toolkit. Keep an eye on the blog.
Mike
Great! I actually hope it also supports a ‘super’ INavigatorContent
It’s unbelievable which hoops I have to go through in order to make it possible to hide a tab… Setting visible=false on the content page should do the trick to hide the tab (same goes for being able to close a tab but it’s a bit less urgent). Another nice feature for the future would be support for multiple lines of tabs (but please don’t delay the release because of this).
These controls look great, especially the TabNavigator. Any update on when they will be available?
Hi Randy,
The TabNavigator will be included with the ui.navigator library contained in our open source projects.
As far as when it’s available, since it’s going to be open source it’s been pushed down the stream a bit. I don’t want to give a date only to miss it.
There will be a blog post when it is released.
Thanks,
Mike
Any progress on the release of the TabNavigator? I’d love to give it a try as I have the impression that the standard implementation in Flex 4 isn’t 100% bug-free (components shining through or missing…).
How about an alpha release? Seems like the sooner you get this out to the community, the better, even if it’s buggy or not feature-complete. Keeping it in the dark seems very non-OSSish.
> Keeping it in the dark seems very non-OSSish
I wouldn’t say that but i agree, I want to get it out. There were other thing that took priority, announcing this was just a blog post (showing proof of concept).
I would say within the next two weeks there will be an alpha release.
Mike
For those looking for a Flex for TabNavigator/ViewStack etc I have an open source Navigator control. Just hook it up to a TabBar and you have a TabNavigator.
http://www.tink.ws/blog/flex-4-navigator/
These are great! We really need to get these into Tour de Flex!
Is the alpha release upcoming? Please…
“I would say within the next two weeks there will be an alpha release.” ?
Where can i download sources or binary?
http://www.tink.ws/blog/spark-datanavigators/ is down
Any news on the Spark navigator components?
Hi,
My focus has been on something else, asblocks and asbuilder. In a couple month I might be switching gears.
Just didn’t have enough time to get this huge project together where it would work for my taste. There is always tomorrow.
Mike
It seems that a Spark TabNavigator didn’t make it in the Hero SDK. So I really hope we can get yours (even if it’s not 100% free)!!
Hello,
I wonder where can I find the spark framework navigators, there is a componenet shown up there that I really am interested in using.
Hi Very nice to see above sample. I am looking http://blog.teotigraphix.com/wp-content/uploads/2010/03/viewstack01.png type of sample code in my app, can you send me sample code for this . i am working on flex mobile project.