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

co.pishfa.accelerate.ui.controller.entity.PrimeMenuBuilder Maven / Gradle / Ivy

The newest version!
package co.pishfa.accelerate.ui.controller.entity;

import co.pishfa.accelerate.portal.entity.Page;
import co.pishfa.accelerate.ui.controller.MenuBuilder;
import co.pishfa.accelerate.utility.StrUtils;
import org.primefaces.component.menubar.Menubar;
import org.primefaces.model.menu.DefaultMenuItem;
import org.primefaces.model.menu.DefaultMenuModel;
import org.primefaces.model.menu.DefaultSubMenu;
import org.primefaces.model.menu.MenuModel;

import java.io.Serializable;

/**
 * @author Taha Ghasemi 
 */
public class PrimeMenuBuilder implements MenuBuilder, Serializable {

    @Override
    public MenuModel getMenu(Page root) {
        DefaultMenuModel model = new DefaultMenuModel();
        /*DefaultMenuItem home = new DefaultMenuItem("","ui-icon-home");
        home.setTitle(getLocale().getMessages().get("home"));
        home.setOutcome("ac:home");
        model.addElement(home);*/
        buildMenuModel(model, null, root);
        return model;
    }

    private static Menubar FAKE_MENUBAR = new Menubar();
    public static class MenubarSubmenu extends DefaultSubMenu {

        public MenubarSubmenu(String label) {
            super(label);
        }

        @Override
        public Object getParent() {
            return FAKE_MENUBAR;
        }
    }

    protected void buildMenuModel(DefaultMenuModel model, DefaultSubMenu menu, Page root) {
        for(Page page : root.getChildren()) {
            if (page.isVisible()) {
                if(!page.hasAnyVisibleChild()) {
                    DefaultMenuItem item = new DefaultMenuItem();
                    item.setValue(page.getTitle());
                    item.setAjax(false);
                    item.setIcon(page.getIcon());
                    item.setTitle(page.getHelp());
                    if(StrUtils.isEmpty(page.getOutcome())) {
                        item.setUrl(page.getUrl());
                    } else {
                        item.setOutcome(page.getOutcome());
                    }
                    if(menu == null)
                        model.addElement(item);
                    else
                        menu.addElement(item);
                } else {
                    DefaultSubMenu sub = null;
                    if(menu == null) {
                        sub = new MenubarSubmenu(page.getTitle());
                        model.addElement(sub);
                    } else {
                        sub = new DefaultSubMenu(page.getTitle());
                        menu.addElement(sub);
                    }
                    sub.setIcon(page.getIcon());
                    buildMenuModel(model, sub, page);
                }
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy