/* * Copyright (C) 2005-2017 ManyDesigns srl. All rights reserved. * http://www.manydesigns.com/ * * Unless you have purchased a commercial license agreement from ManyDesigns srl, * the following license terms apply: * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as published by * the Free Software Foundation. * * There are special exceptions to the terms and conditions of the GPL * as it is applied to this software. View the full text of the * exception in file OPEN-SOURCE-LICENSE.txt in the directory of this * software distribution. * * This program is distributed WITHOUT ANY WARRANTY; and without 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 this program; if not, see http://www.gnu.org/licenses/gpl.txt * or write to: * Free Software Foundation, Inc., * 59 Temple Place - Suite 330, * Boston, MA 02111-1307 USA * */ package com.manydesigns.portofino.menu; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * @author Paolo Predonzani - paolo.predonzani@manydesigns.com * @author Angelo Lupo - angelo.lupo@manydesigns.com * @author Giampiero Granatella - giampiero.granatella@manydesigns.com * @author Alessio Stalla - alessio.stalla@manydesigns.com */ public class MenuBuilder { public static final String copyright = "Copyright (C) 2005-2017 ManyDesigns srl"; public final List<MenuAppender> menuAppenders = new ArrayList<MenuAppender>(); public Menu build() { Menu menu = new Menu(); for(MenuAppender appender : menuAppenders) { appender.append(menu); } Collections.sort(menu.items, new MenuItemComparator()); for(MenuItem menuItem : menu.items) { if(menuItem instanceof MenuGroup) { Collections.sort(((MenuGroup) menuItem).menuLinks, new MenuItemComparator()); } } return menu; } public List<MenuAppender> getMenuAppenders() { return menuAppenders; } public static class MenuItemComparator implements Comparator<MenuItem> { @Override public int compare(MenuItem mi1, MenuItem mi2) { return Double.compare(mi1.order, mi2.order); } } }