Could you help me, I can't understand how it is wired together.

Where the class Decorate is used? What is passed as its "by"
parameter. Should "t:complexcomponent" be "t:decorate"?

On Wed, Jun 10, 2009 at 6:57 AM, DH<ningd...@gmail.com> wrote:
> Well, a simple implementation here may be like:
>
> public class Decorate {
>   �...@parameter(required = true)
>    private Object by;
>
>   �...@inject
>    private ComponentResources componentResources;
>
>   �...@inject
>    private Environment environment;
>
>    Object beginRender()
>    {
>        environment.push(Block.class, componentResources.getBody());
>        return by;
>    }
>
>    // in your case, should not render the body, orelse there will be two 
> cases rendered.
>    boolean beforeRenderBody() {
>        return false;
>    }
> }
>
> public class DecoratedBody {
>
>   �...@inject
>    private Environment environment;
>
>    Object beginRender()
>    {
>        return environment.peek(Block.class);
>    }
> }
>
>
> I've test and it works.
> <div t:type="complexcomponent">
>  <p:titleDecorator>
>  aaa <t:decoratedBody/> bbb
>  </p:titleDecorator>
> </div>
>
> <div t:type="complexcomponent">
>  <p:titleDecorator>
>  <t:pageLink page="index"><t:decoratedBody/></t:pageLink> </p:titleDecorator>
> </div>
>
> They all work and show what I need.
>
> DH
>
> ----- Original Message -----
> From: "Lukasz Jazgar" <lukasz.jaz...@gmail.com>
> To: "Tapestry users" <users@tapestry.apache.org>
> Sent: Saturday, June 06, 2009 5:24 AM
> Subject: Re: Decoration passed by parameter. Possible?
>
>
> 2009/6/5 Lukasz Jazgar <lukasz.jaz...@gmail.com>:
>> Suppose, I have a component:
>>
>> ComplexComponent.tml
>> <div>
>> ...
>> a lot of tags and components
>> ...
>> <span id="title">
>> .. complex content ..
>> </div>
>> ...
>> a lot of other tags and components
>> ...
>> </div>
>>
>> ComplexComponent is very usefull. I use it repeatedly on pages. BUT in
>> some cases I need "title" to be hyperlink to Tapestry page, in other
>> cases hyperlink to another page, sometimes external hyperlink or
>> "mailto:"; link. In other cases I need decorate it by border, complex
>> and unrealizable by only CSS. And finally, I'd like to have
>> possibility to define any other surrounding of title in the future,
>> preferably without changing ComplexComponent.
>>
>
> I imagine such a solution:
>
> ComplexComponent.java
> @Parameter
> @Property
> Block titleDecorator;
>
> ComplexComponent.tml
> <div>
>  ...
>  a lot of tags and components
>  ...
>    <t:decorate by="titleDecorator">
>          <span id="title">
>              .. complex content ..
>          </div>
>    </t:decorate>
>  ...
>  a lot of other tags and components
>  ...
> </div>
>
> Page.tml
> <t:complexComponent>
>   <t:titleDecorator>
>        <t:pageLink page="otherPage"><t:decoratedBody/></t:pageLink>
>   </t:titleDecorator>
> </t:complexComponent>
>
> Legend:
> decorate - component a little bit similar to delagate
> <t:decoratedBody/> - special tag like <t:body/> but relative to
> containing Block.
>
> It's a pity, that it is only imagination.
> Is it possible to do something similar now?
> If not, is it technically possible to make such a improvement in
> future versions? It would be very powerful feature.
>
>
> Lukasz
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to