ZK 6.0.0 release notes

Released on February 14, 2012.


ZK 6 brings with it a whole host of changes, with up to approximately 100,000 lines have been changed between versions 5 and 6. This release comes with it some major changes including the introduction to a new databinding system 'ZK Bind' with the use of MVVM development pattern, generic support, a new templating system and others.


Getting Simpler and Richer

Feature Updates

  • 120+ off-the-shelf Ajax components
    • Tabbox, grid, listbox, tree, menu, combobox, bandbox, datebox, chart, hbox, vbox, window, slider, paging, audio, image, timer, include, iframe...
    • Drag-and-drop supported by all components, such that users can drag components and drop them to any other or particular set of components.
    • Context menus and customizable tooltips supported by all components, such that a menu or any popup appears when user click, right-click or move the mouse over a component.
    • Customizable sorting of listbox, grid and children of any component with 100% Java codes (java.lang.Comparator).
    • Auto-completion for combobox.
    • Load on demand with writing Java codes.
    • Live data for listbox.
    • Grids, listboxes and trees with sizable columns.
    • All components are cloneable and serializable.
    • Validation and formatting for any input components, such as regular expression and $#,##0.
    • 100% Java API of Google Maps, CKeditor, and Timeline components.
  • Event-driven, server-centric model
    • Ajax requests, application notification, and server push are all managed as events
    • Event Queue shields developers from the complexity of Ajax and server push, such as multi-thread programming
    • All events are processed at the server. No hurdle to communicate between clients and servers.
    • All events are synchronized. No racing condition to worry about.
  • ZK User-interface Markup Language (ZUML).
    • Rich user interface could be designed in ZUML as simple as authoring HTML pages.
    • Powerful yet intuitive control flow by the if, unless and forEach attribute.
    • Scripting in EL expressions and your favorite scripting languages, include but not limited to Java, JavaScript, Ruby and Groovy.
    • Hot changes and updates without restarting your Web applications.
    • Annotations that allow a page to access database with zero Java codes.
  • Browser history management.
    • Add states to browser's back button history. Then, users can bookmark and use the back and forward button to navigate different states of the same ZK desktop.
  • Simple yet boundless component model.
    • POJO components supporting interfaces and clustering. Easy to instantiate and manipulate directly with pure Java, or injected and managed by an AOP framework, such as Spring
    • Macro components. Develope full-featured new component by using other ZUML pages.
    • Inheritable customization. Developing a new component by extending existent components.
    • Seamlessly and easily to encapsulate pure-client components as ZK components with 100% Java API.
    • Customizing components with pre-compiled Java classes, or by scripting in your favorite scripting languages, include but not limited to Java, JavaScript, Ruby and Groovy. The choice is yours.
  • Simple yet flexible threading model.
    • Thread-safe component handling.
    • True server-side Modal dialog.
    • Suspend and resume event listeners freely.
  • 100% Customizable User-Interface factory.
    • Loading ZUML pages not only from Web contents but also any repository such as database.
    • Customizing the features of sessions, desktops and pages.

