@alex The polymer project has an interesting take on the conditionals
you're proposing.
Some examples:
https://github.com/Polymer/mdv/blob/master/examples/how_to/conditional_template.html
https://github.com/Polymer/mdv/blob/master/examples/how_to/conditional_attributes.html


On Fri, Jun 7, 2013 at 9:45 AM, Cosma Colanicchia <cosma...@gmail.com>wrote:

> The PROP_CHANGING/PROP_CHANGED event pair concept is interesting, even if I
> still don't get the whole picture of how it will be working.
>
> However, please note that I was writing thinking about possible (and
> incremental) improvements the current MXML states management of Flex 4.x,
> personally I don't know FlexJS well enough to be of any help - sorry but I
> didn't have the chance yet to really look into it, beside reading the
> messages on the list.
>
>
>
> 2013/6/6 Alex Harui <aha...@adobe.com>
>
> > To be clear, I'm mainly concerned about how to implement this in FlexJS.
> > I'm not planning to try to upgrade or retrofit this into the current Flex
> > SDK, but someone else is certainly welcome to take that on.
> >
> > My thoughts around effects in general is that, in FlexJS, you have
> > replaceable models.  The models that will work with effects/transitions
> > will probably have a PROP_CHANGING/PROP_CHANGED event pair, where the
> > CHANGING is cancelable and would probably serve as the trigger.
> >
> > On 6/6/13 9:13 AM, "Cosma Colanicchia" <cosma...@gmail.com> wrote:
> >
> > >AFAIK:
> > > - currently states also play a role in the skinning contract of a
> > >skinnable component (skinStates)
> > > - states are supported by transitions management
> > >
> > >The first one maybe could be dropped, resulting in a "relaxed" skinning
> > >contract: the button may have bindable "model" properties such as
> > >isFocused
> > >or isDefault, and the skin could adjust its visuals looking at their
> > >values
> > >(currently, MXML skin are enforced by the compiler to declare as states
> > >all
> > >the skin states in the host component metadata - but if I remember
> > >correctly AS skins don't have this restriction).
> > >
> > >However, I don't know if a transition management like the current one
> > >could
> > >be adapted to work without states.. the includeIn and property.state=...
> > >MXML syntax allow to declare the "final value" of a property in a
> > >specified
> > >state, but unlike a binding that would apply the value immediately,
> when a
> > >transition is defined that value will only be applied at the and of the
> > >entire transition, giving the effects a chance to provide smooth visual
> > >changes in between. In other words, is a way to decuple the
> > >"focusGroup.alpha" view property from the (ideal)
> > >"hostComponent.isFocused"
> > >model property, thus allowing effects to play in between - a kind of
> > >decoupling that could probably be achieved by defining a lot of
> > >intermediate variables in the view layer, but the resulting code would
> be
> > >ugly and hard to manage.
> > >
> > >
> > >
> > >
> > >
> > >
> > >2013/6/6 Alex Harui <aha...@adobe.com>
> > >
> > >> Good stuff.
> > >>
> > >> Today, you can sort of do this with fx:Declarations/fx:Component, but
> it
> > >> isn't in-line, just in the same document.  Do either of you have a
> skin
> > >>or
> > >> component that could truly take advantage of that?
> > >>
> > >> And still, you end up writing code to set currentState according to
> some
> > >> other set of properties, which is why I'm wondering why you guys would
> > >> rather manage the code that sets currentState vs just tying the
> visuals
> > >>to
> > >> other properties.
> > >>
> > >> -Alex
> > >>
> > >>
> > >> On 6/6/13 3:19 AM, "Cosma Colanicchia" <cosma...@gmail.com> wrote:
> > >>
> > >> >Probably just a sintax choice: having them all toghether could be
> > >>useful
> > >> >to
> > >> >quickly have an outlook of the states stuff when you open an MXML
> > >> >document,
> > >> >instead of searching for a number of sparse <s:states> blocks (they
> are
> > >> >the
> > >> >state of the main MXML component, after all) - on the other hand,
> > >>defining
> > >> >them inline maybe feels "right" and the resulting code snippets are
> > >>more
> > >> >manageable.
> > >> >
> > >> >
> > >> >2013/6/6 jude <flexcapaci...@gmail.com>
> > >> >
> > >> >> Yeah. I like the state delegates. What if you took it one step
> > >>further
> > >> >>and
> > >> >> added inline states?
> > >> >>
> > >> >> <s:states>
> > >> >>       <s:State name="up"/>
> > >> >>      <s:State name="down"/>
> > >> >>      <s:State name="over"/>
> > >> >> </s:states>
> > >> >>
> > >> >>
> > >> >> <s:Group id="focusGroup">
> > >> >>      <s:states>
> > >> >>          <s:State name="nonFocused"/>
> > >> >>           <s:State name="focused"/>
> > >> >>      </s:states>
> > >> >>
> > >> >>       <s:transitions>
> > >> >>            <s:Transition fromState"nonDefault" toState"default">
> > >> >>                 <s:Fade target="{focusRect}" alphaFrom="0"
> > >>alphaTo="1"/>
> > >> >>            <s:/Transition>
> > >> >>        </s:transitions>
> > >> >>
> > >> >>       <s:Rect id="focusRect" top="0" bottom="0" left="0" right="0"
> > >> >> alpha="0" alpha.default="1"/>
> > >> >>           <s:stroke><s:SolidColorStroke color="..."/></s:stroke>
> > >> >>       </s:Rect>
> > >> >> </s:Group>
> > >> >>
> > >> >>
> > >> >>
> > >> >> On Thu, Jun 6, 2013 at 2:12 AM, Cosma Colanicchia <
> > cosma...@gmail.com
> > >> >> >wrote:
> > >> >>
> > >> >> > Multiple states using spaces (e.g. currentState="up default")
> looks
> > >> >>nice
> > >> >> to
> > >> >> > the eyes.
> > >> >> >
> > >> >> > I was thinking about impact on the transitions management - I'm
> not
> > >> >>sure
> > >> >> > that the current transition approach (fromState/toState) scales
> > >>well
> > >> >>once
> > >> >> > we go this way.
> > >> >> >
> > >> >> > A possible idea could be to support "state delegates", i.e. allow
> > >>to
> > >> >> break
> > >> >> > up the MXML component in subcomponents, and let each of these
> > >> >> subcomponents
> > >> >> > manage its own set of states and the related transitions.
> > >> >> >
> > >> >> > Elaborating on the Bill approach, something like:
> > >> >> >
> > >> >> > <s:states>
> > >> >> > <s:ExclusiveStateGroup id="mouse">
> > >> >> >  <s:State name="up"/>
> > >> >> > <s:State name="down"/>
> > >> >> > <s:State name="over"/>
> > >> >> >  </s:ExclusiveStateGroup>
> > >> >> > <s:ExclusiveStateGroup id="focus" stateDelegate="focusGroup">
> > >> >> >  <s:State name="nonFocused"/>
> > >> >> > <s:State name="focused"/>
> > >> >> > </s:ExclusiveStateGroup>
> > >> >> >  <s:ExclusiveStateGroup id="selection">
> > >> >> > <s:State name="nonDefault"/>
> > >> >> > <s:State name="default"/>
> > >> >> >  </s:ExclusiveStateGroup>
> > >> >> > </s:states>
> > >> >> >
> > >> >> > [...]
> > >> >> >
> > >> >> > <s:Group id="focusGroup"
> > >> >> > top="0" bottom="0" left="0" right="0">
> > >> >> >  <s:transitions>
> > >> >> > <s:Transition fromState"nonDefault" toState"default">
> > >> >> >  <s:Fade target="{focusRect}"
> > >> >> > alphaFrom="0" alphaTo="1"/>
> > >> >> > <s:/Transition>
> > >> >> >  </s:transitions>
> > >> >> > <s:Rect id="focusRect"
> > >> >> > top="0" bottom="0" left="0" right="0"
> > >> >> >  alpha="0" alpha.default="1"/>
> > >> >> > <s:stroke>
> > >> >> > <s:SolidColorStroke color="..."/>
> > >> >> >  </s:stroke>
> > >> >> > </s:Rect>
> > >> >> > </s:Group>
> > >> >> >
> > >> >> >
> > >> >> > This would allow multiple transitions in each "exclusive state
> > >>group"
> > >> >>to
> > >> >> be
> > >> >> > managed indipendently, and make sense to me as well, because
> often
> > >> >>each
> > >> >> set
> > >> >> > of these state groups only impacts a specific part of the
> component
> > >> >>(or
> > >> >> of
> > >> >> > the skin): in the example, focus just add a glowing border on top
> > >>of
> > >> >>the
> > >> >> > rest.
> > >> >> >
> > >> >> > This allow to grab one or two set of states, and subtract them
> from
> > >> >>the
> > >> >> > cartesian multiplication (and also simplify the related
> transitions
> > >> >> > management, isolating it from other states). When the
> > >>"stateDelegate"
> > >> >>is
> > >> >> > not provided, it just means that the related states are managed
> by
> > >>the
> > >> >> top
> > >> >> > MXML component.
> > >> >> >
> > >> >> > In a sense, responding to Jude, this aims to bring the benefits
> of
> > >>the
> > >> >> > composition approach (versus the inheritance provided by basedOn
> > >> >>states).
> > >> >> >
> > >> >> >
> > >> >>
> > >>
> > >>
> >
> >
>

Reply via email to