ZK 3.5

Released on September 10, 2008.

Download Now

Getting Simpler and Richer

New Feature Highlight

  • Comet Server Push is enabled which allows developer to create Web application in a new way.
  • The layout of all ZK components are upgraded to a brand-new style, more responsive, and more interactive.
  • Grouping Grid and Listbox is designed display data in an intuitive way.
  • More Layout Components - Portallayout, Columnlayout, and Tablelayout are introduced to satisfy various requirements of UI design.
  • A Powerful Container Component - Panel is introduced with more functionalities.
  • Tabbox is much enhanced with scrolling features, and more molds.
  • The concept of moldSclass is introduced to customize layout of ZK components with ease.
  • Spinner and Fisheyebar component is introduced.
  • Chart supports Gannt Chart, Watermap Chart, Bubble Chart, Wind Chart.
  • A convenient mechanism to monitor the performance of Web application.
  • Fulfill Event is enhanced with URI Expression, and onFulfill Event.
  • Iframe supports Bookmark management.
  • Event Supports subscribe/publish Mechanism.
  • ZUML Supports switch/case and choose/when

  • See also New Features of ZK 3.5.

Feature Updates

  • 123 XUL and 83 HTML off-the-shelf 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, FCKeditor, DOJO, and Timeline components.
  • Event-driven, server-centric model
    • More than 20 events are supported: onChange, onChanging, onScroll, onSelect, onShow, onZIndex...
    • 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 acess 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.
    • Macro components. Developing a full-feature new component by using another 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:
    • 1973888: Listbox support Listgroupfoot in Group
    • 1972591: Grid support Groupfoot in Group
    • 1907300: Listbox: support grouping
    • 1997391: Provide a new component, Panel, like Window but more richer
    • 2002986: Columnlayout Component
    • 2049401: Provide a new component, Portal Layout, like iGoogle
    • 2014828: Implement ZK own Fisheye component
    • 2019158: Provide a Menupopup for Columns component
    • 1959952: Support Comet-based Server Push
    • 1951422: Grid: support grouping
    • 2032202: Provide a detail component as master details
    • 1962747: Allow to specify a XML fragment as compnent's content
    • 1901211: Simplify the outline of Menu component with single TD
    • 1845373: Support switch/case and choose/when
    • 1925928: Add Spinner Component
    • 1926069: Pass current value for bandbox/comobox in onOpen
    • 1890941: chart support bubble chart
    • 1890942: chart support wafermap chart
    • 1890944: chart support gannt chart
    • 1890943: chart support wind chart
    • 1937237: Grid support vflex like Listbox and Tree
    • 1957737: Support the function-mapper directive
    • 1955900: A subscribe/publish meachism to handle events
    • 1959380: Window support both properties minheight and minwidth
    • 1955562: For theme: menuitem unchecked not visible
    • 1895872: Keyboard support for menues
    • 1944610: Data Binding support non-distinct collection items
    • 1977343: The booting progress bar covers only ZK page if included
    • 1981878: Groupbox's default mold support open/close effect as 3d mold
    • 1990503: The blank text shall be preserved for some components
    • 1997383: Provide a panel mold for Toolbar as Panel's foot toolbar
    • 1997384: Toolbar support alignment control
    • 2009346: Support event listener of ZK client cmp for cmp developer
    • 1444991: Minimize / Maximize window decorations
    • 2023188: A way to avoid the conflict of the prototype's method names
    • 2032228: A way to call PerformanceMeter in ZK Loader
    • 2039788: A way to notify parent if iframe's URL or bookmark changed
    • 2041292: Borderlayout support title and animation like Outlook
    • 2046034: Trendy Button
    • 2046129: Trendy Slider and veritcal orient
    • 2056723: Support tabbox scrolling and new mold
    • 2056753: Tablelayout
    • 2063596: A way to specify where to generate JS/CSS in ZHTML pages
    • 2045837: PerformanceMeter adds the time after updating all components
    • 2052603: A way to proxy ComponentInfo with ComposerExt
    • 2045810: AnnotatedDataBinderInit accept relative path in arg0
    • 2060367: More neat startup log for ignorable errors
    • 2066299: fulfill: fire onFulfill after fulfilling the children
    • 2070812: Fulfill allows to specify URI to create children from
    • 2075293: Allow to specify listener in metainfo/zk/config.xml
    • 2086401: A way to 'reset' component ID to be anonymous
    • 2090533: button/listcell/menu/tab... supports the hover image
    • 2092160: Image supports hover image
    • 2092356: Unwrap ForwardEvent automatically in GenericEventListener
    • 2094526: Components.wireVariables() shall wire implicit objects
  • Bug fixes:
    • 1953249: <borderlayout> inside <tabbox> is not visible
    • 1944729: Windows and boxes inside tab panels
    • 1911280: Borderlayout and iframe issue
    • 1958774: cannot create tree with all treeitem branches opened
    • 1962220: datebox: when 31th of May selected, select June - shows July
    • 1939919: Borderlayout does not fit inside Window (IE6)
    • 2009503: Datebox fail to verify when use a Local format such as 'MMM'
    • 1939859: splitter of borderLayout problem
    • 2051014: NPE error with ZK + Tomcat Clusteriing
    • 2056760: Fail to change the width of Listbox
    • 2051639: Data binding longbox does not work
    • 2037288: Clustering failed with AnnotateDataBinder
    • 2041347: F1 key not overridden correctly in IE
    • 2071996: Selection on a paged Listbox doesn't work an last page
    • 2077739: Events.addEventListeners() cause Exception in onEvent()
    • 2077792: GenericAutowireComposer shall support implicit objects "arg"
    • 2041674: Menubar popup disappears with disabled menuitem
    • 2080237: A disabled Menuitem with href can link to the href location
    • 2080346: Onchaning evt of combobox wrongly includes type-ahead string
    • 2075332: Paginated listbox doesn't expand properly inside a BL(IE)
    • 2079837: Timebox behaves wrongly if there is scrollbar
    • 2081560: Unresponsive script warning when changing big ListModel
    • 2086020: onchanging event of combobox didn't fired properly
    • 2086350: Select a nested listbox that should not throw a exception
    • 2088269: radiogroup wouldn't work before ZK finish loading
    • 2088496: OPERA ONLY - hbox setAlign does not update in view.
    • 2090731: Button... unable to setImage if setImageContent was called
    • 2082896: ZK conflicts with Liferay 5.1.1
    • 2088712: separator with bar & spacing=1px not show in IE
    • 2092632: Session.invalidate causes an exception in Jetty
    • 2092716: Desktop.isAlive always true
    • 2094523: Components.wireFellows() shall wire fellows then ancentors

