No answers...

The question is how to make automatic linking have an effect on the A tag and its container LI tag, knowing that both of them are part of a custom wicket component.

Anyone ?


[EMAIL PROTECTED] wrote:
Hello all,

I'm really new in the object world in general and using Wicket particularly, so please excuse if I'm missing something... I've googled around but maybe I didn't use the good keywords.


So here's my question !

I'm building a navigation menu for my web application. There are 3 different levels, the higher one is linking to different Wicket pages. My top level menu is html coded like this :

<ul>
    <li>Menu Item 1</li>
    <li class="current">Menu Item 2</li>
    <li>Menu Item 3</li>
</ul>

Notice the class="current" on the selected page.

I've already created the following code (see below), but was wondering if there are any means to use the Wicket autolink feature ? It would be far more simplier... The difficulty I see is to modify the <li> tag on the selected link ? Thanks for advices !



// LayoutAuthenticated.html
...
    <ul wicket:id="menu1a">
        <li wicket:id="menu1aItem"><a>Libellé menu1</a></li>
    </ul>
...



// LayoutAuthenticated.java

    protected MenuItem menu1aOpt1;
    protected MenuItem menu1aOpt2;
    protected MenuItem menu1aOpt3;

    public LayoutAuthenticated() {
...
        List<MenuItem> menu1aList = new ArrayList<MenuItem>();
menu1aList.add(menu1aOpt1 = new MenuItem("menu1aItem", true, "menu1a.Opt1", Opt1.class)); menu1aList.add(menu1aOpt2 = new MenuItem("menu1aItem", true, "menu1a.Opt2", Opt2.class)); menu1aList.add(menu1aOpt3 = new MenuItem("menu1aItem", true, "menu1a.Opt3", Opt3.class));
        add(new ListView<MenuItem>("menu1a", menu1aList) {
            @Override
            protected void populateItem(ListItem<MenuItem> item) {
                item.add(item.getModelObject());
            }
        });
...
    }



// MenuItem.html

<wicket:panel>
<li wicket:id="menuItem"><a wicket:id="link"><span wicket:id="label" /></a></li>
</wicket:panel>



// MenuItem.java

    private String keyLabel;
    private Class lienClass;
    private WebMarkupContainer menuItem;
    private BookmarkablePageLinkWithoutDisabledMarkup link;

public MenuItem(String wicketId, boolean isActive, String keyLabel, Class lienClass) {
        super(wicketId);

        setLienClass(lienClass);
        setKeyLabel(keyLabel);

        setRenderBodyOnly(true);
        add(menuItem = new WebMarkupContainer("menuItem"));
menuItem.add(link = new BookmarkablePageLinkWithoutDisabledMarkup("link", lienClass));
        Label label;
link.add(label = new Label("label", new ResourceModel(keyLabel)));
        label.setRenderBodyOnly(true);
    }

    public void setLienClass(Class lienClass) {
        this.lienClass = lienClass;
    }

    public void setKeyLabel(String keyLabel) {
        this.keyLabel = keyLabel;
    }

    public void setActive() {
        menuItem.add(new SimpleAttributeModifier("class",""));
        link.setEnabled(true);
    }

    public void setInActive() {
        menuItem.add(new SimpleAttributeModifier("class","current"));
        link.setEnabled(false);
    }



// BookmarkablePageLinkWithoutDisabledMarkup.java
// (just to keep my <a> tag on selected links)

public <C extends Page> BookmarkablePageLinkWithoutDisabledMarkup(String id,
            Class<C> pageClass) {
        super(id, pageClass);
    }

    @Override
    protected void disableLink(ComponentTag tag) {
        tag.remove("href");
    }



// Opt1.java

public class Opt1 extends LayoutAuthenticated {
    public Opt1() {
        menu1aOpt1.setInActive();
    }
}



// Opt2.java

public class Opt2 extends LayoutAuthenticated {
    public Opt2() {
        menu1aOpt2.setInActive();
    }
}



// Opt3.java

public class Opt3 extends LayoutAuthenticated {
    public Opt3() {
        menu1aOpt3.setInActive();
    }
}



// Wicket application init()
// (don't need the default <em> tags around the selected link label)

...
        getMarkupSettings().setDefaultBeforeDisabledLink("");
        getMarkupSettings().setDefaultAfterDisabledLink("");
...


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



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

Reply via email to