Xoetrope

 Wiki : XUI3

HomePage :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register
Most recent edit on 2008-02-08 15:11:01 by LuanO

Deletions:




Edited on 2008-02-08 15:10:25 by LuanO

Additions:
Released: 8th Feb. 2008
XUI 3.2 is now available for download from SourceForge.
Details of the files and download packages can be found in the 3.2 Download Notes.


Deletions:
XUI 3.2 Released: 8th Feb. 2008
XUI 3.2 is now available for download from SourceForge. Details of the files and download packages can be found here.




Edited on 2008-02-08 15:06:20 by LuanO

Additions:
Drag and Drop demo

Live Translation

LiveTranslate wiki,LiveTranslate Video (1)
(2),(3),(4),(5),(6)

Database Replication

XUI 3.2 also adds a database replication facility. This facility isn't a full-blown replication, but it is of use in some applications that maintain a client side database and need to send or received updates. The replication process adds some tags to the tables and then runs over XUI's routes and services. A servlet engine is needed on the server side to provide the platform for the remote service. Limited documentation is available.
Alternatively Hibernate and Spring remoting services can be used with XUI's POJO support for advanced client-server processing in a hetrogeneous environment.

NetBeans 6.0 Support

The XUI editor plugins have been upgraded for NetBeans 6.0 and many enhancements, fixes and tweaks have been included in the latest plugins. The distribution also includes the XuiPro (formerly Carousel) plugin by default.

Eclipse Europa Support

The Eclipse plugins have also been updated and enhanced for Eclipse Europa. Almost all features of the NetBeans plugins are now available in Eclipse, including for the first time the XuiPro plugin. Some of the database related features require the SQLExplorer plugin to be installed.

New and Extended Widgets

Many new and enhanced widgets are included in XUI 3.2, including the XRollup and XAccordion components.
Rollup demo
Rollup/Accordion weblog
Several other widgets have been added and enhanced with new painters, appearances and modes. SubMenu support has been improved along with support for MDI/desktop or Internal Frames. The Docking framework has also been enhanced to provide better control of the layout (including fixes to the SwingLabs MultiSplitLayout).


Deletions:
fDrag and Drop demo

Live Translation - see http://www.xoetrope.com/wiki/LiveTranslate=== LiveTranslate video,(2),(3),(4),(5),(6)
5 New Widgets
6 SubMenu Support
7 Internal Frames Support
8 Docking framework enhancements
9 Editor fixes and enhancements
10 New Widgets, and new painters
11 SwingX component support added
12 New Survey Wizard





Edited on 2008-02-08 14:41:41 by LuanO

Additions:
xui logo

XUI Release 3.2

XUI 3.2 is now available for download from SourceForge. Details of the files and download packages can be found here.

What's new

Enhanced POJO/Hibernate/Spring support and editing facilities

POJO support was added in XUI 3.0 and is further enhanced by XUI 3.2. The POJO support makes it possible to bind POJOs from frameworks such as Spring, Hibernate or JPA and use them as any other model node, binding to UI components such as labels, edits, tables, and trees. POJO support doesn't stop with third party support and you can build your own POJOs or add support for Java's arrays and collections. The POJO support adds a great deal of flexibility to XUI and opens up lots of scope for enterprise applications.
Most of the work involved in using POJOs is carried out by XUI automatically and the developer needs to do little more than point XUI at the root of the POJO hierarchy and override default settings as appropriate for the particular application. More information about XUI's POJO handling can be found here and in this version of the Hibernate Caveat Emptor example
data binding demo
see Drag and Drop Data Binding video

Drag and drop form creation for Databases and POJOs

In parallel to the drag and drop data binding XUI 3.2 also drag and drop form generation whereby you can take a POJO or a database table (Eclipse requires the SQLExplorer plugin for this purpose) and drop it on a page to automatically create and configure a form that binds to the fields of the table or POJO. In setting up the form you can choose layout attributes like the number of columns, the spacing and styles. When binding to a POJO complex objects can be bound to nested forms in a master-detail relationship.
form generation demo
Form Generation video

Drag and drop component support enhanced.

Drag and drop support for Swing components has been enhanced making it much easier to build things like interactive shopping carts or configuration tools.
fDrag and Drop demo
Drag and Drop video

