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 :

font awesome effects

1guest172.68.225.68aheacJul 26, 2024 7:24:57 AMlink

Chosenbox sample Test

20guest172.70.47.72j0jobjJul 25, 2024 10:24:34 AMlink

Another new ZK fiddle

9guest172.69.134.163gqb6ujJul 24, 2024 2:37:47 PMlink

Another new ZK fiddle

8guest172.71.154.152gqb6ujJul 24, 2024 2:36:24 PMlink

Another new ZK fiddle

7guest172.71.158.254gqb6ujJul 24, 2024 2:34:45 PMlink

Another new ZK fiddle

6guest172.71.158.254gqb6ujJul 24, 2024 2:34:40 PMlink

Another new ZK fiddle

5guest172.71.159.2gqb6ujJul 24, 2024 2:33:44 PMlink

Another new ZK fiddle

4guest172.71.159.2gqb6ujJul 24, 2024 2:33:03 PMlink

Another new ZK fiddle

3guest162.158.167.14gqb6ujJul 24, 2024 2:31:28 PMlink

Another new ZK fiddle

2guest162.158.167.14gqb6ujJul 24, 2024 2:31:18 PMlink

Another new ZK fiddle

5guest162.158.22.1542stdj2aDec 8, 2023 7:33:45 AMlink

resources

index.zulzul<?link rel="stylesheet" type="text/css" href="main.css"?> <?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?> <zk> <window border="normal" title="hello"> <div apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('pkg$.TestComposer')"> <div fulfill="self.onCreate"> <div> <button zclass="notification-button notification-button-horizontal" label="delete all" onClick="@command('deleteAllNotifications')"/> <button zclass="notification-button notification-button-horizontal" label="mark all as read" onClick="@command('markAsReadAllNotifications')" /> </div> <vlayout children="@load(vm.notifications)" sclass="notificationsList"> <template name="children" var="data"> <div sclass="notificationsList-wrapper"> <div sclass="@load(c:cat('notificationsList-item-event ', data.isUnread() ? 'notificationsList-item-event-unread' : ''))"> <label value="@load(data.title))"/> <div sclass="notificationsList-icon"> <image src="@load(data.isUnread() ? 'check.jpg' : 'cross.jpg'))" onClick="@command('notificationAction', notification=data)" tooltiptext="@load(data.isUnread() ? 'Mark as read' : 'Delete'))"/> </div> </div> <div sclass="notificationsList-description"> <label multiline="true" value="@load(data.description)"/> </div> <div sclass="notificationsList-date"> <label value="@load(data.date)"/> </div> </div> </template> </vlayout> <div style="height: 56px;"> <button zclass="notification-button notification-button-vertical" label="Show All" onClick="@command('showAllNotifications')"/> <button zclass="notification-button notification-button-vertical" label="Manage All" onClick="@command('manageNotifications')"/> </div> </div> </div> </window> </zk> TestComposer.javajava import org.zkoss.bind.annotation.*; import org.zkoss.util.resource.Labels; import org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.select.Selectors; import org.zkoss.zk.ui.select.annotation.VariableResolver; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zk.ui.select.annotation.WireVariable; import org.zkoss.zk.ui.sys.WebAppCtrl; import org.zkoss.zkplus.spring.DelegatingVariableResolver; import org.zkoss.zul.Div; import org.zkoss.zul.Label; import org.zkoss.zul.Popup; 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.zk.ui.*; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.select.Selectors; import org.zkoss.zk.ui.select.annotation.VariableResolver; import java.util.*; public class TestComposer { private final List<Notification> notifications; public TestComposer() { this.notifications = new ArrayList<Notification>(); for (int i = 0; i < 20; i++) { Notification n = new Notification(); n.title = "Title " + i; n.description = "Notification " + i; n.date = new Date(); this.notifications.add(n); } } @org.zkoss.bind.annotation.AfterCompose public void afterCompose(@ContextParam(ContextType.VIEW) final Component view) { Selectors.wireComponents(view, this, false); } @Command("notificationCountChange") @NotifyChange("notifications") public void notificationCountChange() { // just for the notification } @Command("deleteAllNotifications") @NotifyChange("notifications") public void deleteAllNotifications() { } @Command("markAsReadAllNotifications") @NotifyChange("notifications") public void markAsReadAllNotifications() { } @Command("notificationAction") @NotifyChange("notifications") public void notificationAction(@BindingParam("notification") final Notification notification) { if (notification.isUnread()) { notification.setRead(); } else { this.notifications.remove(notification); } } @Command("showAllNotifications") @NotifyChange("notifications") public void showAllNotifications() { } @Command("manageNotifications") @NotifyChange("notifications") public void manageNotifications() { } public List<Notification> getNotifications() { return this.notifications; } } check.jpgunknownhttp://s3.postimg.org/5qhl58z4f/tick.jpgcross.jpgunknownhttp://s3.postimg.org/6eqfo6xu7/cross.jpgNotification.javajava import java.math.BigInteger; import java.util.*; public class Notification{ public BigInteger id; public Integer userId; public NotificationStatus status = NotificationStatus.NEW; public Date date; public String item; public String itemId; public String title; public String description; public String getDescription() { return this.description; } public String getTitle() { return this.title; } public Date getDate() { return this.date; } public void setRead() { this.status = NotificationStatus.READ; } public boolean isUnread() { return !NotificationStatus.READ.equals(this.status); } /** * Possible notification status. */ public enum NotificationStatus { NEW, READ } } main.csscss.notification-popup { /* if you change this, don't forget the width of .notification-button-horizontal */ width: 400px; } .notification-box .z-div { float: right; position: relative; left: -8px; top: -3px; } .notification-box .z-label { color: white; background-color: red; border-radius: 5px; padding: 0 5px; display: block; text-align: center; font-weight: bold; } .notification-button { padding: 5px; background: none; border: 1px solid #CCC; font-family: Arial, sans-serif; font-size: 9pt; color: #777; float: left; font-weight: bold; } .notification-button-horizontal { /* should be consistent with the width of .notification-popup */ width: 185px; } .notification-button-horizontal + .notification-button-horizontal { position: relative; left: -1px; } .notification-button-vertical { width: 100%; } .notification-button-vertical + .notification-button-vertical { position: relative; top: -1px; } .notificationsList { clear: both; height: 350px; overflow: scroll; } .notificationsList-item-event.notificationsList-item-event-unread .z-label { font-weight: bold; } .notificationsList-icon { float: right; z-index: 99; } .notificationsList-icon .z-image { width: 12px; height: 12px; cursor: pointer; } .notificationsList-wrapper { border-bottom: 1px solid #CCC; padding: 6px 2px; } .notificationsList .z-vlayout-inner:last-child .notificationsList-wrapper { border-bottom: none; }