/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.venky.swf.views.controls.page;
import java.util.HashMap;
import java.util.Map;
import com.venky.swf.views.controls.Control;
import com.venky.swf.views.controls.page.layout.Span;
/**
*
* @author venky
*/
public class Menu extends Control implements _IMenu{
/**
*
*/
private static final long serialVersionUID = 1L;
public Menu(){
this(true);
}
private Menu(boolean isMainmenu){
super("ul");
if (isMainmenu){
addClass("nav navbar-nav");
}else {
addClass("dropdown-menu");
setProperty("role", "menu");
}
}
public boolean isEmpty(){
return getContainedControls().isEmpty();
}
public MenuItem createMenuItem(String text,String url){
return createMenuItem(text, url,null);
}
public MenuItem createMenuItem(String text,String url,Icon img){
MenuItem mi = new MenuItem(text, url,img) ;
addControl(mi);
return mi;
}
private transient Map<String,Menu> subMenuMap = new HashMap<String, Menu>();
public MenuItem createMenuItem(String text,Menu subMenu){
MenuItem mi = new MenuItem(text, subMenu) ;
mi.addClass("dropdown");
addControl(mi);
subMenuMap.put(text, subMenu);
return mi;
}
public static class MenuItem extends Control {
/**
*
*/
private static final long serialVersionUID = 1L;
public MenuItem(String text,String url){
this(text,url,null);
}
public MenuItem(String text,String url,Icon img){
super("li");
Link link = new Link();
link.setUrl(url);
link.setText(text);
if (img != null){
link.addControl(img);
}
addControl(link);
}
public MenuItem(String text,Menu submenu){
super("li");
addClass("dropdown");
Link link = new Link();
link.setUrl("#");
link.setText(text);
link.addClass("dropdown-toggle");
link.setProperty("data-toggle", "dropdown");
link.setProperty("role", "button");
link.setProperty("aria-expanded", false);
Span s = new Span();
s.addClass("caret");
link.addControl(s);
addControl(link);
addControl(submenu);
}
}
public Menu getSubmenu(String menuName) {
Menu subMenu = subMenuMap.get(menuName);
if (subMenu == null){
subMenu = new Menu(false);
createMenuItem(menuName, subMenu);
}
return subMenu;
}
}