Live Translation - see http://www.xoetrope.com/wiki/LiveTranslate=== XUI has always had strong support for localization. and XUI 3.2 further enhances this support making it easier to get started with translation and easier to manage larger projects.
XUI 3.2 now automatically checks for duplicate strings - something that can be the bane of translation. As the developer enters a caption it is automatically added to the localization and as part of the process XUI's language support checks for existing versions of the text. If a duplicate is found the user is prompted to use the existing version or add a new version. If a new version is added XUI also adds some hint text to help the translator identify the context of the translation.
For larger projects it can be difficult to know where a string is used, and even with XUI's context information and translation hints it may be hard for the translator to know how the text is being used. XUI 3.2 therefore adds LiveTranslate support where by the translations can be entered in-situ as the application is run.
Live translate demo
LiveTranslate video,(2),(3),(4),(5),(6)
And if you still need help in localization XUI 3.2 adds support for the Google Translation API where by you can get automated machine translation - but be warned you should still get a native speaker to complete the translation and localization process.
5 New Widgets
6 SubMenu Support
7 Internal Frames Support
8 Docking framework enhancements
9 Editor fixes and enhancements
10 New Widgets, and new painters
11 SwingX component support added
12 New Survey Wizard

XUI 3.0 Release Notes

Developmment XUI 3.0 is complete, you can obtain the source code from the SourceForge SubVersion repository. All the files, including the NetBeans project files are included in the repository. You can build XUI 3 from within NetBeans or you can just use the Ant or Maven build files. For XUI 3 we are using Maven and Continuum for continuous integration, and as the framework is being compiled and built on a daily basis you should be able to use XUI 3 as built directly from SVN. The repository also includes some working examples. A recent snapshot of the Maven site for XUI 3 lists some of the project's details.
In parallel with Juice, XuiPro is being released under a GPL license to facilitate developer access. Many of the tools contained in XuiPro will be valuable to authors of XUI applications, whether or not any of XuiPro's runtime components are used. XuiPro is still available under a commercial license for anyone making commercial use of the framework. The initial release includes the XuiPro Swing components plus some other classes, later releases will include the XuiPro plug-in for NetBeans with all the extra tools and editors, so stay tuned!


Deletions:
xui logo

XUI Release 3.0, Development Version

Developmment XUI 3.0 is underway, you can obtain the source code from the SourceForge SubVersion repository. All the files, including the NetBeans project files are included in the repository. You can build XUI 3 from within NetBeans or you can just use the Ant or Maven build files. For XUI 3 we are using Maven and Continuum for continuous integration, and as the framework is being compiled and built on a daily basis you should be able to use XUI 3 as built directly from SVN. The repository also includes some working examples. A recent snapshot of the Maven site for XUI 3 lists some of the project's details.
In parallel with Juice, Carousel Community Edition is being released under a GPL license to facilitate developer access. Many of the tools contained in Carousel will be valuable to authors of XUI applications, whether or not any of Carousel's runtime components are used. Carousel is still available under a commercial license for anyone making commercial use of the framework. The initial release includes the Carousel Swing components plus some other classes, later releases will include the Carousel plug-in for NetBeans with all the extra tools and editors, so stay tuned!




Edited on 2008-02-08 12:46:00 by LuanO

Additions:
XUI 3.2 Released: 8th Feb. 2008

Deletions:
Features and additions implemented so far



Edited on 2007-07-02 09:48:06 by LuanO

Additions:
SourceForge Logo

