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

2guest172.68.79.1571ohv32cAug 2, 2021 7:41:14 AMlink

resources

index.zulzul<zk>     <div apply="demo.app.zk_calendar.CalendarController">         <hlayout valign="middle">             <button id="today" label="Today" />             <button id="prev" iconSclass="z-icon-arrow-left"/>             <button id="next" iconSclass="z-icon-arrow-right"/>             <separator width="50px" />             <button id="pageDay" label="Day" width="60px" />             <button id="pageWeek" label="Week" width="60px"/>             <button id="pageMonth" label="Month" width="60px"/>             <separator width="50px"/>             Filter :             <textbox id="filter"/>             <button id="applyFilter" label="Apply"/>             <button id="resetFilter" label="Reset"/>         </hlayout>         <separator bar="true" height="20px"/>         <calendars id="calendars" firstDayOfWeek="Sunday" height="600px" timeZone="Main=GMT+0" mold="month"/>     </div>       <!-- Create/Update Event Popup -->     <include src="calendar_editor.zul" /> </zk>TestComposer.javajavaimport java.util.Calendar; import java.util.TimeZone; import org.zkoss.calendar.CalendarWebAppInit; import org.zkoss.calendar.Calendars; import org.zkoss.calendar.event.CalendarsEvent; import org.zkoss.web.fn.ServletFns; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.annotation.Listen; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zk.ui.sys.PageCtrl; import org.zkoss.zkmax.ui.select.annotation.Subscribe; import org.zkoss.zul.Style; import org.zkoss.zul.Textbox; import org.zkoss.zul.theme.Themes; import javax.servlet.ServletException; public class TestComposer extends SelectorComposer<Component> { private static final long serialVersionUID = 1L; @Wire private Calendars calendars; @Wire private Textbox filter; private DemoCalendarModel calendarModel; //the in editing calendar ui event private CalendarsEvent calendarsEvent = null; @Override public void doAfterCompose(Component comp) throws Exception { overrideCalendarTheme(comp); super.doAfterCompose(comp); calendarModel = new DemoCalendarModel(new DemoCalendarData().getCalendarEvents()); calendars.setModel(this.calendarModel); } /** * TODO: remove workaround once https://tracker.zkoss.org/browse/ZK-4771 is available and zk-calendar supports it */ private void overrideCalendarTheme(Component comp) throws ServletException { String uri = CalendarWebAppInit.getCalendarThemeURI(Themes.getCurrentTheme()); new Style(uri).setPage(comp.getPage()); } //control the calendar position @Listen("onClick = #today") public void gotoToday(){ TimeZone timeZone = calendars.getDefaultTimeZone(); calendars.setCurrentDate(Calendar.getInstance(timeZone).getTime()); } @Listen("onClick = #next") public void gotoNext(){ calendars.nextPage(); } @Listen("onClick = #prev") public void gotoPrev(){ calendars.previousPage(); } //control page display @Listen("onClick = #pageDay") public void changeToDay(){ calendars.setMold("default"); calendars.setDays(1); } @Listen("onClick = #pageWeek") public void changeToWeek(){ calendars.setMold("default"); calendars.setDays(7); } @Listen("onClick = #pageMonth") public void changeToYear(){ calendars.setMold("month"); } //control the filter @Listen("onClick = #applyFilter") public void applyFilter(){ calendarModel.setFilterText(filter.getValue()); calendars.setModel(calendarModel); } @Listen("onClick = #resetFilter") public void resetFilter(){ filter.setText(""); calendarModel.setFilterText(""); calendars.setModel(calendarModel); } //listen to the calendar-create and edit of a event data @Listen(CalendarsEvent.ON_ITEM_CREATE + " = #calendars; " + CalendarsEvent.ON_ITEM_EDIT + " = #calendars") public void createEvent(CalendarsEvent event) { calendarsEvent = event; //to display a shadow when editing calendarsEvent.stopClearGhost(); DemoCalendarEvent data = (DemoCalendarEvent)event.getCalendarItem(); if(data == null) { data = new DemoCalendarEvent(); data.setHeaderColor("#3366ff"); data.setContentColor("#6699ff"); data.setBeginDate(event.getBeginDate()); data.setEndDate(event.getEndDate()); } else { data = (DemoCalendarEvent) event.getCalendarItem(); } //notify the editor QueueUtil.lookupQueue().publish( new QueueMessage(QueueMessage.Type.EDIT,data)); } //listen to the calendar-update of event data, usually send when user drag the event data @Listen(CalendarsEvent.ON_ITEM_UPDATE + " = #calendars") public void updateEvent(CalendarsEvent event) { DemoCalendarEvent data = (DemoCalendarEvent) event.getCalendarItem(); data.setBeginDate(event.getBeginDate()); data.setEndDate(event.getEndDate()); calendarModel.update(data); } //listen to queue message from other controller @Subscribe(value = QueueUtil.QUEUE_NAME) public void handleQueueMessage(Event event) { if(!(event instanceof QueueMessage)) { return; } QueueMessage message = (QueueMessage)event; switch(message.getType()){ case DELETE: calendarModel.remove((DemoCalendarEvent)message.getData()); //clear the shadow of the event after editing calendarsEvent.clearGhost(); calendarsEvent = null; break; case OK: if (calendarModel.indexOf((DemoCalendarEvent)message.getData()) >= 0) { calendarModel.update((DemoCalendarEvent)message.getData()); } else { calendarModel.add((DemoCalendarEvent)message.getData()); } case CANCEL: //clear the shadow of the event after editing calendarsEvent.clearGhost(); calendarsEvent = null; break; } } } calendar_editor.zul.zulzul<div viewModel="@id('vm') @init('demo.app.zk_calendar.CalendarEditorViewModel')" validationMessages="@id('vmsgs')">     <window title="Create Calendar Event" border="normal" width="400px"         form="@id('fx') @load(vm.calendarEvent) @save(vm.calendarEvent, before='ok') @validator(vm.dateValidator)"         allDay="@ref(vm.isAllDay(fx.beginDate,fx.endDate))"         mode="popup" visible="@load(vm.visible)" position="center,center" >         <vlayout hflex="1">             <hlayout valign="middle">                 Lock this event : <checkbox checked="@bind(fx.locked)" />                 All Day: <checkbox checked="@load(allDay)" disabled="true" />             </hlayout>             <grid hflex='1'>                 <columns>                     <column width="100px" align="right" />                     <column />                 </columns>                 <rows>                     <row>                         BeginDate:                         <div>                             <datebox hflex="1" locale="en" timeZone="GMT+0"                                 format="@load(allDay ? 'long' : 'long+medium')"                                 value="@bind(fx.beginDate)" errorMessage="@load(vmsgs.beginDate)" />                         </div>                     </row>                     <row>                         EndDate:                         <div>                             <datebox hflex="1" locale="en" timeZone="GMT+0"                                 format="@load(allDay ? 'long' : 'long+medium')"                                 value="@bind(fx.endDate)" errorMessage="@load(vmsgs.endDate)"/>                         </div>                     </row>                     <row>                         Color:                         <hlayout valign="middle">                             Border <colorbox value="@bind(fx.headerColor)" />                             Content <colorbox value="@bind(fx.contentColor)" />                         </hlayout>                               </row>                     <row>                         Title:                         <textbox multiline="true" rows="3" width="97%"                             value="@bind(fx.content)" />                     </row>                     <row>                         <cell colspan="2" style="text-align:center;">                             <hlayout>                                 <button label="OK" onClick="@command('ok')" width="80px" />                                 <button label="Cancel" onClick="@command('cancel')" width="80px" />                                 <button label="Delete" onClick="@command('delete')" width="80px" />                             </hlayout>                         </cell>                     </row>                 </rows>             </grid>         </vlayout>     </window> </div>QueueMessage.javajava import org.zkoss.zk.ui.event.Event;   public class QueueMessage extends Event {     private static final long serialVersionUID = 1L;       static public enum Type {         EDIT, OK, DELETE, CANCEL;     }           private Type type;     private Object data;           public QueueMessage(Type type) {         super("onCalendarMessage");         this.type = type;     }     public QueueMessage(Type type, Object data) {         this(type);         this.data = data;     }       public Type getType() {         return type;     }       public Object getData() {         return data;     } }