OK, I could see a layer that allowed all of these types of things to be
set through DI.  But I also see value and simplicity in our current
databinding-to-instances approach.  Are we saying that the *only* way to
control whitespace around tree elements would be to create some class
and wire it up through DI?  This seems heavy to me -- all of a sudden
you *can't* just do your page editing within your page and page flow.

If we're talking about a change across the entire tag set, could we
consider offering both methods (databinding and DI) in all cases?

Rich

Eddie O'Neil wrote:

>  Ah, that's right -- this part of the tree works differently than it
>does in the data grid.  The effect is the same -- the dependent object
>is referenced by some name from the tag and the tag could take care of
>calling out for the injection.  The grid could do the same thing in
>that case.
>
>  In order to do this, NetUI would need a generalized way of calling
>out to a DI implementation a la the ControlFactory abstraction. 
>Probably worth building that as it would also give us a hook for how
>to wire-in ways of injecting Controls, Spring Beans, and other
>dependencies into Page Flows, UI elements, and so on.
>
>  But, I agree that there's no reason to add more stuff to the NetUI
>config XML document -- this is a more scalable, flexible, and
>cusomizable solution.
>
>Eddie
>
>
>
>On 10/18/05, Daryl Olander <[EMAIL PROTECTED]> wrote:
>  
>
>>You would bind to a named object that would be created using DI as described
>>earlier in the thread. It's not injected into the tag, it's assocated with
>>the Tree element through the ITreeRoot interface.
>>
>>On 10/18/05, Eddie O'Neil <[EMAIL PROTECTED]> wrote:
>>    
>>
>>>Agreed, that's the ultimate "right" solution here, though it's not clear
>>>where the dependency
>>>would be injected in the context of an arbitrary JSP tag. We can't inject
>>>this into the tag handler
>>>because of pooling of handlers implemented on some containers. In the case
>>>of the data grid, it
>>>would certainly be possible to inject it into the top-level DataGridConfig
>>>object that is used
>>>throughout grid rendering, but you'd still need to refer to it somehow.
>>>And, not all of our tags
>>>have that same abstraction.
>>>
>>>In lieu of DI, referencing the object is a pretty non-invasive way of
>>>supporting the functionality.
>>>
>>>Eddie
>>>
>>>
>>>
>>>
>>>
>>>Daryl Olander wrote:
>>>      
>>>
>>>>I'll go back and say the right solution to these problems is Dependency
>>>>Injection.
>>>>
>>>>On 10/18/05, Eddie O'Neil <[EMAIL PROTECTED]> wrote:
>>>>        
>>>>
>>>>>Right; the data grid does something similar with:
>>>>>
>>>>><netui-data:dataGrid ... dataGridConfig="${servletContext.fooGridConfig
>>>>>          
>>>>>
>>>}">
>>>      
>>>
>>>>>...
>>>>></netui-data:dataGrid>
>>>>>
>>>>>this allows the page author to define a data grid config object that
>>>>>could be shared between data grids in a site as a way to provide a
>>>>>single point of configuration for a look & feel, pager renderer, and
>>>>>behavior for a type of grid. They can be shared across users by
>>>>>putting them into ServletContext.
>>>>>
>>>>>So, there's precedent for doing it this way, and it's worked out
>>>>>pretty well. :)
>>>>>
>>>>>Eddie
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>On 10/18/05, Rich Feit <[EMAIL PROTECTED]> wrote:
>>>>>          
>>>>>
>>>>>>Right, I was suggesting something like this:
>>>>>>renderer=${pageFlow.treeRenderer}
>>>>>>
>>>>>>Often it wouldn't need to be connected to instance state, but that
>>>>>>doesn't strike me as out of bounds. And it would line up better with
>>>>>>the way we do things elsewhere (e.g., the way you bind to the tree
>>>>>>            
>>>>>>
>>>>>itself).
>>>>>          
>>>>>
>>>>>>Rich
>>>>>>
>>>>>>Daryl Olander wrote:
>>>>>>
>>>>>>            
>>>>>>
>>>>>>>I guess I'm not following this, you can do something like
>>>>>>>              
>>>>>>>
>>>>>renderClass="${
>>>>>          
>>>>>
>>>>>>>pageFlow.treeRenderer}" where tree renderer is a string to the class.
>>>>>>>              
>>>>>>>
>>>>>Are
>>>>>          
>>>>>
>>>>>>>you suggesting that this actually be an instance of TreeRenderer?
>>>>>>>
>>>>>>>On 10/17/05, Rich Feit <[EMAIL PROTECTED]> wrote:
>>>>>>>
>>>>>>>
>>>>>>>              
>>>>>>>
>>>>>>>>I agree on both counts. My main question at this point is, should we
>>>>>>>>use databinding instead? Having the classname in the tag attribute
>>>>>>>>seems strange to me... and at the very least it's not a pattern that
>>>>>>>>                
>>>>>>>>
>>>>>we
>>>>>          
>>>>>
>>>>>>>>use consistently across the tag set.
>>>>>>>>
>>>>>>>>Daryl Olander wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>Actually, my opinion is that we should use some type of Dependency
>>>>>>>>>Injection, but currently there is no dependencies on things like
>>>>>>>>>                  
>>>>>>>>>
>>>>>Spring,
>>>>>          
>>>>>
>>>>>>>>and
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>I don't think this feature is significant enough to push us in that
>>>>>>>>>direction. If we had a bunch of these type behavior (which I
>>>>>>>>>                  
>>>>>>>>>
>>>actually
>>>      
>>>
>>>>>>>>>                  
>>>>>>>>>
>>>>>>>>think
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>we do) then I'd prefer a design that used a name that was looked up
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                  
>>>>>>>>>
>>>>>>>>through
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>dependency injection. I just don't think adding this type of stuff
>>>>>>>>>                  
>>>>>>>>>
>>>to
>>>      
>>>
>>>>>the
>>>>>          
>>>>>
>>>>>>>>>netui-config file as a general solution is a good thing. We do have
>>>>>>>>>                  
>>>>>>>>>
>>>>>the
>>>>>          
>>>>>
>>>>>>>>>attribute to set the renderer for the full webapp in there, but I
>>>>>>>>>                  
>>>>>>>>>
>>>>>don't
>>>>>          
>>>>>
>>>>>>>>want
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>to start pushing DI behavior into it.
>>>>>>>>>
>>>>>>>>>On 10/17/05, Rich Feit <[EMAIL PROTECTED]> wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                  
>>>>>>>>>
>>>>>>>>>>I have one quick (and general) question to ask here. Are we all
>>>>>>>>>>comfortable with having classnames in tag attributes (vs.
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>databinding to
>>>>>          
>>>>>
>>>>>>>>>>objects when necessary, and otherwise controlling rendering
>>>>>>>>>>                    
>>>>>>>>>>
>>>through
>>>      
>>>
>>>>>>>>>>normal value attributes)? It strikes me as strange, but I haven't
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>come
>>>>>          
>>>>>
>>>>>>>>>>up with a hard argument against it.
>>>>>>>>>>
>>>>>>>>>>In general, is this something we want to do? Does anyone else have
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>the
>>>>>          
>>>>>
>>>>>>>>>>same reaction to this? One alternative is to require databinding
>>>>>>>>>>                    
>>>>>>>>>>
>>>to
>>>      
>>>
>>>>>>>>>>some object that provides the right functionality.
>>>>>>>>>>
>>>>>>>>>>In any case, I think we should decide this and be consistent
>>>>>>>>>>                    
>>>>>>>>>>
>>>across
>>>      
>>>
>>>>>the
>>>>>          
>>>>>
>>>>>>>>>>board.
>>>>>>>>>>
>>>>>>>>>>Rich
>>>>>>>>>>
>>>>>>>>>>Carlin Rogers wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>I created a JIRA issue to cover the changes discussed earlier
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>this
>>>      
>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>month
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>in
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>the dev alias about allowing control of formatting and white
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>space
>>>      
>>>
>>>>>in
>>>>>          
>>>>>
>>>>>>>>the
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>>NetUI tree rendering. The outcome I came away with was to provide
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>a
>>>      
>>>
>>>>>way
>>>>>          
>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>>to
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>override the default NetUI TreeRenderer implementation. The
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>following
>>>>>          
>>>>>
>>>>>>>>is
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>a
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>description I included in the JIRA issue along with a patch.
>>>>>>>>>>>
>>>>>>>>>>>...First off, I refactored the TreeRenderer class and its
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>render()
>>>      
>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>method
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>so
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>that it can more easily be extended allowing simple overrides of
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>methods
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>>that format and control white space surrounding the elements that
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>make
>>>>>          
>>>>>
>>>>>>>>up
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>>the markup for a tree node. There are now prefix and suffix
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>routines
>>>>>          
>>>>>
>>>>>>>>used
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>to
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>append formatting (or additional markup if desired) around each
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>of
>>>      
>>>
>>>>>the
>>>>>          
>>>>>
>>>>>>>>>>>components in the markup of a node.
>>>>>>>>>>>
>>>>>>>>>>>The <netui:tree> tag has been modified to include a new attribute
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>for
>>>>>          
>>>>>
>>>>>>>>>>>setting a desired TreeRenderer to use on the given tree. In
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>addition,
>>>>>          
>>>>>
>>>>>>>>the
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>>beehive-netui-config schema, ConfigUtil, JspTagConfig, and
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>TagConfig
>>>>>          
>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>>classes
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>have been modified such that NetUI can be configured with a
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>different
>>>>>          
>>>>>
>>>>>>>>>>>default tree renderer, extending the NetUI TreeRenderer, for the
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>Web
>>>>>          
>>>>>
>>>>>>>>>>>application. It is an optional configuration and the config has
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>our
>>>      
>>>
>>>>>>>>>>>TreeRenderer as a default value. This gives an app developer two
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>options.
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>>They can override the NetUI TreeRenderer for the entire
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>application
>>>      
>>>
>>>>>and
>>>>>          
>>>>>
>>>>>>>>>>>override it on a tree by tree bases. A renderer named in the
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>><netui:tree>
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>>tag attribute will always be used regardless of the renderer in
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>the
>>>      
>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>NetUI
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>>configuration.
>>>>>>>>>>>
>>>>>>>>>>>The TreeRenderer used to have some package protected derived
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>classes
>>>>>          
>>>>>
>>>>>>>>used
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>>for handling issues specific to the execution of NetUI code path.
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>There
>>>>>          
>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>>was
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>a renderer for the actual tag and a servlet version for the
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>>XmlHttpRequest
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>via the TreeCRI. Instead of having two different renderers and
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>worrying
>>>>>          
>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>>how
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>or if they'd be extended and the desired special handling would
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>be
>>>      
>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>>managed,
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>this functionality was moved down to a TreeRenderSupport object
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>that
>>>>>          
>>>>>
>>>>>>>>was
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>set
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>on a given TreeRenderer. Then, no matter the TreeRenderer, we'd
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>delegate
>>>>>>>>
>>>>>>>>
>>>>>>>>                
>>>>>>>>
>>>>>>>>>>the
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>special handling to either of two subclasses of the support
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>object
>>>      
>>>
>>>>>to
>>>>>          
>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>>handle
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>tag or XmlHttpRequest specific issues... such as error reporting.
>>>>>>>>>>>
>>>>>>>>>>>The patch also includes a new test to ensure the renderer
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>overriding
>>>>>          
>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>>works
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>for runAtClient and expandOnServer.
>>>>>>>>>>>
>>>>>>>>>>>In reviewing this patch...
>>>>>>>>>>>- Do I need to expose more of the TreeRenderer data and methods
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>as
>>>      
>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>>protected
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>rather than private to allow for better sub classing?
>>>>>>>>>>>- How or will we version the netui config schema in v1.1 to
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>manage
>>>      
>>>
>>>>>the
>>>>>          
>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>>new
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                    
>>>>>>>>>>
>>>>>>>>>>>optional element?
>>>>>>>>>>>
>>>>>>>>>>>Thanks,
>>>>>>>>>>>Carlin
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                      
>>>>>>>>>>>
>>>>>>>>>                  
>>>>>>>>>
>>>>>>>              
>>>>>>>
>>>      
>>>
>>    
>>
>
>  
>

Reply via email to