Upgrade Notes

  • onBookmarkChanged is renamed to onBookmarkChange
  • The smartUpdate, response, onChildAdded, onChildRemoved and onDrawNewChid methods are moved from the Component interface to the ComponentCtrl intereface.
  • The setAutocheck and setChecked methods of Menuitem only apply when Menuitem.isCheckmark is true.
  • The script component now has "text/javascript" as the default type.
  • Add some new trendy layout of these components, including Borderlayout, Groupbox, Window, Menu, Menuitem, Menupopup, Menubar, and Menuseparator, as default mold. The ZK 3.0 customization won't work in ZK 3.5.
  • Both molds vertical and horizontal of Menubar are unsupported, please use the setOrient() of Menubar to specify them.
  • Change the layout of Paging component to a new trendy layout as default.
  • Rename from layout*.css.dsp to zkex*.css.dsp.
  • The method names of prototype and script.aculo.us embedded in ZK are renamed. It is transparent to developers since the backward compatibility is guaranteed.
    However, if you want your client codes to be comptible with other Ajax toolkit, it is recommended to use the new method names, such as zClass. In addition, you can have the following codes in your JavaScript files such that it is compatible with earlier ZK versions.
    
    	if (!window.zClass) {
    		zClass = Class;
    		zDraggable = Draggable;
    		zEffect = Effect;
    		zPos = Position;
    	}
    	
    	
  • org.zkoss.zkplus.databind.AnnotateDataBinderInit now implements both org.zkoss.zk.ui.util.Initiator and org.zkoss.zk.ui.util.InitiatorExt interfaces. That is, the original interface method doAfterCompose(Page page) of Initiator won't be called any more. Rather, the doAfterCompose(Page page, Component[] comps) of InitiatorExt is called. If you have written own class that extends AnnotateDataBinderInit and overrides doAfterCompose(Page page) method of Initiator, you probably have to do some modification accordingly.