FYI, I have just checked in initial support for this feature. I haven't hooked 
it in to BXMLSerializer yet, but you can see it in action here:

http://svn.apache.org/repos/asf/pivot/trunk/demos/src/org/apache/pivot/demos/binding/


On Jul 5, 2010, at 3:45 PM, Greg Brown wrote:

> Another question that seems to come up fairly often is - "does Pivot support 
> dynamic data binding like Flex?" Historically, the answer we have given is, 
> "no, Pivot's data binding support is based on a load/store model that maps 
> well to client/server applications such as REST clients."
> 
> However, there are cases where Flex-like data binding can be useful. Given 
> the recent updates to BXMLSerializer, I think it may now be relatively 
> straightforward to implement. It may also be a good way to support 
> dynamically updatable styles, since style values are simply page variables, 
> just like everything else. Consider the following example:
> 
> <Label text="$text">
>  <styles color="$styles.color"/>
> </Label>
> 
> When loaded, the text property of the label will be set to the value of the 
> "text" variable, and the color style will be set to the value of the 
> "styles.color" variable. It may be possible to (fairly easily) extend the 
> syntax of BXML such that something like the following would cause the text 
> property and color style to automatically reflect changes to the source 
> variable:
> 
> <Label text="${text}">
>  <styles color="${styles.color}"/>
> </Label>
> 
> Basically, this syntax (or something like it) would be a cue to the 
> serializer to register a change listener on the given variable and propagate 
> any changes to the bound property.
> 
> I haven't prototyped it, so I'm not sure what hidden gotchas we might run 
> into, but I think it could work. The primary trick will be in determining the 
> type of the parent object and registering an appropriate listener. For 
> example, if "styles" in the above example is a Map, we would register a 
> MapListener on the "styles" object to be notified of changes to the "color" 
> variable. If it is a bean, we'd need to use something like the BeanMonitor 
> class used in the Component Explorer demo. That means we'd probably want to 
> move that class to org.apache.pivot.beans (which might be worth doing 
> anyways).
> 
> Let me know what you think. If there is sufficient interest, I may try to get 
> it working.
> 
> G
> 
> 

Reply via email to