Deletions:
{{image link="http://www.sourceforge.net/projects/xui" url="http://sourceforge.net/sflogo.php?group_id=76693



Edited on 2007-04-19 12:26:43 by JwzGfj

Additions:
{{image link="http://www.sourceforge.net/projects/xui" url="http://sourceforge.net/sflogo.php?group_id=76693

Deletions:
SourceForge Logo

CategoryXUI3




Edited on 2007-03-09 09:47:26 by LuanO

Additions:
7 Component registration extended
7 Component registration extended


Deletions:
7 Component resgistration extended
7 Component resgistration extended




Edited on 2007-03-09 09:04:08 by LuanO

Additions:
The HTML builder makes it possible to load pages from HTML and generate a Swing user interface from those pages. The builder makes uses of a set of prototype tag handlers that instantiate Swing components for the the HTML elements and add them to the page. TableLayout is used for handling tables and this library is added o the libs folder. This new feature also makes use of the new support for multiple page loaders so that it is not necessary to specify whether or not a page is XML or HTML, whichever is found will be loaded. As the XuiBuilder is the initial builder it will get preference and will make the first attempt to load the page. An HTML builder can be installed or configured by startup parameters.
The Shutdown hook has been extended to support multiple lifecycle listeners. The lifecycle listener gives an application the opportunity to perform cleanup and shutdown activities before the JVM exits. Typically an application may wish to close file or database connections or free up resources before exiting. A new listener, the DataBaseLifecycleListener has been added as a helper for those applications using a database like HSQLDB in in-memory or standalone mode that requires the database to be shutdown via a SHUTDOWN query.
A new facility for customizing components has been added such that a collection of method calls can be made to customize a component and set properties on that component. The facility is itself customizable, supporting adapters to control how the properties are applied to the component. The customizations can be applied post creation of the component or just before activation of the page, when the component has been populated. For example in the case of a table the property may apply to the table columns rather than the table itself.
If there is no way of setting the attributes of a component directly, or through the XAttributedComponent interface, or through a ComponentAdapter then reflection will be used to set the properties. The methods signatures are parameter types are set using the JVM type signature syntax, for example
Support for the system tray or launch area has been added. When a system tray icon is added the application can choose to stay resident in memory after the main window has been closed by setting the "ExitOnClose" startup property to false. The advantage of doing this is that the data model does not need to be reinitialized if the main window is just being redisplayed. This initialization can be significantly quicker than normal startup as all the classes needed by the JVM are already loaded. If remote data is used the startup gain may be even greater as network access may not be required.


Deletions:
The HTML builder makes it possible to load pages from HTML and generate a Swing user interface from those pages. The builder makes uses of a set of prototype tag handlers that instantiate Swing components for the the HTML elements and add them to the page. TableLayout is used for handling tables and this library is added o the libs folder. This new feature also makes use of the new support for multiple page loaders so that it is not necessary to specify whether or not a page is XML or HTML, whichever is found will be loaded. As the XuiBuilder is the initial builder it will get preference and will make teh first attempt to load the page. An HTML builder can be installed or configured by startup parameters.
The Shutdown hook has been extended to support multiple lifecycle listeners. The lifecycle listener gives an application the opportunity to perform cleanup and shutdown activities before the JVM exits. Typically an application may wish to close file or database connections or free up resources before exiting. A new listener, the DataBaseLifecycleListener has been added as ahelper for those
applications using a database like HSQLDB in in-memory or standalone mode that requires the database to be shutdown via a SHUTDOWN query.
A new facility for customizing components has been added such that a collection of method calls can be made to customize a component and set properties on that component. The facility is itself customizable, supporting adapters to control how the properties are applied to the component. The customizations can be applied post creation of the component are just before activation of the page, when the component has been populated. For example in the case of a table the property may apply to the table columns rather than the table itself.
(%%;java)
If there is no way of setting the attributes of a component directly, or through the XAttributedComponent interface, or through a ComponentAdapter then reflection will be used to set the properties. The methods signatures are
parameter types are set using the JVM type signature syntax, for example
Support for the system tray or launch area has been added. When a system tray icon is added the application can choose to stay resident in memory after the main window has been closed by setting the "ExitOnClose" startup property to false. The advantage of doing this is that the data model does not need to be reinitialized if the main window is just being redisplayed. This initialization can be significantly quicker than normal startup as all
the classes needed by the JVM are already loaded. If remote data is used the startup gain may be even greater as network access may not be required.




Edited on 2007-02-12 03:41:27 by LuanO

Additions:
1657332 Panel layout problems



Edited on 2007-01-25 06:29:47 by LuanO

Additions:
To use this support the application must add an instance of the net.xoetrope.swing.deploy.XSystemTrayManager class. A good place to do this is in a XLifeCycleListener implementation

Deletions:
To use this support the application must add an instance of the net.xoetrope.swing.XSystemTrayManager class. A good place to do this is in a XLifeCycleListener implementation



Edited on 2007-01-24 05:32:20 by LuanO

Additions:
36 Collection support added for tables
36 Collection support added for tables
The modelling of tables has been refactored so that more generic implementations can be provided, the first of which is construction of tables from ArrayLists and vectors. The new class XCollectionTableModel supports the new XTableModel, XRowModel and XFieldModel setup.
For example
public class MyTable extends XPage
public MyTable()
String[] names =
{ "ID", "Title", "Author" };
String[][] rawData = {
{ "0", "Moby Dick", "Herman Melville" },
{ "1", "The Hunchback of Notre Dame", "Victor Hugo" },
{ "2", "The Idiot", "Fyodor Dostoevsky" },
{ "3", "Ulysses", "James Joyce" },
{ "4", "Thus Spake Zarathustra", "Friedrich Nietzsche" },
{ "5", "Bleak House", "Charles Dickens" },
{ "6", "Mansfield Park", "Jane Austen" },
{ "7", "Alice's Adventures in Wonderland", "Lewis Carroll" },
{ "8", "The Republic", "Plato" },
{ "9", "Kidnapped", "Robert Louis Stevenson" },
{ "10", "On the Duty of Civil Disobedience", "Henry David Thoreau" },
{ "11", "The Jungle Book", "Rudyard Kipling" },
{ "12", "The Picture of Dorian Gray", "Oscar Wilde" },
{ "13", "The Rime of the Ancient Mariner", "Samuel Taylor Coleridge" },
{ "14", "Catcher in the Rye", "J. D. Salinger" },
{ "15", "The Glass Bead Game", "Herman Hesse" },
};
ArrayList fieldNames = new ArrayList();
for ( String n : names )
fieldNames.add( n );
ArrayList data = new ArrayList();
for ( String[] row : rawData ) {
ArrayList rowList = new ArrayList();
for ( String field : row ) {
rowList.add( field );
}
data.add( rowList );
XCollectionTableModel ctm = new XCollectionTableModel( project, "CollectionTable", fieldNames, data );
rootModel.append( ctm );
...
combines with the XML:
<XPage class="xui.projects.sqltables.MyTable" layout="border">
<Components>
<Label name="title" content="XTable Demo" alignment="center" constraint="north" style="Heading"/>
<TabPanel constraint="center" >
...
<ScrollPane title="Collections">
<Table2 name="collectionTable" title="collection" interactive="true" headingStyle="TableHeading"
style="TableData" selectionStyle="TableSelection" horizontal_scrollbar="as needed"
updateModel="true"/>
</ScrollPane>
</TabPanel>
...
</Components>
<Events>
...
</Events>
<Data>
...
<Bind target="collectionTable" source="CollectionTable" output="tables/ct" />
</Data>
</XPage>
%%
to bind the collection to the 'collectTable' table component. The above is table from the updated sample application in SVN




Edited on 2007-01-23 07:43:48 by LuanO

Additions:
34 SystemTray support added
35 XuiProxy added to ease Xui-Swing integration
35 XuiProxy added to ease Xui-Swing integration


Deletions:
34 SystemTray support added
35 XuiProxy added to ease Xui-Swing integration
35 XuiProxy added to ease Xui-Swing integration




Edited on 2007-01-23 07:41:49 by LuanO

Additions:
35 XuiProxy added to ease Xui-Swing integration
35 XuiProxy added to ease Xui-Swing integration
The proxy can be used in place of an applet class where the XUI fraction of an application needs to be integrated with an existing or legacy Swing application. The proxy extends JPanel and encapsulates the XUI elements of the project. An example application is included in the XUI source tree.




Edited on 2007-01-22 04:19:50 by LuanO

Additions:
System Tray Support



Edited on 2007-01-22 04:01:41 by LuanO

Additions:
sysTray = XSystemTrayManager.getInstance( project );

Deletions:
sysTray = new XSystemTrayManager( project );



Edited on 2007-01-21 05:36:13 by LuanO

Additions:
To use this support the application must add an instance of the net.xoetrope.swing.XSystemTrayManager class. A good place to do this is in a XLifeCycleListener implementation

Deletions:
To use this support the application must add an instance of the net.xoetrope.swing.XSystemTrayManager class. A good place to do this is in a XLifeCycleListener implementation



Edited on 2007-01-02 09:15:44 by LuanO

Additions:
To use this support the application must add an instance of the net.xoetrope.swing.XSystemTrayManager class. A good place to do this is in a XLifeCycleListener implementation
private static XSystemTrayManager sysTray;
sysTray = new XSystemTrayManager( project );

Deletions:
To use this support the application must add an instance of the net.xoetrope.swing.SystemTrayManager class. A good place to do this is in a XLifeCycleListener implementation
private static SystemTrayManager sysTray;
sysTray = new SystemTrayManager( project );



Edited on 2007-01-02 04:08:35 by LuanO

Additions:
34 SystemTray support added
To use this support the application must add an instance of the net.xoetrope.swing.SystemTrayManager class. A good place to do this is in a XLifeCycleListener implementation
{
private static SystemTrayManager sysTray;

public void initialize( XProject proj )
final XProject project = proj;
if ( sysTray
null ) { sysTray = new SystemTrayManager( project );

Do remaining initialization and network access
}

* Called when the application/applet has been shutdown and is about to exit
public void shutdown()


Deletions:
34 SystemTray support added



Oldest known version of this page was edited on 2007-01-02 04:03:58 by LuanO []
Page view:
xui logo

XUI Release 3.0, Development Version

Features and additions implemented so far

Developmment XUI 3.0 is underway, you can obtain the source code from the SourceForge SubVersion repository. All the files, including the NetBeans project files are included in the repository. You can build XUI 3 from within NetBeans or you can just use the Ant or Maven build files. For XUI 3 we are using Maven and Continuum for continuous integration, and as the framework is being compiled and built on a daily basis you should be able to use XUI 3 as built directly from SVN. The repository also includes some working examples. A recent snapshot of the Maven site for XUI 3 lists some of the project's details.

Development Snapshots
As project Juice is expected to last a number of months we have decided to release a number of snapshots of the XUI platform. Each of these snapshots will contain the full sources, libraries and project files but not all versions of the XUI jars will be released (they can be built from the source). Updates to the documentation and IDE plugins will also be included, along with sample applications for testing the new features.

These snapshots are not part of an alpha or beta program, but we make every effort to ensure that they are as stable and robust as is possible given the on-going development. If you use any components of Juice and experience problems or other issues don't hesitate to contact us or log a bug, the more feedback we get the better we can make the platform. We are also interested in hearing your impressions of XUI and we are open to suggestions for new features and enhancements.

In parallel with Juice, Carousel Community Edition is being released under a GPL license to facilitate developer access. Many of the tools contained in Carousel will be valuable to authors of XUI applications, whether or not any of Carousel's runtime components are used. Carousel is still available under a commercial license for anyone making commercial use of the framework. The initial release includes the Carousel Swing components plus some other classes, later releases will include the Carousel plug-in for NetBeans with all the extra tools and editors, so stay tuned!

1 Added support for multiple page loaders
2 Modified the build and the XContentHolder interface
3 Replaced Flexdoc with a new docking framework
4 Added an HTML Builder
5 Toolbar support added
6 New splash screen functionality
7 Component resgistration extended
8 Extended localization support
9 Added support for multiple projects
10 Added input validation feedback
11 System colors support added
12 Extended style support added
13 Validations triggered on page transition
14 An exception handler has been added to the attribute evaluator
15 SWT support enhanced and extended
16 The home page is now optional
17 Annotation support added
18 Extended the shutdown hook and application lifecycle listeners
19 A LayerLayout has been added
20 A ColumnLayout has been added
21 Repeat syntax support extended
22 Component customization support added
23 XPainter replaced with SwingX Painter
24 POJO support added
25 Data bindings refactored
29 Set startup objects
30 Drag and drop support added
31 Unknown attributes now set reflectively
32 Map page names
33 Minimal http server embedded
34 SystemTray support added

Kalideoscope logo
For information on changes to Kalideoscope, the editor for XUI, see the KalIDEoscope pages.

1 Added support for multiple page loaders
Previously only a single page loader could be used and normally this was the XuiBuilder class. By adding support for multiple loaders we can support multiple file formats, including html via additional builders. The individual builders can check the file types and attempt to load the requested pages. This change involves a number of modifications to the interface including renaming the XPageManager.setSecondaryLoader method to XPageManager.addSecondaryLoader and adding a return value to the XPageLoader.loadFrames method

2 Modified the build and the XContentHolder interface
Fixed up the build and the source for the full set of JDKs/compiles. The XContentHolder interface was modified to as the return type checking prevented the getComponent method from returning an Object instead of a Component (which would not work for the SWT/HTML components).

3 Replaced Flexdoc with a new docking framework
Replaced the flexdock framework with a new docking framework based upon the MultiSplitLayout from Hans Muller/SwingLabs. The new framework features drag and drop, zooming, docking etc... and should be considerably more flexible and reliable. The docking framework does not rely on other parts of XUI and can be used independantly. and A test application is included, see svn\xui\branches\xui3\samples\appstyles\FrameTest.

docking application screenshot
XUI 3 FrameTest Docking Application Demo

4 Added an HTML Builder
The HTML builder makes it possible to load pages from HTML and generate a Swing user interface from those pages. The builder makes uses of a set of prototype tag handlers that instantiate Swing components for the the HTML elements and add them to the page. TableLayout is used for handling tables and this library is added o the libs folder. This new feature also makes use of the new support for multiple page loaders so that it is not necessary to specify whether or not a page is XML or HTML, whichever is found will be loaded. As the XuiBuilder is the initial builder it will get preference and will make teh first attempt to load the page. An HTML builder can be installed or configured by startup parameters.

5 Toolbar support added
A new element in the framsets file has been added to provide support for toolbars. The toolbars will be treated as a special page and docked into the application frame. A new widget, the XToolbarButton has also been added to help implement toolbars. The toolbar buttons can take both text and icons.

6 New splash screen functionality
New splash screen functionality has been added with the XSplashWindow class, based on work by Werner Randelshofer. The new class is set as the main entry point, loads and then invokes the XUI start class proper. This new splash functionality appears alot quicker than the previously documented method of creating a splash screen. The functionality of this splash screen is available across all JDKs and is independent of the new splash screen functionality in Mustang.

7 Component resgistration extended
An extended method of registering components has been added. Now by specifying the reflect="true" parameter for a component it is possible to register a component in a single line. Any subsequent access of a component attribute will use reflection to find the appropriate accessor method, and these accessors are then cached for reuse. To register swing components for example all that is needed is the following:

  1.   <Component name="JButton" class="javax.swing.JButton" reflect="true"/>

in the project's components.xml file

8 Extended localization support
A set of new classes for loading resource bundles has been added. Of these, the new EncodedLanguageResourceBundleLoader class allows an additional file, a '.propety_encoding' file to be specified for each language. The file can include a value for the associated properties file endcoding and a set of font maps for that language. The font map can be used to replace fonts on a face-by-face basis, or as a combination of face name and point size.

9 Added support for multiple projects
Added support for multiple projects, so that more than one project can run simultaneously in the same JVM and in the same application frame. The change required significant internal API changes so that the references to the project are consistent with the project ownership. Mostly classed had relied on calls to getCurrentProject(), but with multiple projects this may change during the life of the application the initial reference is now saved internally by many classes, but in other cases it is passed as an new argument.

Multiple project support will allow modular applications to be built and then aggregated into a single end user application.

10 Added input validation feedback
Input fields can now display feedback based upon the success or failure of input validations. So far the validation feedback styles are set on a global basis via the XBaseValidator.setValidationColors method.

11 System colors support added
Support for the system colors has now been added and the named colors can be used in the style files. For example a value

  1. <color_fore value="activeCaption"/>

can now be specified. See the java.awt.SystemColor class for more details

12 Extended style support added
Styles including values other than the basic font and color attributes can now be created. The styles are created as instances of XStyleEx instead of the basic XStyle and these new styles can have any style attribute. When the styles are loaded storage is added for any style name. Once the style has loaded it is marked as closed and further styles can not be (by default) added.

This extension of the style system will make it possible to handle far more component attributes as styles and therefore further consistency can be added to applications. For the built in components the extra style attributes can be used to control values such as alignment, indents, and many other attributes. When the style is being applied to a component following construction the extra attribute values will be set either via the XAttributedComponent interface or via reflection, if the particular component does not support that interface.

In the example below, the extended style is indicated by the extended="true" attribute of the style element, the extra property is specified as the alignment element

  1.         <style name="label" extended="true">
  2.             <color_back value="ffffff"/>
  3.             <font_face value="Arial"/>
  4.             <font_size value="11"/>
  5.             <font_weight value="0"/>
  6.             <font_italic value="0"/>
  7.             <alignment value="right"/>
  8.             <style name="bold">
  9.                 <font_weight value="1"/>
  10.             </style>
  11.         </style>


13 Validation triggered on page transition
Added a TriggerValidations startup properties that is set to true by the new project wizard - and therefore older projects will be unaffected. The flag is read by the PageManager and if true causes the validations to be checked prior to page transition. If the validations fail the page transition will be blocked such that the user must review and correct the reported validation errors.

14 An exception handler has been added to the attribute evaluator
An exception handler has been added to the attribute evaluator. The handler gets called in case of an exception and can override the result returned by the attribute evaluator. The evaluator may be of use in case, for example, an evaluation depends on a list selection and where that list may not have a selected values - the list would otherwise return a value such as null or -1 to indicate the error and this is probably not a valid value for the evaluated attribute. Say a path of a/b/${c}/d/e is enetered and ${c} depends on say a list selection and that list is not fully initialized.

15 SWT support enhanced
A major revision and implementation of the SWT widget set has taken place. The most important widgets are now wrapped and usable in XUI. The applet/application has also been updated to share the very latest XUI infrastructure. A number of helpers, utilities and layout components have also been included. Along with the core SWT development a sample SWT application manager has been included, the XUI International Soccer Manager, demonstrates how to build a complete application using XUI and SWT.

16 The home page is now optional
The home page can now be excluded by specifying a value of NONE if the startup properties. Preventing the home page from loading may be desireable in the case of framesets or other application types where the frames file may also contain a specification for the home page.

17 Annotation support added
Added annotation support such that the page class can have the following annotations

  1. @Page( "foobar" )
  2. class MyClass extends XPage
  3. {
  4.   @Find
  5.   private XButton myBtn;
  6.  
  7.   @Bind( "a/b/c" )
  8.   private XEdit myInput;
  9.  
  10.   @Validate( "CreditCardRule" )
  11.   private XEdit cardNumber;
  12.  
  13.   @Event( method="doProcessing", type="ActionHandler" )
  14.   private XButton processBtn;
  15.  
  16.   ...
  17.  
  18.   public void doProcessing()
  19.   {
  20.     ...
  21.   }
  22.    
  23.   ...
  24. }


18 Extended the shutdown hook and application lifecycle listeners
The Shutdown hook has been extended to support multiple lifecycle listeners. The lifecycle listener gives an application the opportunity to perform cleanup and shutdown activities before the JVM exits. Typically an application may wish to close file or database connections or free up resources before exiting. A new listener, the DataBaseLifecycleListener has been added as ahelper for those
applications using a database like HSQLDB in in-memory or standalone mode that requires the database to be shutdown via a SHUTDOWN query.

19 A LayerLayout has been added
The LayerLayout is intented for use with pages and panels where you want to overlay one set of components with another. All the children of the container with the LayerLayout are given the same size and hence overlay one another. The components are located in the order in which they are created. An application may have to set the opaque property of the panels added to the layers so that the layers appear as expected.

The layering is intended to allow things like background decorations to be added and controlled easily. Layering may also be used to implement features such as overlays and modal/lock-out behavior, say for example overlaying a progress animation during a long running operation.

20 A ColumnLayout has been added
The column layout is a layout in which you can define columns of components. The components are added in rows, but align to the columns. An example usage is in creating forms where a left hand column may contain labels or captions while the right hand column may contain the input fields. Indentation, spacing and padding may be added to control the layout and define the location of individual compoents.

21 Repeat syntax support extended
The Repeat syntax has been extended to support bindings and events, this should improve the ability to create templates containing bindings and events.

22 Component customization support added
A new facility for customizing components has been added such that a collection of method calls can be made to customize a component and set properties on that component. The facility is itself customizable, supporting adapters to control how the properties are applied to the component. The customizations can be applied post creation of the component are just before activation of the page, when the component has been populated. For example in the case of a table the property may apply to the table columns rather than the table itself.

In the example below a table is customized in this way:
  1. <ScrollPane>
  2.   <Table2 name="currentAED" .... customizer="tableCustomizer"/>
  3. </ScrollPane>


the customizer attribute refers to a customization specified in the customizations.xmlfield. The customization file is as follows:
  1. <customizer>
  2.   <Adaptors>
  3.     <Adaptor name="ColumnAdaptor" class="net.xoetrope.registry.TableColumnCustomizer"/>
  4.   </Adaptors>
  5.   <PropertySets>
  6.     <PropertySet name="tableCustomizer" when="1">
  7.       <AutoCreateColumnsFromModel args="false"/>
  8.       <GridColor args="white"/>
  9.       <ViewportBackground args="white"/>
  10.       <Background target="parent" value="white"/>
  11.       <HeaderRenderer adaptor="ColumnAdaptor" scope="*" class="com.xoetrope.swing.table.XTableHeaderRenderer" args="getTableHeader()"/>
  12.       <CellRenderer adaptor="ColumnAdaptor" scope="0-6" class="com.xoetrope.swing.table.XAltRowTableCellRenderer">
  13.         <VerticalAlignment args="1"/><!--SwingConstants.TOP -->
  14.         <AltUnselectedColors args="0,0,102;252,252,255"/>
  15.       </CellRenderer>
  16.       <CellRenderer adaptor="ColumnAdaptor" scope="N" class="com.xoetrope.swing.table.XAltRowTableCellRenderer">
  17.         <VerticalAlignment args="1"/><!--SwingConstants.TOP -->
  18.         <AltUnselectedColors args="0,0,102;252,252,255"/>
  19.         <WrapsText args="true"/>     
  20.       </CellRenderer>
  21.       <AutoResizeMode args="1"/><!--JTable.AUTO_RESIZE_NEXT_COLUMN -->
  22.     </PropertySet>
  23.   </PropertySets>
  24. </customizer>


The results of this customization is a table like the following, with row striping and customized header:
a customized table

23 XPainter replaced with SwingX Painter
The painter classes have been refactored to extend the SwingX Painter class. The SwingX interface was very close to the XUI interface and by using the SwingX version we will have access to a wider range of painters.

24 POJO support added
Support for using POJOs as a backing for the XUI data model has been added. POJOs can be configured from a variety of sources, including hibernate. Most of the configuration takes place automatically via reflection and little needs to be done other than pointing XUI at the root of the POJO model.

25 Data bindings refactored
The data bindings in XUI 3.0 have been significantly refactored to work off a common interface. Not only does this unify and simplify the constuction of bindings, but it also makes it possible to have greater control over the creation of bindings and the provision of diagnostic services. See the XDataBindingFactory page for more details.

29 Set startup objects
Multple startup objects can now be added simply by adding startup property entries in the form

(
;java)
StartupObject<N>=Name;className
StartupObject<N>=Name;className;XProject


where <N> is a counter starting from 0. In the second example the object is constructed via a constructor that takes an instance of the project as an argument

30 Drag and drop support added
Drag and drop supported has been added for selected Swing components. Support is enabled by adding dragEnabled="true" as an attribute. Additional support can be registered by adding a transferhandlers.xml file to the project. The setup is similar to that of the setup of data bindings.

31 Unknown attributes now set reflectively
If there is no way of setting the attributes of a component directly, or through the XAttributedComponent interface, or through a ComponentAdapter then reflection will be used to set the properties. The methods signatures are
parameter types are set using the JVM type signature syntax, for example
  1. <List name="sourceList" x="10" y="11" w="305" h="251" dragEnabled="[Ztrue]"/>

where the dragEnabled attribute corresponds to a call to setDragEnabled( boolean state ). See here for more details of the type specifications.

32 Map page names
A page name can now be paramaterized or mapped, so that a frames file or startup.properties file can specify a key instead of a page name. This key can then be mapped to a specific page depending on the context or on startup parameters.
  1. // In startup.properties specifc the Lifecycle object
  2. LifeCycleListener=com.xoetrope.beaumont.ProjectListener
  3.  
  4.  
  5. // In that object map the "START_PAGE" page name
  6. public class ProjectListener implements XLifeCycleListener
  7. {
  8.   /**
  9.    * Called when the application/applet has been created and initialized.
  10.    * @param project the owner project
  11.    */
  12.   public void initialize( XProject p )
  13.   {
  14.    
  15.     String[] args = (String[])project.getObject( "StartupArgs" );   
  16.     // Set the start page to the 3rd command-line parameter    
  17.     p.getPageManager().mapPageName( "START_PAGE", args[ 3 ] );
  18.   }
  19. }
  20.  
  21.  
  22. // In the frames.xml include the "START_PAGE" key
  23. <Frame name="content" constraint="content" width="500" height="200" content="START_PAGE" title="Home" icon="ac0036-16.png" sidebar="west"/>


33 Minimal http server embedded
A minimal http server is now embedded at net.xoetrope.optional.http.XHttpServer. When customized this server will allow a server appplication to signal a client via a http request. By customizing the server with a response handler the application can then respond with special actions, such as a wake-up or by requesting updates/new data from the server.

34 SystemTray support added
Support for the system tray or launch area has been added. When a system tray icon is added the application can choose to stay resident in memory after the main window has been closed by setting the "ExitOnClose" startup property to false. The advantage of doing this is that the data model does not need to be reinitialized if the main window is just being redisplayed. This initialization can be significantly quicker than normal startup as all
the classes needed by the JVM are already loaded. If remote data is used the startup gain may be even greater as network access may not be required.

The tray icon provides two menu items, one to open the window and the second to close the window and exit the JVM.

This version of the class uses the SwingLabs version of the tray support and is therefore limited to Swing. If JDK 6 or later is being used then the JVM's tray support could be used for non Swing applications.

The system tray/stay resident option may be particularly valuable when used in conjunction with an embedded webserver, as a remote server could thereby signal the application to wake up and display new data or alerts as when such data becomes available by simply making a request to the client application's server. The same process could also be used to provide a tighter integration between a web page/web application and a XUI application.


Bug Fixes:
1503082 Fixed the initial size for the ScaleLayout
1513158 Save path is Windows specific
1514935 Cannot switch between Swing and AWT
1514901 Synth file name ignored
1514802 New Project: inconsistencies
1517675 Initial page name does not set frame center
1541816 Unable to read guides
1566922 Model attributes had to be lowercase
1588596 XBaseModel doesn't handle locale decimals

Upgrading?
If you are upgrading to XUI 3.0 please see the Juice Upgrade Guide for more details on what is involved.

SourceForge Logo



CategoryXUI3
Page was generated in 4.3774 seconds