package de.forsthaus.example; import org.zkoss.zk.ui.Components; 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.ext.AfterCompose; import org.zkoss.zk.ui.util.Clients; import org.zkoss.zul.Label; import org.zkoss.zul.Timer; import org.zkoss.zul.Toolbar; import org.zkoss.zul.Window; /** * http://www.zkoss.org/forum/listComment/15007 * * with a few modifications. */ @SuppressWarnings("serial") public class AlarmMsgNotifyPanel extends Window implements AfterCompose { protected Label titleLabel; protected Label msgLabel; protected Toolbar titlePanel; public void afterCompose() { Components.wireVariables(this, this); // auto wire variables // Components.addForwards(this, this); // auto forward this.setPosition("right,bottom"); this.doOverlapped(); final Timer timer = new Timer(); timer.setParent(this); timer.setRepeats(true); timer.setDelay(2000); timer.addEventListener(Events.ON_TIMER, new EventListener() { private int i = 0; public void onEvent(Event event) throws Exception { setMessageEvent(i++ % 3, "hello" + i); } }); timer.setRunning(true); } public void setMessageEvent(int msgType, String msg) { if (msgType == 0) { titlePanel.setStyle("background:green;"); this.setStyle("border:1px solid green;"); } else if (msgType == 1) { titlePanel.setStyle("background:orange;"); this.setStyle("border:1px solid orange;"); } else if (msgType == 2) { titlePanel.setStyle("background:red;"); this.setStyle("border:1px solid red;"); } // this.doOverlapped(); msgLabel.setValue(msg); titleLabel.setValue("hello"); Clients.evalJavaScript("jq(\"@window[id=" + this.getUuid() + "]\").hide().fadeIn(1000);"); } }