What's New

  • New Features Tracker
    • 3061730: Make ZK complaint to Java 5, such generics
    • 2920934: A plugin to load lang.xml, config.xml.. from custom location
    • 2978342: A way to tag AU request for statistic purpose
    • ZK-139: A way to define a template that component could use
    • ZK-216: Listbox/Tree/Grid/Combobox supports the template for rendering model
    • ZK-237: allows users to import classes
    • ZK-110: Upgrade to jQuery 1.6.4
    • ZK-496: Make iZUML available to ZK CE
    • ZK-61: Support hotkey for user to pick a date
    • ZK-443: Menubar can support keystroke to navigate the menubar
    • ZK-292: Annotation supports an array of values and string-type value and so on
    • ZK-408: Allow the text-as content such as html/combitem to have a XML fragment
    • ZK-278: Enhance stubonly to merge more components and better control of event handling
    • ZK-401: A way to customize the way WebApp is instantiated
    • ZK-217: A way to add a temporary variable resolver to an execution
    • ZK-233: Execution.createComponents support inserting before particular component and variable resolver
    • ZK-264: addEventListener support 'priority'
    • 2974464: A way to customize message with zk-label
    • 3025389: A way to monitor the execution and event processing
    • 2947727: The instantiation of Composer & Server Push customizable
    • ZK-224: Tree shall render the model in the onInitRender event listener
    • ZK-288: Make GenericEventListener (and derives, GenericForwardComposer and GenericAutowireComposer) as serializable
    • ZK-279: Simplify PageDefinition and related metainfo
    • ZK-314: A way to pre-load images since many UIs depend on the size of an image
    • ZK-114: Provide an JasperReport API to get the generated Media
    • ZK-370: Multi-line textbox support rounded mold
    • ZK-416: Listbox support multiple drag
    • ZK-446: Add an instant="true" attribute to InputElement(e.g. textbox, intbox, ...) so onChange is fired as quick as possible.
    • ZK-12: Checkbox automatically disable itself after clicked
    • ZK-458: The language definition allows a WPD package to be merged to another
    • ZK-83: Messageboxes buttons should be rendered in the users order
    • ZK-501: Messagebox supports custom labels
    • ZK-463: Messagebox supports enum to specify the button
    • ZK-464: Window's mode supports enum
    • ZK-468: Add Selectbox component to ZK core
    • ZK-469: Add Absolutelayout component to ZK core
    • ZK-470: Add Anchorlayout component to ZK core
    • ZK-383: Make breeze as the default theme
    • ZK-318: Support combobutton combining a button and a dropdown menu
    • ZK-526: Add a utile EL function for formatting date and parsing date
    • ZK-536: Groupbox supports the title attribute (like Window/Panel)
    • ZK-551: A new data binding system to support MVVM design pattern
    • ZK-522: Tablelayout support any child not limited to Panel
    • ZK-523: Columnlayout support any child not limited to Panel
    • ZK-537: Hlayout supports valign (top, middle and bottom)
    • ZK-503: Add a new component, idspace: as light as div but implements IdSpace
    • ZK-541: SelectorComposer uses annotation to control whether to write zscript and XEL variables
    • ZK-553: SelectorComposer shall implement ComponentActivationListener and rewire Session/WebApp
    • ZK-609: A way to access the browser information with an implicit object in EL (such as false)
    • ZK-613: The root component is considered as an ID space, so getFellow and wire will work
    • ZK-618: WebApp and Execution support log(String) and log(String,Throwable)
    • ZK-614: Support Servlet 3's web fragment
    • ZK-621: Combobox and Bandbox should support isOpen() to store the open status
    • ZK-615: Comet supports Servlet 3's asynchronous processing
    • ZK-448: Colorbox support keystroke to navigate the color code
    • ZK-635: Fileupload support HTML5's input file with multiple
    • ZK-616: Able to specify Messagebox width
    • ZK-646: Allow WebAppInit listenes to override default extendlet, such as WPD and WCS
    • ZK-649: Rename i3-label.properties to zk-label.properties
    • ZK-665: The default autowiring of HtmlMacroComponent and XmlMacroComponent shall be the same as SelectorComposer
    • ZK-666: A way to specify both annotation and value for a property
    • ZK-688: AuInvoke supports the invocation of a global function at the client
    • ZK-694: The file to configure logger can be specified in a library property
    • ZK-701: ListModel, TreeModel, ChartModel, and ListGroupModel supports Cloneable if implemented
    • ZK-719: Combobutton supports the toolbar mold such that it has the same size as other toolbar components
    • ZK-715: Listbox paging mold support PageUp/PageDown to navigate the paging
    • ZK-423: Focusable listboxes
    • ZK-669: Add method setModel(ListModel model) to Radiogroup class
    • ZK-720: Toggable toolbar buttons
  • Bugs fixed
    • ZK-328: Panelchildren shall ignore flex in maximized state
    • ZK-392: Set hflex='min' to treeitem will cause javascript error (illegal use actually)
    • ZK-493: zk.override(Object, String, Function) fails to update subclass methods
    • ZK-504: onCreate event not fired if registered in a parent's composer
    • ZK-487: Height isuue in the groupbox (with specified caption)
    • ZK-539: Title background not full-filled in groupbox
    • ZK-549: Height issue of groupbox 3d mold
    • ZK-562: Groupbox vflex=min is wrong (reopen B50-3005284.zul)
    • ZK-622: jq("@radio input").attr("checked") will return "checked" if not checked
    • ZK-702: combobutton js error occurs on click event
    • ZK-691: stubonly not work for Executions.createComponentsDirectly
    • ZK-707: ListModel/TreeModel selection cannot share in two component
    • ZK-750: Listbox ROD failed with ListModelList
    • ZK-732: combobutton doesn't have isOpen() so zkbind can't read open property
    • ZK-767: cannot select a non-open tree node when using model
    • ZK-779: Chechmark issue in paging listbox
    • ZK-815: Listbox Select event is not fired when PgDown/PgUp is pressed
    • ZK-827: Selection of listbox is worng after change multiple
    • ZK-816: Tooltip assigned to component when it is in detached state won't show up
    • ZK-774: Toolbar's mold "panel" does not work accurately