Processing...

Suggested case list:

Using timer to refresh a grid

383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlink

user model to move item to another listbox

120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlink

Disabled list item row passed to VM-1981

296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlink

Disabled list item row passed to VM-1981

295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlink

Disabled list item row passed to VM-1981

294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlink

grid sample with ListModel/RowRenderer

816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlink

grid sample with ListModel/RowRenderer

809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlink

grid sample with ListModel/RowRenderer

196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlink

grid sample with ListModel/RowRenderer

195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlink

grid sample with ListModel/RowRenderer

194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlink

grid sample with ListModel/RowRenderer

193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlink

grid sample with ListModel/RowRenderer

192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlink

grid sample with ListModel/RowRenderer

191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlink

Hierarchy table without using ZK PE/EE

1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlink

grid sample with ListModel/RowRenderer

128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlink

user model to move item to another listbox

1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlink

Using timer to refresh a grid

1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlink

Fire a event from child iframe

1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlink

Textbox input restriction sample

1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlink

Test web core taglib in ZUL

1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlink

Latest 10 Fiddles :

constraint binding textbox

3guest172.68.151.16220peldaDec 5, 2025 5:08:19 PMlink

Another new ZK fiddle

2guest172.68.151.16320peldaDec 5, 2025 5:07:51 PMlink

Another new ZK fiddle

1guest172.68.151.16220peldaDec 5, 2025 5:07:32 PMlink

Another new ZK fiddle

1peggypeng172.71.154.99364f4neDec 5, 2025 9:24:31 AMlink

tooltip example

2guest104.22.23.13rc1ntoDec 4, 2025 2:23:45 PMlink

Another new ZK fiddle

1guest172.69.134.2277t7602Dec 4, 2025 1:40:46 PMlink

Another new ZK fiddle

1peggypeng104.22.17.1802df6e3oDec 4, 2025 8:41:29 AMlink

onClose

1peggypeng172.68.87.248j8kd8aDec 3, 2025 4:10:26 AMlink

Another new ZK fiddle

1peggypeng172.69.134.2271rm7f4eNov 26, 2025 3:31:24 AMlink

ZK-5912-Suggestion

2rebeccalai104.22.20.1442qrmiiuNov 26, 2025 2:07:15 AMlink

Another new ZK fiddle

1Worsik213.155.225.17732brnq2Jan 20, 2015 5:50:22 AMlink

resources

