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 :

Another new ZK fiddle

2guest172.71.134.130218n5u0Apr 25, 2024 10:30:00 AMlink

Another new ZK fiddle

1guest172.71.134.130218n5u0Apr 25, 2024 10:29:38 AMlink

Barcodescanner use in Modal Window

8guest162.158.95.20135ck08dApr 25, 2024 10:26:46 AMlink

Barcodescanner use in Modal Window

7guest162.158.95.20235ck08dApr 25, 2024 10:25:21 AMlink

Barcodescanner use in Modal Window

6guest162.158.95.20235ck08dApr 25, 2024 10:24:03 AMlink

Barcodescanner use in Modal Window

5guest162.158.95.20135ck08dApr 25, 2024 10:21:42 AMlink

Barcodescanner use in Modal Window

4guest162.158.95.20235ck08dApr 25, 2024 10:21:03 AMlink

Barcodescanner use in Modal Window

3guest162.158.95.20135ck08dApr 25, 2024 10:20:28 AMlink

Barcodescanner use in Modal Window

2guest162.158.95.20135ck08dApr 25, 2024 10:16:41 AMlink

Barcodescanner use in Modal Window

1guest172.70.251.13335ck08dApr 25, 2024 10:04:09 AMlink

onBlur Event Order

10FENE162.158.94.443vfa3e3May 11, 2020 1:15:01 PMlink

resources

index.zulzul<?component name="customListbox" class="pkg$.CustomListbox"?> <zk> <window border="normal" title="hello" apply="pkg$.TestComposer"> <textbox id="inp" /> <customListbox id="listi"> <listitem height="28px"> <listcell label="ZK Jet 0.8.0 is released" /> <listcell label="2008/11/17 17:41:29" /> </listitem> <listitem height="28px"> <listcell label="URLs for iPhone-Optimized Google Sites" /> <listcell label="2008/11/17 15:56:37" /> </listitem> </customListbox> </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.*; import org.zkoss.zk.ui.select.annotation.Wire; import java.util.List; import java.util.ArrayList; import java.lang.InterruptedException; import java.lang.Thread; public class TestComposer extends GenericForwardComposer{ private @Wire Listbox listi; public void doAfterCompose(Component comp) throws Exception { List<String> modelElements = new ArrayList<>(); super.doAfterCompose(comp); this.listi.getChildren().forEach(child -> { child.getChildren().forEach(ce -> { if(ce instanceof Listcell) { Listcell cell = (Listcell) ce; modelElements.add(cell.getLabel()); } }); }); ListModel<String> model = new ListModelList(modelElements); listi.setModel(model); } public void onBlur$inp(Event e){ this.refresh(); } public void onSelect$listi(Event e){ int index = this.listi.getSelectedIndex(); this.log("selected index: " + index); } public void log(String msg) { Clients.log(msg); } public void refresh() { this.listi.setModel(getModel(this.listi)); } private ListModelList getModel(Listbox box) { ListModel<String> lm = box.getModel(); return ((ListModelList) lm); } } CustomListbox.javajavaimport java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import 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.*; import org.zkoss.zul.event.*; public class CustomListbox extends Listbox{ private Map<String, Integer> previousUUIDMap = new HashMap<>(); private String previousSelectedUUID = null; @Override public void setModel(ListModel<?> model) { if(model != null){ // our listener must go first model.addListDataListener(new ListDataListener() { @SuppressWarnings("boxing") @Override public void onChange(ListDataEvent event) { if (event.getType() == ListDataEvent.CONTENTS_CHANGED) { Clients.log("Contents Changed fired"); List<Listitem> items = getItems(); previousUUIDMap.clear(); for(Listitem item : items) { previousUUIDMap.put(item.getUuid(), item.getIndex()); } } } }); } List<Listitem> items = getItems(); previousUUIDMap.clear(); for(Listitem item : items) { previousUUIDMap.put(item.getUuid(), item.getIndex()); } super.setModel(model); } @Override public void service(AuRequest request, boolean everError) { if (Events.ON_SELECT.equals(request.getCommand())) { if (request.getData().containsKey("items")) { List<String> items = (List<String>) request.getData().get("items"); if (items.size() == 1) { this.previousSelectedUUID = items.get(0); Clients.log("previous UUID: " + this.previousSelectedUUID); } else { // multiselect this.previousSelectedUUID = null; } } } super.service(request, everError); } @Override public void service(Event event, Scope scope) throws Exception { if (event instanceof SelectEvent<?, ?>) { SelectEvent<?, ?> selectEvent = (SelectEvent<?, ?>) event; // no item selected, may be Event bug if (selectEvent.getSelectedItems().isEmpty()) { List<Listitem> items = getItems(); if (this.previousSelectedUUID != null && this.previousUUIDMap.containsKey(this.previousSelectedUUID)) { int index = this.previousUUIDMap.get(this.previousSelectedUUID).intValue(); if (items.size() > index) { ListModelList<Object> model = (ListModelList<Object>) getModel(); ArrayList<Object> selection = new ArrayList<>(); selection.add(model.getElementAt(index)); model.setSelection(selection); Clients.log("restored index: " + index); } } } } super.service(event, scope); } }