All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.amattioli.multimodule.zk.menu.MultimoduleMenubar Maven / Gradle / Ivy

package it.amattioli.multimodule.zk.menu;

import java.util.ArrayList;
import java.util.List;
import java.util.ServiceLoader;

import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericComposer;
import org.zkoss.zul.Menubar;
import org.zkoss.zul.Menuitem;
import org.zkoss.zul.Tab;
import org.zkoss.zul.Tabbox;
import org.zkoss.zul.Tabpanel;

public class MultimoduleMenubar extends GenericComposer {
	private List menus = new ArrayList();
	
	public MultimoduleMenubar() {
		for (MultimoduleMenuProvider provider: ServiceLoader.load(MultimoduleMenuProvider.class)) {
			for (MultimoduleMenu menu: provider.getMenus()) {
				menus.add(menu);
			}
		}
	}
	
	public void onCreate(Event evt) {
		Tabbox tabbox = (Tabbox)evt.getTarget();
		for (MultimoduleMenu menu: menus) {
			Tab tab = createTab(menu);
			tab.setParent(tabbox.getTabs());
			
			Tabpanel panel = createPanel(menu);
			panel.setParent(tabbox.getTabpanels());

		}
	}	

	private Tab createTab(MultimoduleMenu menu) {
		Tab tab = new Tab();
		tab.setLabel(menu.getDescription());
		return tab;
	}
	
	private Tabpanel createPanel(MultimoduleMenu menu) {
		Tabpanel panel = new Tabpanel();
		panel.setStyle("padding: 0px");
		Menubar menubar = new Menubar();
		menubar.setOrient("vertical");
		for (MultimoduleMenuItem item: menu.getItems()) {
			Menuitem menuitem = createMenuItem(item);
			menuitem.setParent(menubar);
		}
		menubar.setParent(panel);
		return panel;
	}

	private Menuitem createMenuItem(MultimoduleMenuItem item) {
		Menuitem menuitem = new Menuitem();
		menuitem.setLabel(item.getLabel());
		menuitem.setHref("menutarget.zul?targeturl="+item.getTargetUrl()+"&title="+item.getLabel());
		return menuitem;
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy