ListView<MenuItem> primaryMenuListView = new ListView<MenuItem>("menuItem", menuItemList) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<MenuItem> item) {
final MenuItem menuItem = (MenuItem) item.getModelObject();
Link<Void> link = null;
log.info("Menu : {} , Type : {} ", menuItem.getMenuText(), menuItem.getDestinationType());
if (DestinationType.AJAX_TARGET == menuItem.getDestinationType()) {
if ("menuLink".equals(menuItem.getAjaxLink().getId())) {
throw new RuntimeException("MenuLink needs to have menuLink as wicket id!");
}
link = menuItem.getAjaxLink();
} else {
link = new Link<Void>("menuLink") {
private static final long serialVersionUID = 1L;
@Override
public void onClick() {
if (menuItem != null) {
processResponse(menuItem);
}
}
};
}
Label seperator = new Label("menuSeperator");
seperator.add(new AttributeModifier("class", new Model<String>("divider divider-vert")));
Label linkText = new Label("linkText");
link.add(new AttributeModifier("class", new Model<String>("item-primary")));
if (menuItem != null && menuItem.getMenuText() != null && !menuItem.isSeperator()) {
linkText.setDefaultModel(new Model<String>(menuItem.getMenuText()));
linkText.setRenderBodyOnly(true);
}
link.add(linkText);
if (menuItem.isSeperator()) {
link.setVisible(false);
} else {
seperator.setVisible(false);
}
WebMarkupContainer subMenuListContainer = new WebMarkupContainer("subMenuListContainer");
List<MenuItem> subMenuList = new ArrayList<MenuItem>();
if (menuItem.getSubMenuItemList() != null) {
subMenuList = menuItem.getSubMenuItemList();
}
ListView<MenuItem> subMenuListView = new ListView<MenuItem>("subMenuItem", subMenuList) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<MenuItem> item) {
final MenuItem subMenuItem = (MenuItem) item.getModelObject();
Link<Void> subMenuLink = null;
log.info("Submenu : {} , Type : {} ", subMenuItem.getMenuText(), subMenuItem.getDestinationType());
if (DestinationType.AJAX_TARGET == subMenuItem.getDestinationType()) {
if (!"subMenuLink".equals(subMenuItem.getAjaxLink().getId())) {
throw new RuntimeException("Needs to have id as subMenuLink");
}
subMenuLink = subMenuItem.getAjaxLink();
} else {
subMenuLink = new Link<Void>("subMenuLink") {
private static final long serialVersionUID = 1L;
@Override
public void onClick() {
if (subMenuItem != null) {
processResponse(subMenuItem);
}
}
};
}
Label subMenuSeperatorOrSecondaryTitle = new Label("subMenuSeperatorOrSecondaryTitle");
if (subMenuItem.isSeperator()) {
subMenuSeperatorOrSecondaryTitle.add(new AttributeModifier("class", new Model<String>(
"divider divider-horiz")));
} else if (subMenuItem.isSubmenuTitle()) {
subMenuSeperatorOrSecondaryTitle.add(new AttributeModifier("class", new Model<String>(
"item-secondary-title")));
subMenuSeperatorOrSecondaryTitle.setDefaultModel(new Model<String>(subMenuItem.getMenuText()));
}
Label subMenuLinkText = new Label("subMenuLinkText");
if (subMenuItem != null && subMenuItem.getMenuText() != null && !subMenuItem.isSeperator()) {
subMenuLinkText.setDefaultModel(new Model<String>(subMenuItem.getMenuText()));
subMenuLinkText.setRenderBodyOnly(true);
}
Iterator<Component> iterator = subMenuLink.iterator();
boolean found = false;
while (iterator.hasNext()) {
Component next = iterator.next();
if (subMenuLinkText.getId().equals(next.getId())) {
found = true;
break;
}
}
if (!found) {
subMenuLink.add(subMenuLinkText);
}
if (subMenuItem.isSeperator() || subMenuItem.isSubmenuTitle()) {
subMenuLink.setVisible(false);
} else {
subMenuSeperatorOrSecondaryTitle.setVisible(false);
}