Hey there--
So I came up with a solution to this, but I suspect it's not very
Wicket-y, so I'd like some suggestions on best practices:

We want a header component that can go on different pages, with 1 2 or
3 links to other pages.
(Well, I guess ideally any #, but with my approach it was easier to
match it to the maximum shown in the spec). Visually, the end result
would be

Back to:  _LINK1_, _LINK2_ or _LINK3_

As far as i can tell, the links and their labels should be created by
the page containing the component. The trouble is, since the HTML and
wicket:id for displaying each link is in the HTML for the component,
the page has to "know" what ID to assign its link  (and it doesn't
seem like you can change the id of a component object after its
created, which would have meant the page could just hand a list of
un-ID'd labeled links in, and the component could have re-IDed them to
match the HTML)

So the component has a static callback getIdPrefixForLink() and
getIdPrefixForLinkLabel(), and the page uses that, and then uses that
string + 0, 1, or 2 for the links its making and handing to the
constructor of the Header component.

So if the Component only gets 1 Labeled Link, it then creates
placeholder objects for the other 2, to make sure the hierarchy as
outlined in the HTML is still ok, and then just hides them.

And there's a tad more logic for the commas and the "or".

So, this all seems really hacky to me. What's a better way? In other
words: Is having to make place holders for everything that ever MIGHT
appear on a page or component, and then making them invisible when you
don't need them, the Wicket way, or is there something more direct?
And/or is there a standard way of letting parent pages or component
make subsubcomponents to be added to a subcomponent (e.g the Page
making PageLinks to be added to the Header component -- incidentally I
can't just pass in a reference to the class, because of what we had to
do to make "lazy loading" links that don't fully instantiate the page
they go to until that link is clicked.)

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

Reply via email to