package com.proudcase.managedbean; import com.proudcase.constants.ENavigation; import com.proudcase.filehandling.PropertyReader; import com.proudcase.persistence.LangCategorieBean; import java.io.Serializable; import java.util.Locale; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import org.primefaces.component.graphicimage.GraphicImage; import org.primefaces.model.menu.DefaultMenuColumn; import org.primefaces.model.menu.DefaultMenuItem; import org.primefaces.model.menu.DefaultSubMenu; import org.primefaces.model.menu.DynamicMenuModel; import org.primefaces.model.menu.MenuModel; /** * Copyright © 17.08.2013 Michel Vocks This file is part of proudcase. * * proudcase is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * proudcase is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * proudcase. If not, see <http://www.gnu.org/licenses/>. * * / * ** * @Author: Michel Vocks * * @Date: 17.08.2013 * * @Encoding: UTF-8 */ @ManagedBean @SessionScoped public class MenuControllerBean implements Serializable { @ManagedProperty(value = "#{sessionBean}") private SessionBean sessionBean; transient private MenuModel menuModel; transient private Locale menuLocale; // static information private static final String IMAGELIB = "images"; private static final String IMAGEWIDTH = "200"; private static final String IMAGEHEIGHT = "150"; private static final String SEARCHPARAM = "?categorieString="; public MenuControllerBean() { } public void generateMenuModel() { FacesContext fCtx = FacesContext.getCurrentInstance(); // create default model menuModel = new DynamicMenuModel(); // create the index menu DefaultSubMenu indexMenu = new DefaultSubMenu(); //indexMenu.setIcon("ui-icon-home"); indexMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_0", null, sessionBean.getUserLocale())); // we need a submenu DefaultSubMenu subindexMenu = new DefaultSubMenu(); subindexMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_0", null, sessionBean.getUserLocale())); // and two columns DefaultMenuColumn firstIndColumn = new DefaultMenuColumn(); DefaultMenuColumn secondIndColumn = new DefaultMenuColumn(); // Create the menu item DefaultMenuItem index1Item = new DefaultMenuItem(); index1Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_0_1", null, sessionBean.getUserLocale())); index1Item.setUrl(ENavigation.INDEX.toString()); // Create the menu item DefaultMenuItem index2Item = new DefaultMenuItem(); index2Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_0_2", null, sessionBean.getUserLocale())); index2Item.setUrl(ENavigation.GETSTARTED.toString()); // Create the menu item DefaultMenuItem index3Item = new DefaultMenuItem(); index3Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_0_3", null, sessionBean.getUserLocale())); index3Item.setUrl(ENavigation.INFOPAGE.toString()); // add to the subsubmenu subindexMenu.addElement(index1Item); subindexMenu.addElement(index2Item); subindexMenu.addElement(index3Item); // add subsubmenu to column firstIndColumn.addElement(subindexMenu); // create image component GraphicImage indexImage = new GraphicImage(); indexImage.setLibrary(IMAGELIB); indexImage.setName(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_0_imagename", null, sessionBean.getUserLocale())); indexImage.setWidth(IMAGEWIDTH); indexImage.setHeight(IMAGEHEIGHT); // add image to index secondIndColumn.addElement(new DefaultMenuItem(indexImage)); // add columns to index menu indexMenu.addElement(firstIndColumn); indexMenu.addElement(secondIndColumn); // add index menu menuModel.addElement(indexMenu); // ----------------- Next Menu ------------------ // create the categorie menu DefaultSubMenu categorieMenu = new DefaultSubMenu(); //categorieMenu.setIcon("ui-icon-tag"); categorieMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_1", null, sessionBean.getUserLocale())); // we need a submenu for the categorie menu DefaultSubMenu subKategorieMenu = new DefaultSubMenu(); subKategorieMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_1", null, sessionBean.getUserLocale())); // and two columns DefaultMenuColumn firstCatColumn = new DefaultMenuColumn(); DefaultMenuColumn secondCatColumn = new DefaultMenuColumn(); // fill the categorie menu with categories for (LangCategorieBean categorie : sessionBean.getLocaleCategorieList()) { // Create the menu item DefaultMenuItem categorieItem = new DefaultMenuItem(); categorieItem.setValue(categorie.getCategoriename()); categorieItem.setUrl(ENavigation.SEARCH.toString() + SEARCHPARAM + categorie.getCategoriename()); // add to the subsubmenu subKategorieMenu.addElement(categorieItem); } // add subsubmenu to column firstCatColumn.addElement(subKategorieMenu); // create image component GraphicImage categorieImage = new GraphicImage(); categorieImage.setLibrary(IMAGELIB); categorieImage.setName(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_1_imagename", null, sessionBean.getUserLocale())); categorieImage.setWidth(IMAGEWIDTH); categorieImage.setHeight(IMAGEHEIGHT); // add image to categorie secondCatColumn.addElement(new DefaultMenuItem(categorieImage)); // add columns to categorie menu categorieMenu.addElement(firstCatColumn); categorieMenu.addElement(secondCatColumn); // add categorie menu menuModel.addElement(categorieMenu); // ----------------- Next Menu ------------------ // create the showcase menu DefaultSubMenu showcaseMenu = new DefaultSubMenu(); //showcaseMenu.setIcon("ui-icon-comment"); showcaseMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_2", null, sessionBean.getUserLocale())); // we need a submenu DefaultSubMenu subShowcaseMenu = new DefaultSubMenu(); subShowcaseMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_2", null, sessionBean.getUserLocale())); // and two columns DefaultMenuColumn firstShowColumn = new DefaultMenuColumn(); DefaultMenuColumn secondShowColumn = new DefaultMenuColumn(); // Create the menu item DefaultMenuItem showcase1Item = new DefaultMenuItem(); showcase1Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_2_1", null, sessionBean.getUserLocale())); showcase1Item.setUrl(ENavigation.NEWSHOWCASE.toString()); // Create the menu item DefaultMenuItem showcase2Item = new DefaultMenuItem(); showcase2Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_2_2", null, sessionBean.getUserLocale())); showcase2Item.setUrl(ENavigation.SHOWCASEMANAGER.toString()); // Create the menu item DefaultMenuItem showcase3Item = new DefaultMenuItem(); showcase3Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_2_3", null, sessionBean.getUserLocale())); showcase3Item.setUrl(ENavigation.SEARCH.toString()); // add to the subsubmenu subShowcaseMenu.addElement(showcase1Item); subShowcaseMenu.addElement(showcase2Item); subShowcaseMenu.addElement(showcase3Item); // add subsubmenu to column firstShowColumn.addElement(subShowcaseMenu); // create image component GraphicImage showcaseImage = new GraphicImage(); showcaseImage.setLibrary(IMAGELIB); showcaseImage.setName(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_2_imagename", null, sessionBean.getUserLocale())); showcaseImage.setWidth(IMAGEWIDTH); showcaseImage.setHeight(IMAGEHEIGHT); // add image to categorie secondShowColumn.addElement(new DefaultMenuItem(showcaseImage)); // add columns to categorie menu showcaseMenu.addElement(firstShowColumn); showcaseMenu.addElement(secondShowColumn); // add showcase menu menuModel.addElement(showcaseMenu); // ----------------- Next Menu ------------------ // create the ranking menu /*DefaultSubMenu rankingMenu = new DefaultSubMenu(); rankingMenu.setIcon("ui-icon-star"); rankingMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_3", null, sessionBean.getUserLocale())); // we need a submenu DefaultSubMenu subRankingMenu = new DefaultSubMenu(); subRankingMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_3", null, sessionBean.getUserLocale())); // and two columns DefaultMenuColumn firstRankColumn = new DefaultMenuColumn(); DefaultMenuColumn secondRankColumn = new DefaultMenuColumn(); // Create the menu item DefaultMenuItem ranking1Item = new DefaultMenuItem(); ranking1Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_3_1", null, sessionBean.getUserLocale())); ranking1Item.setUrl("#"); // Create the menu item DefaultMenuItem ranking2Item = new DefaultMenuItem(); ranking2Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_3_2", null, sessionBean.getUserLocale())); ranking2Item.setUrl("#"); // add to the subsubmenu subRankingMenu.addElement(ranking1Item); subRankingMenu.addElement(ranking2Item); // add subsubmenu to column firstRankColumn.addElement(subRankingMenu); // create image component GraphicImage rankingImage = new GraphicImage(); rankingImage.setLibrary(IMAGELIB); rankingImage.setName(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_3_imagename", null, sessionBean.getUserLocale())); rankingImage.setWidth(IMAGEWIDTH); rankingImage.setHeight(IMAGEHEIGHT); // add image to ranking secondRankColumn.addElement(new DefaultMenuItem(rankingImage)); // add columns to ranking menu rankingMenu.addElement(firstRankColumn); rankingMenu.addElement(secondRankColumn); // add ranking menu menuModel.addElement(rankingMenu);*/ // ----------------- Next Menu ------------------ // create the member menu DefaultSubMenu memberMenu = new DefaultSubMenu(); //memberMenu.setIcon("ui-icon-person"); memberMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_4", null, sessionBean.getUserLocale())); // we need a submenu DefaultSubMenu subMemberMenu = new DefaultSubMenu(); subMemberMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_4", null, sessionBean.getUserLocale())); // and two columns DefaultMenuColumn firstMemColumn = new DefaultMenuColumn(); DefaultMenuColumn secondMemColumn = new DefaultMenuColumn(); // Create the menu item DefaultMenuItem member1Item = new DefaultMenuItem(); member1Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_4_1", null, sessionBean.getUserLocale())); member1Item.setUrl(ENavigation.FRIENDS.toString()); // Create the menu item DefaultMenuItem member2Item = new DefaultMenuItem(); member2Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_4_2", null, sessionBean.getUserLocale())); member2Item.setUrl(ENavigation.MESSAGES.toString()); // add to the subsubmenu subMemberMenu.addElement(member1Item); subMemberMenu.addElement(member2Item); // add subsubmenu to column firstMemColumn.addElement(subMemberMenu); // create image component GraphicImage memberImage = new GraphicImage(); memberImage.setLibrary(IMAGELIB); memberImage.setName(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_4_imagename", null, sessionBean.getUserLocale())); memberImage.setWidth(IMAGEWIDTH); memberImage.setHeight(IMAGEHEIGHT); // add image to ranking secondMemColumn.addElement(new DefaultMenuItem(memberImage)); // add columns to member menu memberMenu.addElement(firstMemColumn); memberMenu.addElement(secondMemColumn); // add member menu menuModel.addElement(memberMenu); // ----------------- Next Menu ------------------ // create the account menu DefaultSubMenu accountMenu = new DefaultSubMenu(); //accountMenu.setIcon("ui-icon-gear"); accountMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_5", null, sessionBean.getUserLocale())); // we need a submenu DefaultSubMenu subaccountMenu = new DefaultSubMenu(); subaccountMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_5", null, sessionBean.getUserLocale())); // and two columns DefaultMenuColumn firstAccColumn = new DefaultMenuColumn(); DefaultMenuColumn secondAccColumn = new DefaultMenuColumn(); // Create the menu item DefaultMenuItem account1Item = new DefaultMenuItem(); account1Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_5_1", null, sessionBean.getUserLocale())); account1Item.setUrl(ENavigation.PROFILESETTINGS.toString()); // Create the menu item DefaultMenuItem account2Item = new DefaultMenuItem(); account2Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_5_2", null, sessionBean.getUserLocale())); account2Item.setUrl(ENavigation.FRIENDS.toString()); // add to the subsubmenu subaccountMenu.addElement(account1Item); subaccountMenu.addElement(account2Item); // add subsubmenu to column firstAccColumn.addElement(subaccountMenu); // create image component GraphicImage accountImage = new GraphicImage(); accountImage.setLibrary(IMAGELIB); accountImage.setName(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_5_imagename", null, sessionBean.getUserLocale())); accountImage.setWidth(IMAGEWIDTH); accountImage.setHeight(IMAGEHEIGHT); // add image to ranking secondAccColumn.addElement(new DefaultMenuItem(accountImage)); // add columns to account menu accountMenu.addElement(firstAccColumn); accountMenu.addElement(secondAccColumn); // add account menu menuModel.addElement(accountMenu); // ----------------- Next Menu ------------------ // create the terms menu DefaultSubMenu termsMenu = new DefaultSubMenu(); //termsMenu.setIcon("ui-icon-power"); termsMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_6", null, sessionBean.getUserLocale())); // we need a submenu DefaultSubMenu subtermsMenu = new DefaultSubMenu(); subtermsMenu.setLabel(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_6", null, sessionBean.getUserLocale())); // and two columns DefaultMenuColumn firstTermColumn = new DefaultMenuColumn(); DefaultMenuColumn secondTermColumn = new DefaultMenuColumn(); // Create the menu item DefaultMenuItem terms1Item = new DefaultMenuItem(); terms1Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_6_1", null, sessionBean.getUserLocale())); terms1Item.setUrl(ENavigation.ABOUTUS.toString()); // Create the menu item DefaultMenuItem terms2Item = new DefaultMenuItem(); terms2Item.setValue(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "submenu_6_2", null, sessionBean.getUserLocale())); terms2Item.setUrl(ENavigation.TERMS.toString()); // add to the subsubmenu subtermsMenu.addElement(terms1Item); subtermsMenu.addElement(terms2Item); // add subsubmenu to column firstTermColumn.addElement(subtermsMenu); // create image component GraphicImage termsImage = new GraphicImage(); termsImage.setLibrary(IMAGELIB); termsImage.setName(PropertyReader.getMessageResourceString(fCtx .getApplication().getMessageBundle(), "menutab_6_imagename", null, sessionBean.getUserLocale())); termsImage.setWidth(IMAGEWIDTH); termsImage.setHeight(IMAGEHEIGHT); // add image to ranking secondTermColumn.addElement(new DefaultMenuItem(termsImage)); // add columns to account menu termsMenu.addElement(firstTermColumn); termsMenu.addElement(secondTermColumn); // add account menu menuModel.addElement(termsMenu); } public void setSessionBean(SessionBean sessionBean) { this.sessionBean = sessionBean; } public MenuModel getMenuModel() { // Check if the language was changed if (menuLocale == null || !menuLocale.equals(sessionBean.getUserLocale())) { // language was changed -> generate a new menu in the new language generateMenuModel(); // save the state menuLocale = sessionBean.getUserLocale(); } return menuModel; } }