From 57941e5d6388a1069b374c2c694d008b6bae6711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 19 Jan 2010 18:49:25 +0100 Subject: [PATCH] ItEr44S08ImplantacionAplicacionItEr43S09: Adding utility class for simplifying the handling of tabs selection --- .../web/common/OnTabSelection.java | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/common/OnTabSelection.java 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; + } + +}