On 1 Mar 2012, at 08:28, Omar Gonzalez wrote:


http://www.tink.ws/examples/**apache-flex/index.html<http://www.tink.ws/examples/apache-flex/index.html >


If anyone is interested in looking at those, the source and examples
source is in my whiteboard.

Tink


Nice, Tink. I'll add a link to the relevant components so people can peep your code and contribute to your already started efforts and not waste time
on stuff that's already started.

--
Omar Gonzalez
s9tpep...@apache.org
Apache Flex PPMC Member


Hey Omar

I still see on the list no info next to ViewStack, and maybe I should be clearer about the code I've produce.

ViewStack, TabNavigator Accordion are all navigators. When I started dev on these components I wanted to follow what I ttok as the spark mantra to reduce the code leaving only the core functionality of a navigator, which for me meant 2 things

1. the component implements ISelectableList. i.e. the component can act as an IList with a selectedIndex, which means it can be used as a data provider to other controls.
2. deferred instantiation.

The idea that how the contents are laid out, displayed, animated etc to me seems something that shouldn't be in a navigator class, instead getting designated to a layout.

From this basis I created 4 types of navigators, 2 low level groups, and 2 skinnable components, that use the groups in their skin. 1 set works by adding elements (child based), the other by adding an item renderer and data provider (data based). I had to create a DeferredGroup for the child based navigators, but deferred instantiation was simple for the data based components as they just leverage virtual layout.

It is then down to the layout you provide, to how the contents of the navigator are displayed, in the same way that Adobe provided a Group and have a VerticalLayout, HorizontalLayout or TileLayout, negating the need for any VGroup, HGroup (although Adobe still added them), or TileGroup.

I haven't seen Adobes proposed code but the idea of having a ViewStack, an Accordion etc sounds like the old MX way. Flexible layouts and skins for me were one of the main advantages of spark, and I wanted to leverage this, not just build spark counterparts of MX components (which sounds slightly pointless).

The code in my whiteboard you choose what type of navigator you want, data or element based, you then pick a layout to control how the component looks. At the moment the layout has to implement INavigatorLayoutBase, and I've added the following layouts...

StackLayout -  navigator will act like a ViewStack
AccordionLayout - navigator will act like an accordion, with the option of adding a ButtonBar control as you see with a standard Accordion. CarouselLayout - navigator will display it's elements layouts out along a curve or a complete circle
CoverflowLayout - navigator will act like a coverflow component
TimeMachineLayout and RolodexLayout - guess what.... ;)

The layouts also update a Scroller if found to add and remove a Scrollbar if required, change the direction of the scrollbar and also set the scroll bars up so when used they move a whole index at a time. The layouts can also be used with any of the standard spark components that accept a layout.

I have provided an Accordion, but to be honest I see no real reason for it to be there. If you want an Accordion, you can create a skin for a Navigator or DataNavigator, give the group inside an AccordionLayout and a ButtonBar and off you go.

I haven't provided a TabNavigator, but did show an example. You create a skin for a Navigator or DataNavigator, give the group inside an StackLayout add a ButtonBar and off you go.

Due to a StackLayout being the default layout for the navigator controls, you can just create any navigator and you have a component that acts as a ViewStack (with the addition of being able to navigator using a scroll bar if you set that property to true).

The idea of spark to me was there are lots of smaller parts that we can use to make up complex wholes that are much more flexible is what they can achieve than the mx components. For instance my MenuBar is just a ButtonBar that used DropDownList's for its item renderers, and each DropDownList uses a DropDownList for its item renderes and so on. I don't see how having a spark ViewStack or Accordion achieves this goal.

Hope this makes some sense


Tink

Reply via email to