enable the serializer to initialize components written in java code
-------------------------------------------------------------------

                 Key: PIVOT-542
                 URL: https://issues.apache.org/jira/browse/PIVOT-542
             Project: Pivot
          Issue Type: Improvement
            Reporter: Appddevvv


The current serializer performs two funtions: creating objects and initializing 
them. The typical use case is to create your component (say java code) then 
call the serializer to create the content. Then within your class, attach the 
content and initialize your object in various application specific ways. 
However, since your object is typically a java object and often a Component 
subclass, for those writing new components as composites of others, you have to 
manually write some (not all) initialization code that could also be performed 
in the BXML file. 

To initialize your object using bxml content, you can use annotations etc. 
However, if the bxml file also defines user data or other elements, you also 
have to manually bring that in from the bxml and do some wiring. In addition, 
it is currently impossible to initialize some pivot objects that you subclass 
from, say the splitpane, with content from bxml without having to create an 
intermediate container or use two bxml files for the left and right child. For 
example, if you subclass from SplitPane, an underlying bxml file that holds 
your content must have another container in order to define your left and right 
children in or you have to use two separate bxml files per child--this may or 
may not be a good thing and complicates the implementation.

To support the use case of creating subclasses of Components (and pivot likes 
to use OO inheritance) and allowing the initialization of that component to be 
matched by a bxml file, the serializer needs to be able to "apply" itself to 
the component as if the bxml file and the subclassed component were a 
reflection of the other. Bindable was designed to help with this, however, the 
bxml file is still considered at level below (the content) of the Component you 
are writing.

The benefits are:
a) A cleaner code style that has implied semantics--i.e. this bxml file is the 
mirror image of your subclassed component at the same logical tree level.

b) More consistent coding conventions for novice programmers.

The capability to do this can be implemented in different ways including the 
current approaches of course. The small patch allows a new style of Component 
creation blending code and bxml in a more seamless way. Its no longer something 
you instantiate to "get" content, it is the content. It helps Component writers 
who want to simply subclass another component. It looks like a trivial change 
but it is a different perspective on initialization that has natural semantics 
for programmers. It also reduces complexity for creating subclasses of 
Components that have properties representing the tree e.g. SplitPane.

This is similar in spirit to "code-behind" in other frameworks.





-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to