From 0500b4e1f8fb7b049eaffc13ce616147c8b11b31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 3 Sep 2009 17:51:48 +0200 Subject: [PATCH] ItEr24S03ContornaItEr23S03: Not allowing to call the same button twice. --- .../web/common/CustomMenuController.java | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/CustomMenuController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/CustomMenuController.java index 301fc9eb5..4f797fc3d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/CustomMenuController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/CustomMenuController.java @@ -10,6 +10,8 @@ import org.zkoss.ganttz.util.IMenuItemsRegister; import org.zkoss.ganttz.util.OnZKDesktopRegistry; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zul.Button; import org.zkoss.zul.Div; @@ -178,16 +180,48 @@ public class CustomMenuController extends Div implements IMenuItemsRegister { return Collections. emptyList(); } + private Button currentOne = null; + @Override public void addMenuItem(String name, org.zkoss.zk.ui.event.EventListener eventListener) { Hbox insertionPoint = getRegisteredItemsInsertionPoint(); Button button = new Button(); button.setLabel(_(name)); - button.setSclass(true ? "sub_menu" : "sub_menu"); - button.addEventListener(Events.ON_CLICK, eventListener); + setDeselectedClass(button); + button.addEventListener(Events.ON_CLICK, doNotCallTwice(button, + eventListener)); insertionPoint.appendChild(button); insertionPoint.appendChild(separator()); + + } + + private void setSelectClass(final Button button) { + button.setSclass("sub_menu_active"); + } + + private void setDeselectedClass(Button button) { + button.setSclass("sub_menu"); + } + + private EventListener doNotCallTwice(final Button button, + final org.zkoss.zk.ui.event.EventListener originalListener) { + return new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + if (currentOne == button) { + return; + } + if (currentOne != null) { + currentOne.setSclass("sub_menu"); + setDeselectedClass(currentOne); + } + setSelectClass(button); + currentOne = button; + originalListener.onEvent(event); + } + }; } private Component separator() {