[ 
http://issues.apache.org/jira/browse/TAPESTRY-891?page=comments#action_12371318 
] 

Sergey Manukyan commented on TAPESTRY-891:
------------------------------------------

Please see my comment on  TAPESTRY-243.

The relationship PARENT->CHILD is extremely important in development of highly 
structural complex components. Not having a standard API to implement this 
relationship represents certain difficulties during implementation.

The problem is that this relationship is visual in cases of creating templates 
of complex components and navigation on them requires the knowledge of the 
parents and children. I am curious why the XML DOM model cannot be used as the 
representation of complex structure of components with some extensions for 
functionality specifyc for Tapestry?

If the reality is that Tapestry framework doesn't allow structuring of 
components as it stands now then the framework should be recognized as 
unstructured, some kind of system of independent components without 
parent->child relationship, which IMHO from object oriented point of view makes 
it less pure from the architecture point of view.

Thanks.



> CLONE -Add getParent() method to IComponent
> -------------------------------------------
>
>          Key: TAPESTRY-891
>          URL: http://issues.apache.org/jira/browse/TAPESTRY-891
>      Project: Tapestry
>         Type: Improvement
>   Components: Framework
>     Versions: 3.0.1
>     Reporter: Sergey Manukyan
>     Priority: Minor

>
> Tapestry does not allow you to retrieve the parent of a component. If you 
> have a component C nested in a component P, there is no method to retrieve 
> the parent P from C. What is needed is a getParent() method.
> There is no logical reason for not including a getParent method as methods 
> exist to retrieve the children of a component. The getParent method is 
> extremely useful if you wish to change the rendering behavior of a component 
> based on whether it is nested inside a particular component. The JSP taglib 
> API supports this with the TagSupport.findAncestorWithClass(Tag, Class) 
> method. Without the getParent method, it is difficult to convert some JSP 
> tags to Tapestry components.
> Fortunately, this improvement is not difficult to implement. I have 
> successfully implemented this by adding a private variable _parent of type 
> IComponent to AbstractComponent and adding getParent/setParent methods to 
> get/set the variable: the getter should look like this:
> return _parent != null ? _parent : getContainer();
> Finally, add the following line to 
> BaseComponentTemplateLoader.process(OpenToken) method (line 268 under version 
> 3.0.1)
>   component.setParent(_activeComponent);
> (Note that Tapestry does allow you to retrieve the IComponent a particular 
> component is embedded in via the IComponent.getContainer() call. This call 
> will retrieve the component whose template C was defined in. This method does 
> not address the issue.)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to