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]