We are going in circles, the solution already was laid out. Why are we
starting at the beginning again?

<wicket:message> already creates a container (not exactly, it creates
a label) to replace the text.

Changing wicket tag identifier IMO would the completely wrong way of
doing it. If we do that we'll end up with discussions like "my
attribute should create a compent tag as well.". IMO the rule is very
simple: every tag which has a wicket:id becomes a component tag.
Handlers, like WicketMessageHandler need to set the wicket:id with an
automatically generated id, and we have several examples for that
already.

For the render process you now must register a resolver to handle tags
with wicket:message where the id has been generated automaticaly,
because you must automatically create a very simple container for
that. This 5 lines of code, very simple.

The real issue is that wicket:message attributes might appear in *any*
component. Now you call it IComponentTagHandler, when I outlined the
solution before I called it IOnComponentRenderListener and the methods
are slightly different, but it essentially the same. The reason why we
were looking for another solution is because Johan was complaining
about the performance. Every component when rendered iterates over the
list of application level handlers, and in case of wicket:message
checks the attributes if an wicket:message attribute exists or not.
Johan is worried about the penality it takes for all the components
which don't have wicket:message tags, besides that he think
wicket:message doesn't need to be extended at all.

Juergen

On 9/23/06, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
> i guess part 1 can be done in a tag handler...
>
> -Igor
>
>
>
> On 9/22/06, Igor Vaynberg <[EMAIL PROTECTED] > wrote:
> > well, i looked into it and here is what you have to do. i dont have the
> time this weeend (jewish new year) so maybe someone who does can implement
> the full func.
> >
> > 1) you have to let wicket resolvers handle markup that has wicket:message
> attr and no wicket:id, for this you need to make wicket think this tag is
> not raw markup - so an id needs to be set
> >
> > WicketTagIdentifier:126
> >
> > // Identify wicket:message attr tags
> >             if
> (xmlTag.getAttributes().containsKey("wicket:message")&&tag.getId()==null)
> >             {
> >                    // replace random with some counter - but you get the
> idea...
> >                    tag.setId("wicket-message" + Math.random());
> >             }
> >
> > now we need to autoadd a webmarkupcontainer for any of these tags
> >
> > WicketMessageResolver:74
> >         if (tag.getAttributes
> ().containsKey("wicket:message")&&tag.getId().startsWith("wicket-message"))
> >         {
> >             final String id = "_message_" +
> container.getPage().getAutoIndex();
> >             container.autoAdd(new WebMarkupContainer(id)
> >             {
> >
> >                 public boolean isTransparentResolver()
> >                 {
> >                     return true;
> >                 }
> >
> >             });
> >             return true;
> >         }
> >
> > and thats the meat of it, now you need that IComponentTagHandler {
> oncomponenttag() } deal, a way to register it in settings and something like
> >
> > Component:1666 <=== wow
> >
> > Iterator handlers =
> getApplicationSettings().getComponentTagHandlers().iterator();
> >         while (handlers.hasNext())
> >         {
> >
> ((IComponentTagHandler)handlers.next()).onComponentTag(this,
> tag);
> >         }
> >
> > and oh yeah...the taghandler that does the actual resource lookup
> >
> >
> > -Igor
> >
> >
> >
> >
> >
> > On 9/22/06, Eelco Hillenius <[EMAIL PROTECTED]> wrote:
> >
> > > On 9/22/06, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
> > > > but you DO want it to sync with your component tree because you want
> the
> > > > localization lookup to be synced to the component tree.
> > >
> > > Yep. I want it to work the same as <wicket:message>.
> > >
> > > Eelco
> > >
> > >
> -------------------------------------------------------------------------
> > > Take Surveys. Earn Cash. Influence the Future of IT
> > > Join SourceForge.net's Techsay panel and you'll get the chance to share
> your
> > > opinions on IT & business topics through brief surveys -- and earn cash
> > >
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> > > _______________________________________________
> > > Wicket-develop mailing list
> > > Wicket-develop@lists.sourceforge.net
> > >
> https://lists.sourceforge.net/lists/listinfo/wicket-develop
> > >
> >
> >
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys -- and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>
> _______________________________________________
> Wicket-develop mailing list
> Wicket-develop@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-develop
>
>
>

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-develop mailing list
Wicket-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-develop

Reply via email to