Screenshots [0] •
Videos [0] •
Demos [0] •
Documentation [0] •
Tutorials [0] •
Articles [0] •
Knowledge Base [0] •
Zone [0]
XUI 4.0 Roadmap

With XUI 3.1 released and XuiPro now released under a dual commercial-open source license, we felt it is worth taking a look at what lies ahead for XUI 4.0.
Data Binding
Data binding has been part of the XUI framework right from the start, but many of the most valuable data binding features have been under utilized and we hope to resolve this with version 4.0.
JSR 227
JSR227 is a proposal from Oracle to standardize data bindings for the JEE platform. Part of this standardization includes bindings for JSF and for Swing components. The proposed standard bears some similarities to the XUI framework and is the standard is finalized in the time frame of XUI 4.0 development we will include support for the standard with by modifying the bindings or by producing a set of adapter classes.
Beans Bindings/JSR296
The beans bindings JSR aims to provide a simplified means of connecting Java beans and to component properties. Beans bindings will be a great addition to not just the Swing platform, but also to the XUI framework.
JPA 2.0 support
XUI 3.1 includes POJO support, and this is extended in XuiPro with Hibernate support. We will extend the POJO support with Java Persistence Architecture 2.0 in XUI 4.0.
Double Ended Binding Selection
Data bindings in XUI already support bi-directional and an extensive way of choosing and matching those bindings to data and components. The drag and drop data binding configuration in XuiPro also includes support for selecting a specific data binding. In XUI 4.0 we plan to extend the data binding mechanism so that a data binding client can be dynamically configured in response to the incoming data type. In the case of data returned from a remote service it is possible that binding types may need to be adapted or in some case the UI may need to be reconfigured. With some minor changes to the data binding factories we should be able to make the data binding setup more dynamic.
Add helpers
Some data binding usage can be a little verbose and an important way to help simplify the usage is to use helper classes that return specific data types or that simplify access to node attributes and values with an implied knowledge of the model content. XUI 3.0 added some helpers and these helpers will be extended and augmented with additional helper classes.
Simplify code
Helpers go some way to simplifying data binding usage, but we are also investigating other ways of simplifying coding. One possible route is to use generics to alleviate the need for type casting. The backward compatibility for early JDKs may make it impossible to add this support to the model itself, but we should be able to add it to the helper classes.
More annotations
XUI 3.0 introduced a number of annotations that makes code significantly simpler. We will take this use of annotations further and extend their use to new areas of the framework.
Resource injection
The Swing Application Framework (see below) has made use of resource injection to handle its resources and although the approach is somewhat different from that of XUI we can borrow some of the techniques from this and other frameworks to add some extra feature and compatibility to XUI.
UI Enhancements
Many of the applications and demos built using XUI include use of custom UI features that really add greatly to the appearance of the finished application. We will package many of these enhancements so that they can be more easily selected as the default configuration for an application.
SVG Components
We have done lots of work with SVG and it adds some fantastic advantages to desktop applications. The SVG Synth L&F shown at JavaOne will be completed and further integrated into XUI. We also showed some helper classes for building SVG based components and we will provide a range of such components, widgets and charting facilities.
Animation
XuiPro already has an animation but we will investigate using the SwingLabs timing framework so that we can leverage some of the classes and utilities built upon it. XuiPro's timing framework has a slightly different strategy for managing animations, but the basic timing service can probably be replaced.
Non-rectangular components
XUI has used some non rectangular components, but the implementation has been less than perfect. One place this is noticeable is in the Xdialog where the corners are not always transparent. The JNA framework provides a possible approach for invoking the native methods needed to properly implement non-rectangular components.
Extending docking
The docking framework will be further enhanced to include more modes and more configuration options.
Drag and drop
Drag and drop is being extended and applied to more and more components in XUI and it now uses the same sort of registration mechanism used by other registration types. Version 4.0 will further enhance drag and drop support within the finished applications, along with more examples.
AJAX/GWT integration
The HTML widget support in XUI is somewhat limited and we will update this with support for GWT and Ajax widgets. While we do not see XUI becoming an Ajax framework there are some sites where it is not possible to install a Java application and we want to provide the possibility of have at least some features available via Ajax. GWT looks like a good option for this.
Extended Scripting/BeanShell integration
XUI support for Groovy and JavaScript will be supplemented with support for BeanShell scripting. On motivation for this is to help drive XUI's template engine. The template engine is used within XuiPro to drive some of the application wizards and in some cases to help customize dynamically generated UIs.
Scripting support will also be of use for the AJAX/GWT integration.
Template driven content generation
Taking advantage of this scripting support and the updated template engine we will add and enhance the wizards in the IDE plug-ins. Some of these include
- Form Wizards create typical application forms, like user registrations, contact sheets, etc...
- Catalogue Wizards create an application stub for product selection
- Survey Wizards create a stub of an application for use with surveys and questionnaires
- Database Form Wizard create forms from things like database tables or model nodes
- XML Form Wizard create forms from XML fragments and adapt those fragments to various UI styles. This is already a feature of XuiPro, but at present there is no editor support.
- Schema Form Wizard Similar to above
- Pojo Form Wizard Much like the database form support
Comms channels
- XUI include only limited comms support. XuiPro enhances this with a number of communications channels, but we will add some of the comms channels we have used in client applications.
- JMS The Java Messaging System provides an excellent service for message driven comms, useful in a wide variety of applications.
- JavaMail Mail can be useful for a wide variety of applications and simple out of the box integration will be valuable
- FTP Useful for file downloading of files
- JNLP the JNLP service provides some useful resources for file downloads for webstarted applications and for persisting data
- Jabber/XMPP for collaborative applications
Plug-in architecture
The XUI framework is very customizable and many of the features can be plugged and replaced, but there is no packaging mechanism for doing so at present and using third party features requires manual configuration. We will introduce a plug-in architecture to enable packaging of extensions and complete subsystems of application modules. The intention is to provide some support for the OSGi standards.
Concurrency support in the database bindings
Java 5 introduced some excellent concurrency support and it makes building responsive GUI applications far easier when non-trivial computing or resource intensive tasks are involved. We will introduce and integrate a task handling framework to make using concurrency support much simpler.
Industrial components – gauges etc...
Using the SVG support we add a wide range of widgets for engineering, control and automation applications.
Report/Export/Printout support
Some of our client applications already extend and customize XuiPro's exporter facility to produce reports and printouts via html, excel and pdf. We will role some of this technology into XuiPro.
Multi project/module projects
XUI 3.0 introduced multi project (within the one JVM) and this will be further enhanced with the plug-in system described above, plus an enhanced security model for these modules. OSGi support will also be added to create a flexible and extensible plug-in system.
In place localization and Live translation
XuiPro includes a localization editor for XUI's built-in localization. We will extend this to include better support for various encodings, fonts and so on. We will also adds some helpers to make substitution within localized text that much easier. At design time language support will be further integrated to help trap some of the layout issues and to remove duplicate strings from the language. The editor will also support rendering and switching of the design time UI in the available localizations
However the big enhancement will be in-place localization whereby the translation tools can be used while the application is running. Using this facility a translator can run the application and select the text to translate, thereby getting a complete context for localization. We will also include a facility to record context information into the translators hints. Some of this new language support will make it into XUI 3.2
Actions
Action support was added via a community contribution in XUI 3.0. XUI 4.0 will further integrate action support in both the framework and the editor.
JSR 295 Support
Finally, last but by no means least, we will add support for JSR 295 the Swing Application Framework. XUI already includes a number of similar concepts to JSR 295, but goes further in many respects and provides a more complete framework. However JSR 295 is likely to attact considerable support and we want to leverage this and therefore we will provide as much compatibility as possible directly within the framework. However it may not be possible to make JSR 296 support the default as this may break too much of XUI's API.
Layouts
One of the big changes we plan for XUI 4.0 is extended layout support. XUI 3.x already includes the guide and scale layouts but we intend to extend both these and other layouts greatly. Our ambition is to enable desktop publishing like layout, almost free form layout but with the virtues of layout managers so that columns, tables and forms scale in predictable and sensible ways as an application resizes. We also plan to support accessibility and high DPI displays through better management of the layouts.
Editor support for layouts will be vital and we plan further extension of the guide support (for both pure design time purposes or runtime component management). XUI also supports other layout related features such as layering, templating and included panels/content and we will add extensive editor support for these features. Indeed layering will become a key feature of the editor as more and more dynamic content creation is added.
Bug fixes & RFE
We will also close many of the outstanding bugs and implementment the bulk of the outstanding Requests For Enhancement in one way or another.
Editor Enhancements
Where feasible we will enhance and augment the editor so that it can process all the new features of XUI and XuiPro. Some features may remain without an editing facility should the effort be too great, but we will seek to give the editor enough capability so that features and elements that have been hand coded are not lost by using the editor.
... and to finish with a big one: we will port all the XuiPro features to the Eclipse platform, finally putting it on a par with the NetBeans release!
Timescales
At present we are in the planning phase for XUI 4.0, soliciting ideas from the community and our partners.
The first pre-beta releases are expected in late 2007, early 2008.
Comments please
Any comments. We would welcome your comments and thoughts on the subject of XUI 4.0. We know there are lots of low key applications out there built on XUI 2.0 that have barely begun the process of upgrading to XUI 3.0, so XUI 4.0 may be something of a leap, however your ideas for XUI 4.0 may be just as worthwhile and useful so pelase share.