diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/OnTabSelection.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/OnTabSelection.java new file mode 100644 index 000000000..ffe93bf0b --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/OnTabSelection.java @@ -0,0 +1,73 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.navalplanner.web.common; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang.Validate; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.event.SelectEvent; +import org.zkoss.zul.Tabbox; + +/** + * @author Óscar González Fernández + * + */ +public class OnTabSelection { + + public interface IOnSelectingTab { + public void tabSelected(); + } + + private Map tabs = new HashMap(); + + public static OnTabSelection createFor(Tabbox tabBox) { + return new OnTabSelection(tabBox); + } + + public OnTabSelection(Tabbox tabBox) { + Validate.notNull(tabBox); + tabBox.addEventListener(Events.ON_SELECT, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + SelectEvent e = (SelectEvent) event; + for (Object each : e.getSelectedItems()) { + if (tabs.get(each) != null) { + tabs.get(each).tabSelected(); + } + } + } + }); + } + + public OnTabSelection onSelectingTab(Component tab, + IOnSelectingTab onSelectingTab) { + Validate.notNull(tab); + Validate.notNull(onSelectingTab); + tabs.put(tab, onSelectingTab); + return this; + } + +}