-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi all,
I would like knowing when the item is checked or not...
Here is my code:
listbox.setModel(subCategoryModel); listbox.setCheckmark(true); listbox.setDisabled(true); listbox.setMultiple(true); listbox.setItemRenderer(new ListitemRenderer() { @Override public void render(Listitem item, Object data) throws Exception { item.setValue(data); final SubCategory subCategory = (SubCategory) data; Listcell name = new Listcell(subCategory.getName()); item.appendChild(name); item.addEventListener(Events.ON_CHECK, new EventListener() { @Override public void onEvent(Event event) throws Exception { Listitem item = (Listitem) event.getTarget(); if (item.isCheckable()) { System.out.println("CHECKED"); invoice.addSubCategory(subCategory.getWikittyId()); } else { System.out.println("NOCHECKED"); String id = subCategory.getWikittyId(); Set<String> subCategories = invoice.getSubCategory(); if (subCategories != null && subCategories.contains(id)) { subCategories.remove(id); } } } }); }
But the event never appears...
Thanks for your help,
Regards,
SHERKHAN
Sure,
zul file part:
<bandbox id="categoryBandbox" mold="rounded"> <bandpopup> <vbox> <grid mold="paging" id="categoryGrid" pageSize="2" width="200px" model="@{composer.categoryModel}" rowRenderer="@{composer.categoryRenderer}"> </grid> </vbox> </bandpopup> </bandbox>
And the row renderer which call the the method above :
public RowRenderer getCategoryRenderer() { return new RowRenderer() { @Override public void render(Row row, Object data) throws Exception { row.setValue(data); final Category category = (Category) data; Set<String> subCategoryIds = category.getSubCategory(); Listbox listbox = new Listbox(); setSubCategoryHeader(listbox, category); createSubCategoryListbox(listbox, subCategoryIds); row.appendChild(listbox); } }; }
The setSubCategoryHeader:
protected void setSubCategoryHeader(Listbox listbox, Category category) { if (listbox != null) { Listhead head = new Listhead(); listbox.appendChild(head); String name = category.getName(); if (name == null) { name = ""; } Listheader header = new Listheader(name); head.appendChild(header); } }
And the complete above method:
protected void createSubCategoryListbox(Listbox listbox, Set<String> subCategoryIds) { if (subCategoryIds != null && !subCategoryIds.isEmpty()) { List<SubCategory> subCategories = proxy.restore(SubCategory.class, new ArrayList<String>(subCategoryIds)); SubCategoryModel subCategoryModel = new SubCategoryModel(); subCategoryModel.setSubCategories(subCategories); listbox.setCheckmark(true); listbox.setMultiple(true); listbox.setItemRenderer(new ListitemRenderer() { @Override public void render(Listitem item, Object data) throws Exception { item.setValue(data); final SubCategory subCategory = (SubCategory) data; Listcell name = new Listcell(subCategory.getName()); item.appendChild(name); item.addEventListener(Events.ON_CHECK, new EventListener() { @Override public void onEvent(Event event) throws Exception { Listitem item = (Listitem) event.getTarget(); if (item.isCheckable()) { System.out.println("CHECKED"); invoice.addSubCategory(subCategory.getWikittyId()); } else { System.out.println("NOCHECKED"); String id = subCategory.getWikittyId(); Set<String> subCategories = invoice.getSubCategory(); if (subCategories != null && subCategories.contains(id)) { subCategories.remove(id); } } } }); } }); } }
Thanks for your help,
Best regards,
SHERKHAN
Asked: 2010-08-10 04:19:35 +0800
Seen: 601 times
Last updated: Aug 10 '10