asked
2016-01-23 13:10:42 +0800
Bhushanngage 59 ● 6 I have one composite component. Its zul is cc.zul
<zk>
<div context="editPopup">
<label id="lbl" />
</div>
<menupopup id="editPopup">
<menuitem label="Message" />
<menuitem label="Profile" />
</menupopup>
</zk>
Its corresponding listener is CompositeComp.java
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.IdSpace;
import org.zkoss.zk.ui.event.MouseEvent;
import org.zkoss.zk.ui.select.Selectors;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Div;
import org.zkoss.zul.Label;
import org.zkoss.zul.Messagebox;
public class CompositeComp extends Div implements IdSpace {
@Wire
Label lbl;
// Default Constructor.
public CompositeComp(int id) {
Executions.createComponents("cc.zul", this, null);
Selectors.wireComponents(this, this, false);
Selectors.wireEventListeners(this, this);
this.id = id;
lbl.setValue("Hello " + id);
}
public int getCompId() {
return id;
}
//Here is magic happening
@Listen("onClick = menuitem")
public void onSelectMenu(MouseEvent event) {
Messagebox.show(String.valueOf(id));
}
}
I want to show above composite component in my container.zul
<window id="win" apply="the.bhushan.zk.listeners.Container">
<div id="container" />
</window>
Listener Container.java is as follow
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Div;
public class Container extends SelectorComposer<Component> {
@Wire
Div container;
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
for (int i = 0; i < 5; i++) {
container.appendChild(new CompositeComp(i));
}
}
}
In listener Container.java, I am appending Composite component 5 times. When I right click on any component in screen, and after clicking any menu Messagebox shows value "4" always.
Please help.