index.zulzul<zk> <window border="normal" title="hello" apply="pkg$.TestComposer"> <div>Welcome to ZK Fiddle , run it right now!</div> <button id="btn" label="Click Me To Evalute Event Binding With Composer" /> </window> </zk> TestComposer.javajavaimport org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; public class TestComposer extends GenericForwardComposer{ public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); } public void onClick$btn(Event e) throws InterruptedException{ Messagebox.show("Hi btn"); } } AutoComboBox.javajavapackage cz.ccv.orionutil.zk.components.acb; import java.util.HashMap; import java.util.Map; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.IdSpace; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.Clients; import org.zkoss.zk.ui.util.ConventionWires; import org.zkoss.zul.Bandbox; import org.zkoss.zul.ListModelList; import org.zkoss.zul.Listbox; import org.zkoss.zul.Listitem; import org.zkoss.zul.Paging; import org.zkoss.zul.event.ListDataEvent; import org.zkoss.zul.event.ListDataListener; import org.zkoss.zul.event.PagingEvent; import org.zkoss.zul.event.ZulEvents; public class AutoComboBox extends Bandbox implements IdSpace { public final static String ON_SELECTED = "onSelected"; public final static String ON_DESELECTED = "onDeselected"; //Service ktera obsahuje potrebne metody pro funkci komponenty private AcbService service; private Paging paging1; private Paging paging2; private Listbox listbox; private final String ctrlKeys = "#down";//"#up#down#pgdn#pgup"; private final String listboxCtrlKeys = "#up#down#pgdn#pgup"; private ListModelList model = new ListModelList(); private Map paramsMap = new HashMap(0); //private Integer selectedItemIndex; private Long selectedIdValue; // Tento parametr umoznuje zadavat do boxu jakekoli string, nemusi byt najity v service private boolean freeform = false; private boolean autodrop = true; private int minSearchLength; public AutoComboBox(String value) throws WrongValueException { super(value); addEventListeners(); //this.setCtrlKeys(ctrlKeys); this.minSearchLength = 2; } public AutoComboBox() { this(""); } public void initialize(AcbService service) { Executions.createComponents(service.getZulFile(), this, paramsMap); //2. Wire variables (optional) ConventionWires.wireVariables(this, this, '$', true, true); //ignore zscript and variable resolvers for better performance (optional) //3. Wire event listeners (optional) ConventionWires.addForwards(this, this, '$'); listbox.setItemRenderer(service.getRenderer(paramsMap)); //listbox.setCtrlKeys(listboxCtrlKeys); setService(service); } /** * Podle id zadaneho objektu ho nastavi jako vybrany, pokud id = null vyber * se zrusi * * @param id */ public void setSelectedId(final Long id) { selectedIdValue = id; if (id != null) { String textValue = ""; model.clear(); model.add(service.findById(id)); textValue = service.getTextValue(id, getParamsMap()); this.setText(textValue); } else { this.setValue(""); } } /** * Vrati id vybrane polozky. Pokud neni zadna vybrana, vraci null * * @return String id nebo null */ public Long getSelectedId() { return selectedIdValue; } /** * Metoda prida EventListenery potrebne pro spravnou funkci komponenty Az po * vykresleni cele komponenty */ protected final void addEventListeners() { this.addEventListener(Events.ON_CREATE, new EventListener() { @Override public void onEvent(Event event) throws Exception { if (getFirstChild() != null) { Component comp = getFirstChild().getFellow("listbox"); if (comp instanceof Listbox) { listbox = (Listbox) comp; addEventListener(10000, Events.ON_CHANGING, changeListener); //addEventListener(Events.ON_CTRL_KEY, openOnKeyListener); addEventListener(Events.ON_OPEN, fillAllListener); addEventListener(Events.ON_BLUR, blurListener); //listbox.addEventListener(Events.ON_CTRL_KEY, focusListener); listbox.addEventListener(Events.ON_SELECT, onSelectListener); paging1.addEventListener(ZulEvents.ON_PAGING, pagingListener); paging2.addEventListener(ZulEvents.ON_PAGING, pagingListener); listbox.setModel(model); listbox.getModel().addListDataListener(heighListener); paging1.setPageSize(50); paging1.setActivePage(0); paging2.setPageSize(50); paging2.setActivePage(0); } } } }); } // Pokud komponenta ztrati focus EventListener pagingListener = new EventListener() { @Override public void onEvent(Event event) { //listbox.setSelectedIndex(0); //listbox.clearSelection(); PagingEvent pe = (PagingEvent) event; int activePage = pe.getActivePage(); paging1.setActivePage(activePage); paging2.setActivePage(activePage); AutoComboBox autocombobox = (AutoComboBox) event.getTarget().getParent().getParent(); model.clear(); model.addAll(service.findByKey(autocombobox.getValue(), paramsMap, getPagingFrom(), 50L)); Listitem topItem = listbox.getItemAtIndex(pe.getActivePage() * pe.getPageable().getPageSize()); Clients.scrollIntoView(topItem); } }; // Pokud komponenta ztrati focus EventListener blurListener = new EventListener() { @Override public void onEvent(Event event) { // pokud nebyla vybrana hodnota ze seznamu if (getSelectedId() == null) { // vymaze manualne zadanou hodnotu pokud nepouzivame freeform parametr (hodnota nebyla zadana vyberem z konkretniho zaznmu) if (freeform == false) { setValue(""); } Events.postEvent(AutoComboBox.ON_DESELECTED, listbox.getParent().getParent(), null); } } }; // Pokud prekroci pocet prvku urcity pocet, nastavi ce pevna vyska listboxu ListDataListener heighListener = new ListDataListener() { @Override public void onChange(ListDataEvent event) { // if (event.getIndex1() > 10) { // listbox.setHeight("300px"); // } else { // listbox.setHeight(null); // } listbox.invalidate(); } }; // Podle zadaneho klicoveho slova vyhleda v databazi a vysledky preda do komponenty EventListener changeListener = new EventListener() { @Override public void onEvent(Event event) throws Exception { InputEvent ie = (InputEvent) event; if (ie.isChangingBySelectBack() == false) { model.clear(); setOpen(false); Long totalCount = service.getTotalCount(ie.getValue(), paramsMap); updatePaginatorsTotalCount(totalCount); //listbox.invalidate(); if (autodrop && ie.getValue().length() > minSearchLength) { setOpen(true); model.addAll(service.findByKey(ie.getValue(), paramsMap, getPagingFrom(), 50L)); } else { setSelectedId(null); } listbox.invalidate(); } } }; // Pokud nejsou zadane zadne podminky vyhledavani, naplni komponentu celou kolekci vysledku EventListener fillAllListener = new EventListener() { @Override public void onEvent(Event event) throws Exception { OpenEvent oe = (OpenEvent) event; //if (oe.isOpen()) { //} else { Component comp = event.getTarget().getFirstChild().getFellowIfAny("listbox"); if (comp instanceof Listbox) { Listbox listbox = (Listbox) comp; if (listbox.getSelectedItem() != null) { // Zaslani nove udalosti o vyberu konkretniho zaznamu setSelectedId(Long.valueOf(listbox.getSelectedItem().getValue().toString())); Events.postEvent(AutoComboBox.ON_SELECTED, listbox.getParent().getParent(), null); } else { if (freeform == false) { setSelectedId(null); } } } } model.clear(); // Pri zmacknuti lupy se vzdy vyhleda vse if (oe.isOpen()) { model.addAll(service.findByKey("", paramsMap, getPagingFrom(), 50L)); setText(""); Long totalCount = service.getTotalCount("", paramsMap); updatePaginatorsTotalCount(totalCount); } listbox.invalidate(); } }; /** * Metoda updatuje celkovy pocet polozek v paginatoru * @param totalCount * @throws WrongValueException */ private void updatePaginatorsTotalCount(Long totalCount) throws WrongValueException { paging1.setTotalSize(totalCount.intValue()); paging2.setTotalSize(totalCount.intValue()); paging1.setActivePage(0); paging2.setActivePage(0); paging1.invalidate(); paging2.invalidate(); } // Tento listener slouzi ke zmene focusu na popup list box pri zmacknuti definovanych klaves EventListener focusListener = new EventListener() { @Override public void onEvent(Event event) throws Exception { Listbox listbox = (Listbox) event.getTarget(); //listbox.setSelectedIndex(0); listbox.setFocus(true); } }; // Tento listener vybere na klik hodnotu ze seznamu EventListener onSelectListener = new EventListener() { @Override public void onEvent(Event event) throws Exception { Listbox listbox = (Listbox) event.getTarget(); setOpen(false); Events.sendEvent(new OpenEvent(Events.ON_OPEN, listbox.getParent().getParent(), false)); } }; // Logika pro otevreni klavesou DOWN EventListener openOnKeyListener = new EventListener() { @Override public void onEvent(Event event) throws Exception { KeyEvent keyEvent = (KeyEvent) event; if (keyEvent.getKeyCode() == keyEvent.DOWN) { AutoComboBox autoCompBox = (AutoComboBox) keyEvent.getTarget(); Object object = autoCompBox.getFirstChild().getFellowIfAny("listbox"); if (object instanceof Listbox) { Listbox listbox = (Listbox) object; model.clear(); setOpen(false); listbox.setFocus(true); //listbox.invalidate(); if (autodrop) { setOpen(true); model.addAll(service.findByKey(autoCompBox.getValue(), paramsMap, getPagingFrom(), 50L)); } //listbox.invalidate(); } } } }; // Logika pro funkci navigace pomoci klaves UP,DOWN,PAGE_UP, PAGE_DOWN EventListener navigationListener = new EventListener() { @Override public void onEvent(Event event) throws Exception { KeyEvent keyEvent = (KeyEvent) event; AutoComboBox autoCompBox = (AutoComboBox) keyEvent.getTarget(); Object object = autoCompBox.getFirstChild().getFellowIfAny("listbox"); if (object instanceof Listbox) { Listbox listbox = (Listbox) object; int selectedIndex = listbox.getSelectedIndex(); if (listbox.getItemCount() > 0) { autoCompBox.setOpen(true); /* int pageSize = 20; switch(keyEvent.getKeyCode()) { case KeyEvent.UP: selectIndex(listbox, selectedIndex - 1, autoCompBox); break; case KeyEvent.DOWN: selectIndex(listbox, selectedIndex + 1, autoCompBox); break; case KeyEvent.PAGE_UP: selectIndex(listbox, selectedIndex - pageSize, autoCompBox); break; case KeyEvent.PAGE_DOWN: selectIndex(listbox, selectedIndex + pageSize, autoCompBox); break; } */ } else if (keyEvent.getKeyCode() == keyEvent.DOWN) { model.clear(); setOpen(false); //listbox.invalidate(); if (autodrop) { setOpen(true); model.addAll(service.findByKey(autoCompBox.getValue(), paramsMap, getPagingFrom(), 50L)); } else { setSelectedId(null); } listbox.invalidate(); } } } }; private void selectIndex(Listbox listbox, int index, AutoComboBox acb) { int count = listbox.getItemCount(); if (index < 0) index = 0; if (index >= count) index = count-1; listbox.setSelectedIndex(index); // if (acb != null && listbox.getSelectedItem().getValue() != null) { // acb.setText(service.getTextValue((Long) listbox.getSelectedItem().getValue(), paramsMap)); // } } public AcbService getService() { return service; } public void setService(AcbService service) { this.service = service; } public Map getParamsMap() { return paramsMap; } /** * Metoda umozni nastavit paramatery, ktere se daji vyuzit v service pro * Autocombobox * * @param paramsMap */ public void setParamsMap(Map paramsMap) { this.paramsMap = paramsMap; } public void setParams(String params) { String[] paramsArray = params.split(","); Map map = getParamsMap(); for (String param : paramsArray) { String[] split = param.split("="); map.put(split[0], split[1]); } setParamsMap(map); } public void setParam(String key, String value) { getParamsMap().put(key, value); } public void setParam(String key, Object value) { getParamsMap().put(key, value); } public boolean getFreeform() { return freeform; } /** * Tento parametr umoznuje zadavat do boxu jakekoli string, nemusi byt * nalezen skrz sluzbu(service) * * @param freeform */ public void setFreeform(boolean freeform) { this.freeform = freeform; } public int getMinSearchLength() { return minSearchLength; } public void setMinSearchLength(int minSearchLength) { this.minSearchLength = minSearchLength; } public Listbox getListbox() { return listbox; } public void setListbox(Listbox listbox) { this.listbox = listbox; } private Long getPagingFrom() { int activePage = paging1.getActivePage(); int pageSize = paging1.getPageSize(); int from = activePage * pageSize; return (long) from; } }