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
> > > >
> > > >
> > >
> >
> >
> 

Reply via email to