Hi Igor,
thank you for your reply. I changed it a bit more - i dont use a
linkFactory, but instead i use a new Link object, wich can be easily added
like this:
tabList.add(new ShopLink("Description",Target.class,Pageparams));
and then use it that way:
new ListView(this, "tabList", tabList) {
protected void populateItem(ListItem item) {
final ShopLink link = (ShopLink) item.getModelObject();
BookmarkablePageLink currentLink = new
BookmarkablePageLink(item,"linkTo",link.getLinkTarget(),link.getParams());
currentLink.add(new SimpleAttributeModifier("id","aktiv")
{
public boolean isEnabled() {
return
paramsIn.getString("2","foo").equalsIgnoreCase(link.getLinkText());
}
});
new Label(currentLink,"linkName",link.getLinkText());
}
};
I somehow like that new aproach in wicket 2.0 with the need to have the
MarkupContainer around, but some things are not clear to me yet...
e.g: new SimpleAttributeModifier is marked as deprecated - what should be
used now? Javadoc is empty about this... the buildate (Snapshot) is today
13:00 MEZ;
also, its a bit confusing as i sometime get lost in the "stage" where to put
what: eg: its harder now as you have to follow the strict path e.g:
BasePage->Component->Component wherease before you didnt take care about
that..
(i had some troubel till i figured out to put the
BookMarkablePageLink(item,..) instead of (this,..) - still dont know why its
item and not this...)
Best Regards,
Korbinian
> -----Ursprüngliche Nachricht-----
> Von: Igor Vaynberg [mailto:[EMAIL PROTECTED]
> Gesendet: Freitag, 10. November 2006 19:53
> An: [email protected]
> Betreff: Re: Wicket 2.0 and Flexible Navigation List/ add problem
>
> add(new ListView("navList", navList) {
> protected void populateItem(ListItem item) {
> ILinkFactory factory=item.getModelObject();
> factory.newLink(item, "id");
> }
> });
>
>
> -igor
>
>
> On 11/10/06, Korbinian Bachl <[EMAIL PROTECTED]> wrote:
> >
> > Hi Igor,
> >
> > thanks for your reply. I understand that i should do it using an
> > interface and not expose the wicket:id's.
> >
> > However, even if i pass it in there (navlist now as navList<ILink>):
> >
> > > add(new ListView("navList", navList) {
> > > protected void populateItem(ListItem item) {
> > > BookmarkablePageLink link =
> (BookmarkablePageLink)
> > > item.getModelObject();
> > > item.add(link);
> > > }
> > > });
> >
> >
> > how can i add it to it ? - i dont understand how i use it
> there - even
> > is its IList i would add it, but now i need its parent Component...
> >
> >
> > Regards,
> >
> > Korbinian
> >
> >
> > > -----Ursprüngliche Nachricht-----
> > > Von: Igor Vaynberg [mailto:[EMAIL PROTECTED]
> > > Gesendet: Freitag, 10. November 2006 17:43
> > > An: [email protected]
> > > Betreff: Re: Wicket 2.0 and Flexible Navigation List/ add problem
> > >
> > > first of all i wouldnt pass components around in a list.
> > >
> > > there are a couple of ways to do that
> > >
> > > the easist would probably be to have something like this:
> > >
> > > interface ILinkFactory { Link newLink(Component parent,
> String id);
> > > }
> > >
> > > then instead of List<BookmarkablePageLink> you pass in
> > > List<ILinkFactory>.
> > > notice this is also better because now the code that
> generates links
> > > doesnt have a fuzzy contract about link's id with the code that
> > > renders it.
> > >
> > > -igor
> > >
> > >
> > > On 11/10/06, Korbinian Bachl <[EMAIL PROTECTED]> wrote:
> > > >
> > > > Hi,
> > > >
> > > > i tried to convert my current skeleton to wicket 2.0,
> but stumbled
> > > > into a problem i cant solve so far:
> > > >
> > > > My base:
> > > >
> > > > I have a LinkPanel that creates a List containing
> > > Navigationallinks in
> > > > a MasterPage (here BasePage extending WebPage) and uses a
> > > > getNavList(PageParameters paramsIn) function to resolve
> > > this from the
> > > > current page (wich is overriden by the extending page then)
> > > >
> > > > The Panel itself:
> > > >
> > > > HTML:
> > > > <wicket:panel>
> > > > <h4 wicket:id="headline">Linklist</h4>
> > > > <ul>
> > > > <li wicket:id="navList"><a href="#"
> > > > wicket:id="linkTo"><span
> wicket:id="linkName">Link</span></a></li>
> > > >
> > > > </ul>
> > > > </wicket:panel>
> > > >
> > > > Java:
> > > > public class NavigationLinks extends Panel{
> > > >
> > > > /** Creates a new instance of NavigationLinks */
> > > > public NavigationLinks(String id, final List navList) {
> > > > super(id);
> > > > add(new Label("headline","Kopzeile"));
> > > > add(new ListView("navList", navList) {
> > > > protected void populateItem(ListItem item) {
> > > > BookmarkablePageLink link =
> (BookmarkablePageLink)
> > > > item.getModelObject();
> > > > item.add(link);
> > > > }
> > > > });
> > > >
> > > > }
> > > > }
> > > >
> > > > and its feed like this:
> > > >
> > > > in constructor of BasePage:
> > > > NavigationLinks nl = new
> > > > NavigationLinks("NavigationLinks",getNavList(paramIn));
> > > > add(nl);
> > > >
> > > > with public List getNavList(PageParameters paramIn)
> > > > {
> > > > PageParameters params =
> > > > ((SpecialSession)getSession()).getNewGlobalParams();
> > > > List navList = new ArrayList();
> > > > params.add(Integer.toString(params.size()),"FOO");
> > > > params.add(Integer.toString(params.size()),"Bar");
> > > > navList.add(new
> > > > BookmarkablePageLink("linkTo",Katalog.class,
> > > > params).add(new Label("linkName","Foo Bar")));
> > > > [...]
> > > > return navList;
> > > > }
> > > >
> > > > i know i need to put the superclass-ref into the panel
> > > using this and
> > > > a corresponding var, but what i dont understand is how i can
> > > > solve this
> > > > part:
> > > >
> > > > add(new ListView("navList", navList) {
> > > > protected void populateItem(ListItem item) {
> > > > BookmarkablePageLink link =
> (BookmarkablePageLink)
> > > > item.getModelObject();
> > > > item.add(link);
> > > > }
> > > > });
> > > >
> > > > ok, the add is gone, so it would be new ListView(this,
> "navList",
> > > > navList) {
> > > > protected void populateItem(ListItem item) {
> > > > BookmarkablePageLink link =
> (BookmarkablePageLink)
> > > > item.getModelObject();
> > > > item.add(link);
> > > > }
> > > > };
> > > > but how can I fix this part:
> > > > BookmarkablePageLink link = (BookmarkablePageLink)
> > > item.getModelObject();
> > > > item.add(link);
> > > > as i cant "add" it anymore... ?
> > > >
> > > > or I am on a Antipattern here? My need is that i have a
> > > Place where i
> > > > need to put BookMarkablePageLinks dynamically to...
> > > >
> > > > Best Regards,
> > > >
> > > > Korbinain
> > > >
> > > >
> > >
> >
> >
>