package org.zkoss.zksandbox.zkfiddle; 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.EventQueue; import org.zkoss.zk.ui.event.EventQueues; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Label; /** * Created with IntelliJ IDEA. * User: payegishemingway * Date: 2/19/13 * Time: 10:07 AM * To change this template use File | Settings | File Templates. */ public class Include2Composer extends GenericForwardComposer{ private Label lbl; /* * create "connection" EventQueue , all the "connection" EventQueue could talke to each other. * * (You could change the naming of "connection" to anything you like. ;) ) * * Note: we use desktop level EventQueue , only EventQueue in the same desktop will get the published event. * * That means if there are different session or different desktop , it won't have any side effect to others. But if you are using "application scope" EventQueue , you have to take care of taht. * * * More reference. * http://books.zkoss.org/wiki/ZK_Developer's_Reference/Event_Handling/Event_Queues */ private EventQueue qe= EventQueues.lookup(MyConsts.EVENTQUEUE_CONNECTION,true); public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); //subcribe event qe.subscribe(new EventListener() { public void onEvent(Event event) throws Exception { //If you have many event go through this event queue, // you have to handle the event name by yourself now. //All the event will publish to every subcriber. if(MyConsts.EVENT_MESSAGE_1.equals(event.getName())){ //Recieved from Include1 String message = (String) event.getData(); lbl.setValue(message); } } }); } }