ItEr24S03ContornaItEr23S03: Not allowing to call the same button twice.

This commit is contained in:
Óscar González Fernández 2009-09-03 17:51:48 +02:00
parent 0817ac5eca
commit 0500b4e1f8

View file

@ -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.<CustomMenuItem> 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() {