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

PropertyAdmin

289DavidTRegenstrief149.163.158.17930gii29Dec 10, 2016 12:02:53 AMlink

resources

index.zulzul<zk> <window title="hello" apply="pkg$.PropertyValueController" height="600px"> <div>Welcome to ZK Fiddle , run it right now!</div> <!-- <borderlayout> <north> --> <groupbox id="propertyValueGroup" style="background-color:#e6ffe6;margin:20px" height="100%"> <button id="create_property_value" label="Create Prop Value"/> <caption label="Property Values" /> <grid id="propertyValueGrid" height="100%" model="${$composer.propertyValueModel}"> <custom-attributes org.zkoss.zul.grid.rod="true"/> <columns> <column label="Name" /> <column label="Entity Value" /> <column label="Entity Id" /> <column label="Value" /> <column label="Id"/> <column label="Action" /> </columns> <template name="model"> <row popup="detail_${each.propertyValueId}" style="cursor:pointer" value="${each}"> <div> <label value="${each.propertyName}"/> <popup id="detail_${each.propertyValueId}"> <include src="propertyValueDetail.zul" propertyValue="${each}" callingController="${$composer}"/> </popup> <!-- --> </div> <label value="${each.propertyName}"/> <label value="${each.propertyEntityValue}"/> <label value="${each.propertyEntityId}"/> <label value="${each.propertyValue}"/> <label value="${each.propertyValueId}"/> <a label="delete" onClick="$composer.deletePV(curPV)"> <custom-attributes curPV="${each}"/> </a> </row> </template> </grid> </groupbox> <!-- </north> <center> <hlayout> <groupbox id="propertyDefinitionGroup" height="400px" style="background-color:#e6ffe6;"> <button id="create_property_def" label="Create Property Definition"/> <caption label="Property Definitions" /> <hlayout height="380px"> <grid id="propertyDefGrid" vflex="1" hflex="1" model="${$composer.propertyDefModel}"> <custom-attributes org.zkoss.zul.grid.rod="true"/> <columns> <column label="Name" /> <column label="Entity Value" /> <column label="Entity Id" /> <column label="Value" /> <column label="Action" /> </columns> <template name="model"> <row> <a label="${each.propertyName}"/> <label value="${each.propertyEntityValue}"/> <label value="${each.propertyEntityId}"/> <label value="${each.propertyValue}"/> <a id="${each.propertyName}" label="delete"/> </row> </template> </grid> </hlayout> </groupbox> <groupbox id="propertyAttrValueGroup" height="400px" style="background-color:#e6ffe6;"> <button id="create_property_entity" label="Create Prop Entity"/> <caption label="Property Entities" /> <hlayout height="380px"> <grid id="packageBuildGrid" vflex="1" hflex="1" model="${$composer.propertyEntityModel}"> <custom-attributes org.zkoss.zul.grid.rod="true"/> <columns> <column label="Name" /> <column label="Entity Value" /> <column label="Entity Id" /> <column label="Value" /> <column label="Action" /> </columns> <template name="model"> <row> <a label="${each.propertyName}"/> <label value="${each.propertyEntityValue}"/> <label value="${each.propertyEntityId}"/> <label value="${each.propertyValue}"/> <a id="${each.propertyName}" label="delete"/> </row> </template> </grid> </hlayout> </groupbox> </hlayout> </center> </borderlayout> --> </window> </zk> PropertyValueController.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 java.util.List; import java.util.Date; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.util.HashMap; public class PropertyValueController extends GenericForwardComposer{ PropertyValue[] pv = new PropertyValue[] { // propertyName, EntityValue, EntityId, EntityValueSysId, Value, appInstance, multiValuedSeqNum, createDate, updateDate) new PropertyValue("CDS.PACKAGE_BUILD_REF", "1" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()), new PropertyValue("CDS.PACKAGE_BUILD_REF", "2" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()), new PropertyValue("CDS.PACKAGE_BUILD_REF", "3" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()), new PropertyValue("CDS.PACKAGE_BUILD_REF", "4" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()), new PropertyValue("CDS.PACKAGE_BUILD_REF", "5" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()), new PropertyValue("CDS.PACKAGE_BUILD_REF", "6" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()), new PropertyValue("CDS.PACKAGE_BUILD_REF", "7" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()), new PropertyValue("CDS.PACKAGE_BUILD_REF", "8" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()), new PropertyValue("CDS.PACKAGE_BUILD_REF", "9" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()), new PropertyValue("CDS.PACKAGE_BUILD_REF", "10" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()) }; // PropertyDefinition[] pd = new PropertyDefinition[] { // new PropertyDefinition("CDS.PACKAGE_BUILD_REF", "1" , 800, 1, "RENAL_STUDY", null, 0, new Date(), new Date()) // }; // // PropertyEntity[] pe = new PropertyEntity[] { // new PropertyEntity("CDS.PACKAGE_BUILD_REF", "1" , 800, 1, "RENAL_STUDY", null, 0, new Date(), new Date()) // }; List<PropertyValue> pvList = new ArrayList<PropertyValue>(Arrays.asList(pv)); List<String> pvIDList = new ArrayList<String>(); Groupbox propertyValueGroup; Grid propertyValueGrid; Component mainComp = null; public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); mainComp = comp; for ( PropertyValue pv : pvList) { String pvID = pv.getPropertyValueId(); pvIDList.add(pvID); } } public void onClick$btn(Event e) throws InterruptedException{ Messagebox.show("Hi btn"); } public ListModel<PropertyValue> getPropertyValueModel() { return new SimpleListModel(pvList); } public void onClick$create_property_value(Event event) { Map<String, Object> args = new HashMap<String,Object>(); PropertyValue newPV = new PropertyValue(); newPV.setPropertyName("CDS.PACKAGE_BUILD_REF"); newPV.setPropertyEntityId(100); newPV.setPropertyEntityValueSystem("Local"); newPV.setApplicationInstance("Test App"); newPV.setMultiValuedSequenceNumber(1); args.put("callingController", this); args.put("propertyValue", newPV); // args.put("propDefName", "CDS.PACKAGE_BUILD_REF"); // args.put("propValue", ""); // args.put("propEntityId", 100); // args.put("propEntityValue", ""); // args.put("propEntityValueSys", "Local"); // args.put("appInstance", "Test App"); // args.put("multiValueSeq", 1); Window window = (Window)Executions.createComponents("propertyValueDetail.zul", null, args); window.doModal(); } public void addPV(PropertyValue newPV) { //showBox("addPV"); if (! pvIDList.contains(newPV.getPropertyValueId()) ) { pvList.add(newPV); pvIDList.add(newPV.getPropertyValueId()); } refreshGrid(); } public void refreshGrid() { propertyValueGrid.setModel(getPropertyValueModel()); propertyValueGrid.renderAll(); } public void showBox(String message) { Messagebox.show(message); } public void deletePV(PropertyValue pv) { //ForwardEvent event) { // A a = (A)event.getOrigin().getTarget(); // Row row = (Row)a.getParent(); // PropertyValue pv = (PropertyValue) row.getValue(); showBox("Deleteing PV: " + pv.getPropertyValueId()); confirmDelete(pv, new EventListener<Event>() { public void onEvent(Event evt) { if ( evt.getName().equals(Messagebox.ON_YES) ) { String pvID = pv.getPropertyValueId(); pvList.remove(pv); pvIDList.remove(pvID); refreshGrid(); } } }); } } public boolean confirmDelete(PropertyValue pv, EventListener<Event> evtListener) { Messagebox.show("Are you sure you want to delete\n"+ pv.getPropertyValueId(), "Confirm Delete", Messagebox.YES | Messagebox.NO, Messagebox.QUESTION, evtListener); } // public ListModel<PropertyValue> getPropertyDefModel() { // return new SimpleListModel(pd); // } // // public ListModel<PropertyValue> getPropertyEntityModel() { // return new SimpleListModel(pe); // } } PropertyValue.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 java.util.Date; public class PropertyValue { //extends ModelBase<PropertyValue> { private String propertyName = null; private int propertyEntityId = 0; private String propertyEntityValue = null; private String applicationInstance = null; private int multiValuedSequenceNumber = 0; private Date createDate = null; private Date updateDate = null; private String propertyValue = null; private String propertyEntityValueSystem = "Local"; public PropertyValue() { } public PropertyValue(final PropertyValue pv2) { if (pv2 == null) { return; } setPropertyName(pv2.getPropertyName()); setPropertyEntityId(pv2.getPropertyEntityId()); setPropertyEntityValue(pv2.getPropertyEntityValue()); setApplicationInstance(pv2.getApplicationInstance()); setMultiValuedSequenceNumber(pv2.getMultiValuedSequenceNumber()); setCreateDate(pv2.getCreateDate()); setUpdateDate(pv2.getUpdateDate()); setPropertyValue(pv2.getPropertyValue()); } public PropertyValue(String propertyName, String propertyEntityValue, int propertyEntityId, String propertyEntityValueSystem, String propertyValue, String applicationInstance, int multiValuedSequenceNumber, Date createDate, Date updateDate) { this.propertyName = propertyName; this.propertyEntityValue = propertyEntityValue; this.propertyEntityValueSystem = propertyEntityValueSystem; this.propertyEntityId = propertyEntityId; this.propertyValue = propertyValue; this.applicationInstance = applicationInstance; this.multiValuedSequenceNumber = multiValuedSequenceNumber; this.createDate = createDate; this.updateDate = updateDate; } public String getPropertyName() { return this.propertyName; } /** * @param propertyName * the propertyName to set */ public void setPropertyName(final String propertyName) { this.propertyName = propertyName; } /** * @return the propertyEntityId */ public int getPropertyEntityId() { return this.propertyEntityId; } /** * @param propertyEntityId * the propertyEntityId to set */ public void setPropertyEntityId(final int propertyEntityId) { this.propertyEntityId = propertyEntityId; } /** * @return the propertyEntityValue */ public String getPropertyEntityValue() { return getPropertyEntityValueCode(); } /** * @return the propertyEntityValueCode */ public String getPropertyEntityValueCode() { return this.propertyEntityValue; } /** * @param propertyEntityValue * the propertyEntityValue to set */ public void setPropertyEntityValue(final String propertyEntityValue) { setPropertyEntityValueCode(propertyEntityValue); } /** * @param propertyEntityValueCode * the propertyEntityValueCode to set */ public void setPropertyEntityValueCode(final String propertyEntityValueCode) { this.propertyEntityValue = propertyEntityValueCode; } /** * @return the institutionId */ public String getPropertyEntityValueSystem() { return this.propertyEntityValueSystem; } /** * @param propertyEntityValueSysId * the propertyEntityValueSysId to set */ public void setPropertyEntityValueSystem(final String propertyEntityValueSystem) { this.propertyEntityValueSystem = propertyEntityValueSystem; } /** * @return the applicationInstance */ public String getApplicationInstance() { return this.applicationInstance; } /** * @param applicationInstance * the applicationInstance to set */ public void setApplicationInstance(final String applicationInstance) { this.applicationInstance = applicationInstance; } /** * @return the multiValuedSequenceNumber */ public int getMultiValuedSequenceNumber() { return this.multiValuedSequenceNumber; } /** * @param multiValuedSequenceNumber * the multiValuedSequenceNumber to set */ public void setMultiValuedSequenceNumber(final int multiValuedSequenceNumber) { this.multiValuedSequenceNumber = multiValuedSequenceNumber; } /** * @return the createDate */ public Date getCreateDate() { return this.createDate; } /** * @param d * the createDate to set */ public void setCreateDate(final Date d) { this.createDate = d; } /** * @return the updateDate */ public Date getUpdateDate() { return this.updateDate; } /** * @param updateDate * the updateDate to set */ public void setUpdateDate(final Date updateDate) { this.updateDate = updateDate; } /** * @return the propertyValue */ public String getPropertyValue() { return this.propertyValue; } /** * @param propertyValue * the propertyValue to set */ public void setPropertyValue(final String propertyValue) { this.propertyValue = propertyValue; } public PropertyValue copy() { return new PropertyValue(this); } public String getPropertyValueId() { return String.format("%s_%s_%s_%s", propertyName, propertyValue, propertyEntityId, propertyEntityValue); // return String.format("%s", propertyEntityValue); } } propertyValueDetail.zulzul<zk> <window id="propertyDetailDlg" border="normal" title="hello" apply="pkg$.PropertyValueDetail" width="300px" height="600px"> <!-- <div width="300px" height="400px"> --> <custom-attributes callingController="${arg.callingController}" if="${empty(callingController)}"/> <custom-attributes propertyValue="${arg.propertyValue}" if="${empty(propertyValue)}"/> <div>Welcome to ZK Fiddle , run it right now!</div> <vlayout > <grid> <columns/> <rows> <row> <cell><label value="Name" tooltip="Property Definition Name"/></cell> <cell><textbox id="property_def_name" value="${propertyValue.propertyName}"/></cell> </row> <row > <cell><label value="Value" tooltip="Property Value"/></cell> <cell><textbox id="property_value" value="${propertyValue.propertyValue}"/></cell> </row> <row > <cell><label value="Entity ID" tooltip="Property Entity ID e.g., 100,800, etc."/></cell> <cell><textbox id="property_entity_id" value="${propertyValue.propertyEntityId}"/></cell> </row> <row> <cell><label value="Entity Value" tooltip="Property Entity Value, e.g., user name, location name, org."/></cell> <cell><textbox id="property_entity_value" value="${propertyValue.propertyEntityValue}"/></cell> </row> <row> <cell><label value="Entity Value System" tooltip="Property Value System, e.g., 1"/></cell> <cell><textbox id="property_entity_value_system" value="${propertyValue.propertyEntityValueSystem}"/></cell> </row> <row> <cell><label value="Application Instance" tooltip="Application Instance (name of application - allows properties unique to an application instance."/> </cell> <cell><textbox id="app_instance" value="${propertyValue.applicationInstance}"/></cell> </row> <row> <cell><label value="Multiple Value Sequence" tooltip="Multiple Value Sequence, some property values can be multi-row, in those cases unique sequence value is required."/> </cell> <cell><textbox id="multiple_value_sequence" value="${propertyValue.multiValuedSequenceNumber}"/></cell> </row> </rows> </grid> <hlayout> <button id="saveBtn" label="Save" onClick="propertyDetailDlg$composer.savePV()"/> <a id="cancelBtn" label="cancel" onClick="propertyDetailDlg$composer.closeDlg()"/> </hlayout> </vlayout> <!-- </div> --> </window> </zk> PropertyValueDetail.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 java.util.Date; public class PropertyValueDetail extends GenericForwardComposer{ Textbox property_def_name; Textbox property_value; Textbox property_entity_id; Textbox property_entity_value; Textbox property_entity_value_system; Textbox app_instance; Textbox multiple_value_sequence; PropertyValueController callingController; PropertyValue newPV; Component mainComp = null; public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); this.mainComp = comp; this.callingController = (PropertyValueController) arg.get("callingController"); // if ( ! arg.containsKey("propDefName") ) { // if ( newPV != null ) { // callingController.showBox("arg doesn't contain key so setting directly from newPV"); // property_def_name.setValue(newPV.getPropertyName()); // property_value.setValue(newPV.getPropertyValue()); // property_entity_id.setValue(String.valueOf(newPV.getPropertyEntityId())); // property_entity_value.setValue(newPV.getPropertyEntityValue()); // property_entity_value_system.setValue(newPV.getPropertyEntityValueSysId()); // app_instance.setValue(newPV.getApplicationInstance()); // multiple_value_sequence.setValue(String.valueOf(newPV.getMultiValuedSequenceNumber())); // } else { // callingController.showBox("arg doesn't contain key but newPV is null"); // } // } else { // callingController.showBox("arg doesn't contain key but newPV is null"); // } } public void savePV() { newPV = new PropertyValue( property_def_name.getValue(), property_entity_value.getValue(), Integer.parseInt(property_entity_id.getValue()), property_entity_value_system.getValue(), property_value.getValue(), app_instance.getValue(), Integer.parseInt(multiple_value_sequence.getValue()), new Date(), new Date()); if ( callingController != null ) { callingController.addPV(newPV); } } public void setNewPV(PropertyValue newPV) { this.newPV = newPV; } public void closeDlg() { if ( callingController != null ) { callingController.refreshGrid(); } } }