0

Catch Event checkmark with listbox

asked 2010-08-10 04:19:35 +0800

SHERKHAN gravatar image SHERKHAN
231 3

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

delete flag offensive retag edit

2 Replies

Sort by ยป oldest newest

answered 2010-08-10 06:20:33 +0800

ashishd gravatar image ashishd flag of Taiwan
1972 6

Hi SHERKHAN,
could you post your zul file source code too?

link publish delete flag offensive edit

answered 2010-08-10 07:05:41 +0800

SHERKHAN gravatar image SHERKHAN
231 3

updated 2010-08-10 07:10:41 +0800

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

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2010-08-10 04:19:35 +0800

Seen: 601 times

Last updated: Aug 10 '10

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More