|
From: Luan O'C. <lu...@xo...> - 2007-10-01 18:21:11
|
The second Beta of XUI 3.1 is now on the SourceForge File Release System.
Please note that the NetBeans release now includes what was known as the
Carousel module, which in the process of being renamed to XUI Pro and
XUI Enterprise, but more on that later.
The Eclipse plugin will follow shortly. All source is in SVN.
We hope that this will be the last beta and we expect to make the full
release in the next two to three weeks.
The major changes in XUI 3.1 are as follows:
1 DatabaseTable constructor widened to take a project reference
2 Added an isAvailable/setAvailable method to ServiceProxy
3 XServiceHelper added
4 commit and setAutoCommit methods added
5 Alignment options ignores case
6 Drag and drop support refactored
7 DataConnection refactored
8 XTree extended with findNearestPath
9 Multiple selection support added for lists
10 Warning added for unclosed connection
11 Debug message time logged
12 Added an exclusive mode for the docking app
13 Vertical text alignment options added
14 Style support extended
15 XPageAnnotationProcessor extends
16 Submenu support added.
17 Painters moved and refactored
1 DatabaseTable constructor widened to take a project reference
==================================================
The DatabaseTable class constructor was widened so as to be
consistent with its other constructors, and the dependant
classes were updated accordingly (DatabaseTableModel and
CachedDatabaseTable)
2 Added an isAvailable/setAvailable method to ServiceProxy
==============================================
This allows the proxy to be included or excluded from a call and to record a
common state value other than the return value.
3 XServiceHelper added
===================
A simple helper class to facilitate access to services
4 commit and setAutoCommit methods added
====================================
These new database methods will make it possible to do batch updates with
the database connection and database table models.
5 Alignment options ignores case
==========================
The alignment options for the XEdit component are now case insensitive.
6 Drag and drop support refactored
===========================
Drag and drop support has been refactored to make it more extensible and to
implement the inspector transfer handlers
7 DataConnection refactored
======================
Synchronization fixes added and then refactored
8 XTree extended with findNearestPath
==============================
This new method searches a tree and attempts to select/highlight the
given path.
The method is designed to be used after a tree binding has updated the
tree. In
this scenario the tree nodes may be different from the original tree
model nodes
and therefore the normal methods for selecting a tree path will fail.
9 Multiple selection support added for lists
=================================
Multiple selection support has been added for list components implementing
the XListHolder interface. The XListBinding has also been updated to save
list selections for multiple selection lists. If a list allows multiple
selections
then the output node of the binding will contain an array of Objects
corresponding to the selection.
10 Warning added for unclosed connection
==================================
A warning has been added for unclosed connections. The executeQuery returns
result set and this needs to be closed before another statement can be
used on
the same connection. Unlike previous versions the connection will be
closed prior
to opening a new statement and therefore it is advisable to explicitly
close the
statement using the matching closeQuery call before making another call.
Prior
to this change the success of such queries varied with the database
being used.
11 Debug message time logged
==========================
The time of a debug message is now logged by default. This behavior can be
turned of with DebugLogger.setLogMessageTime( false );
12 Added an exclusive mode for the docking app
==============================================
Added an exclusive mode for page display so that a docking app can display
an initial page without sidebars so that a logon page can be displayed.
13 Vertical text alignment options added
========================================
Extra alignment options have been added so that text in labels and other
components can be aligned vertically.
14 Style support extended
=========================
The style support has been extensively updated so that a whole range of
options can be set via the styles, including size and position.
15 XPageAnnotationProcessor extends
==============================
The annotation processor has been extended so that it searches for
annotations of superclasses if the superclass implements the new
XAnnotatedPage interface. The change is designed to allow creation
of common page classes that are then customized within an
application. The base class can now use annotations.
16 Support for submenus added
=========================
Menus can now have nested submenus. These menus can be created with the
usual menu XML.
17 Painters moved and refactored
===========================
The painters now use the SwingX painters interface (slightly different
from the
original version used by XUI). However, since the SwingX version uses
generics
it has been necessary to add an extra version of the interface to the
API. The
extra version simply forwards the call to the existing methods. As part
of this
cleanup the painter classes in XUI's Swing package have been moved to
the net.xoetrope.swing.painters subpackage.
v3.1 RFEs
========
1741355 Add a post activation page status
1739211 Add a build target for the docking framework jars
1730591 Add invalid initialization warning
v3.1 Bug Fixes:
===============
1799578 Z Order changed when using dialog dismissed
1735784 Flag added to control maximization/minimization of docked frames
1747918 Docking framework constraints mixed up
1794860 Checked for a null binding in Data property editor
1758445 Dragging resizes components
1790609 Reflection cache and property conversions
1787537 Missing component class halts application
1773085 XMetaContent wordwrap
1739693 XScrollableMetaContent doesn't include setContent
1739589 HSQLDB doesnt open with spaces in path
1737636 XListTableBinding not retrieving data
1737626 XListTableBinding NPE on Save
1737154 Validations not loaded when custom validation factory used
1736376 Gridbag constants not handled correctly
1735157 Dynamic bindings not working
1734904 getPropertyTypeName fails
1731270 isValid method fails
1724413 Prepared statements don't work in all cases
1727010 DataConnection has wrong reference to routes
v3.0
====
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 Validation triggered on page transition
14 An exception handler has been added to the attribute evaluator
15 SWT support enhanced
16 Made the home page 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
26 Event handling refactored
27 Validations refactored
28 Action handling added
29 Set startup objects
30 Drag and drop support added
31 Unknown attributes now set reflectively
32 Map page names
33 A minimal embedded http server
34 SystemTray support added
35 XuiProxy added to ease Xui-Swing integration
36 Collection support added for tables
37 XModelHelper moved to the core
38 BeanShell support added
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.addSecondaryLoad 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 frlexdock 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
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.
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:
<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
<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.
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 Added an exception handler to the attribute evaluator
========================================================
<<<<<<< .mine
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.
=======
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 Made the home page 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
Added annotations:
@Page( "foobar" )
class MyClass extends XPage
{
@Find
private XButton myBtn;
@Bind( "a/b/c" )
private XEdit myInput;
@Validate( "CreditCardRule" )
private XEdit cardNumber;
@Event( method="doProcessing", type="ActionHandler" )
private XButton processBtn;
...
public void doProcessing()
{
...
}
...
}
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 locted in the order in which they are created.
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. For example in the case
of a
table the property may apply to the table columns rather than the table
itself.
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
26 Event handling refactored
============================
The event handling has been refactored and now supports registration of new
event types. The registration works in much the same way as the daba
binding and
component registration, with support for multiple configuration files on a
module or project basis.
27 Validations refactored
=========================
The validation handling has been refactored and now supports
registration of new
valiudation types. The registration works in much the same way as the daba
binding and component registration, with support for multiple configuration
files on a module or project basis.
28 Action handling added
========================
A registration facility for actions has been added. Actions can be added
on a
global level or within a named context, corresponding to items such as
menus,
toolbars or pages. Actions can be used in place of event handlers by
specifying
the type as "Action".
29 Set startup objects
======================
Multple startup objects can now be added simply by adding startup property
entries in the form
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 aconstructor 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 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.
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.
33 A minimal HTTP server is 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.
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.
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.
37 XModelHelper moved to the core
=================================
The XModelHelper class has been moved from the optional packages into
the core
at net.xoetrope.xui.data.XModelHelper.
38 BeanShell support added
==========================
Beanshell scripts for XML attribute values can now be used. The inclusion of
the Beanshell support sees some minor refactoring of the scripting
support to
help distinguish the support for various scripting languages. The
scripts used
can also be defined on a page level basis so the complete scripts do not
need
to be embedded within a single attribute.
v3.0 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
1657332 Panel layout problems
1695066 Trimmed white space for values loaded from property files
|