Usually I solve this by just overriding the getCurrentState method and a
having all the posible options in the <states> group.

J


On Sat, Jun 1, 2013 at 6:41 AM, John Cunliffe <mahn...@gmail.com> wrote:

> How is that different from the already existing
> stateGroups<
> http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf63611-7ffa.html
> >property?
>
>
> On Sat, Jun 1, 2013 at 12:28 PM, jude <flexcapaci...@gmail.com> wrote:
>
> > I've been coming across more and more cases where it would be great to
> have
> > support for multidimensional states. What this looks like and how it's
> used
> > I'm not sure. Maybe we can discuss ideas.
> >
> > Alex wrote on the FlexJS wiki page,
> >
> > *States were used often but had a limitation once the set of states you
> > wanted started having "dimensions". For example, the Flex default button
> > has an emphasized state, which adds to the selected state to create a lot
> > of potential skin states. And when we considered having this same button
> > show a focused state, it got unwieldy so we didn't do it. We never got
> > around to doing multi-dimensional states, but now it is time to try since
> > we can break backward compatibility if we have to. *[0]
> >
> > I have a couple of suggestions. The first is to create a new State class
> > that you could add to your declarations and add more states into it. It
> > would look something like this:
> >
> > <Group>
> >
> > <!-- default build in states we use now -->
> > <states>
> >    <State name="page1"/>
> >    <State name="page2"/>
> >    <State name="page3"/>
> >    <State name="settings"/>
> > </states>
> >
> >
> > <!-- new additional helper state group -->
> > <declarations>
> >
> >    <StateGroup id="loginStateGroup">
> >         <State name="loggedIn">
> >             <overrides>
> >                  <SetProperty target='{button}" property="color"
> > value="red"/>
> >                  <SetProperty target='{this}" property="isAuthenticated"
> > value="true"/>
> >             </overrides>
> >         </State>
> >         <State name="loggedOut">
> >             <overrides>
> >                  <SetProperty target='{button}" property="color"
> > value="blue"/>
> >                  <SetProperty target='{this}" property="isAuthenticated"
> > value="false"/>
> >             </overrides>
> >         </State>
> >         <transitions>
> >             <Transitions... />
> >         </transitions>
> >    </StateGroup>
> >
> > </declarations>
> >
> > </Group>
> >
> >
> > You would use it like this, loginStateGroup.currentState = "loggedIn".
> >
> > I think this would be the easiest way to add more support. It would use
> the
> > same syntax we already know. It would also be backwards compatible. The
> > disadvantages of this would be the lack of support of using states
> inline.
> > So the compiler wouldn't recognize things like this,
> >
> > <Button color.loggedIn="red" />.
> >
> > This second example might be more closely related to the original idea,
> >
> > <State name="state1"/>
> > <State name="state2"/>
> > <State name="state3">
> >     <State name="state3_RedState"/>
> >     <State name="state3_BlueState"/>
> > </State>
> >
> > And you would assign it like this,
> >
> > currentState = "state3_RedState";
> >
> > or,
> >
> > currentState = ["state3", "redState"]; // if renamed to redState
> >
> > The nested state would inherit the properties of the parent state. The
> > thing is there is an inherit property already on the State class. In
> Flex 3
> > we had support for a base state and inheritance. So maybe there's some
> > support for this already. I'd really like to know what the Flex team was
> > talking about when they mentioned this.
> >
> > Jude
> >
> >
> >
> >
> > [0] -
> >
> https://cwiki.apache.org/confluence/display/FLEX/Alex%27s+FlexJS+Prototype
> >
>



-- 
Jonathan Campos

Reply via email to