Revision: 1415
          http://svn.sourceforge.net/spring-rich-c/?rev=1415&view=rev
Author:   ge0ffrey
Date:     2006-09-16 01:35:58 -0700 (Sat, 16 Sep 2006)

Log Message:
-----------
divide and conquer upgrading.apt

Modified Paths:
--------------
    trunk/spring-richclient/src/site/apt/user/upgrading.apt
    trunk/spring-richclient/src/site/site.xml

Added Paths:
-----------
    trunk/spring-richclient/src/site/apt/user/upgrading/
    trunk/spring-richclient/src/site/apt/user/upgrading/index.apt
    trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.1.x.apt
    trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.2.x.apt
    trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.3.x.apt

Added: trunk/spring-richclient/src/site/apt/user/upgrading/index.apt
===================================================================
--- trunk/spring-richclient/src/site/apt/user/upgrading/index.apt               
                (rev 0)
+++ trunk/spring-richclient/src/site/apt/user/upgrading/index.apt       
2006-09-16 08:35:58 UTC (rev 1415)
@@ -0,0 +1,17 @@
+ -----
+ Upgrading
+ -----
+ Geoffrey De Smet
+ Mathias Broekelmann
+ -----
+
+Upgrading
+
+    Because the project is still in an alpha stage, backwards compability is 
sometimes broken
+    to create a better overall framework design.
+
+    To ease the upgrading path of our users, the most user-impacting upgrades 
are noted here.
+    By following these recipes it should be fairly straight-forward to upgrade 
to the latest version.
+    If you had to do extra things during an upgrade, please notify us, so we 
can add it here.
+
+    Use the left side menu.

Added: trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.1.x.apt
===================================================================
--- trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.1.x.apt    
                        (rev 0)
+++ trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.1.x.apt    
2006-09-16 08:35:58 UTC (rev 1415)
@@ -0,0 +1,17 @@
+ -----
+ Upgrading
+ -----
+ Geoffrey De Smet
+ Mathias Broekelmann
+ -----
+
+Upgrading from pre-0.1.x to 0.1.x
+
+    * A lot of changes which aren't recorded... Later migrations should have 
everything recorded.
+
+    * Switch from CVS with ANT to Subversion with Maven 2:
+
+    If you have made local changes to the spring rich code,
+    take a <<<cvs diff \> file.patch>>> in <<</src>>> and <<</sandbox>>>
+    and patch it in <<</support/src/main/java>>> or 
<<</support/src/main/resources>>>
+    and <<</sandbox/src/main/java>>> or <<</sandbox/src/main/resources>>>

Added: trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.2.x.apt
===================================================================
--- trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.2.x.apt    
                        (rev 0)
+++ trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.2.x.apt    
2006-09-16 08:35:58 UTC (rev 1415)
@@ -0,0 +1,294 @@
+ -----
+ Upgrading
+ -----
+ Geoffrey De Smet
+ Mathias Broekelmann
+ -----
+
+Upgrading from 0.1.x to 0.2.x
+
+    * Major Refactoring of application services configuration
+
+    A major refactoring of the way that application services (like 
ImageSource, RulesSource, etc.)
+    are handled/located was introduced in version 0.2.0.  This change is 
<<NOT>> backward
+    compatible and it requires changes to both the application context XML 
file and to
+    source code that used the ApplicationServices class.
+
+    A new <<<ApplicationServicesLocator>>> singleton has been introduced in 
order to
+    remove the coupling with the <<<Application>>> object (this improves the 
modularity
+    of the overall framework.  The <<<ApplicationServices>>> class has been 
changed into
+    an interface and a new <<<DefaultApplicationServices>>> class has been 
created to
+    provide the basic functionality.  The new <<<DefaultApplicationServices>>> 
class
+    must be configured in the application context (or programatically) to 
register the
+    needed runtime services.  The application context will no longer be 
searched for
+    beans with magic names.  A typical configuration would look something like 
this:
+
++---
+    <bean id="serviceLocator" 
class="org.springframework.richclient.application.ApplicationServicesLocator">
+        <property name="applicationServices" ref="applicationServices"/>
+    </bean>
+
+    <bean id="applicationServices" singleton="true"
+            
class="org.springframework.richclient.application.support.DefaultApplicationServices">
+        <property name="imageSource" ref="imageSource"/>
+        <property name="rulesSource" ref="rulesSource"/>
+        <property name="formComponentInterceptorFactory" 
ref="formComponentInterceptorFactory"/>
+        <property name="applicationObjectConfigurerId"><idref 
bean="applicationObjectConfigurer"/></property>
+    </bean>
++---
+
+    Note that the <<<DefaultApplicationServices>>> implementation provides 
setter methods
+    for each of the standard platform services.  It also contains a mechanism 
to register
+    a whole set of services using the <<<registryEntries>>> property.  The 
entryMap
+    parameter must be a map with keys that are either class instances (the 
serviceType) or
+    the String name of the class and values that are the implementation to use 
for that service.
+
+    <<It is critical that any services that you are using be registered on the 
applicationServices
+    instance, as they will no longer be located using the old magic bean 
names.>>
+
+    Also, many of the core services have been updated to use the new service 
locator pattern
+    to locate other services instead of requiring explicit configuration in 
the application
+    context.  For example, previously, to define the IconSource, you had to 
configure a bean
+    with a constructor argument referencing the ImageSource, like this:
+
++---
+    <bean id="iconSource"
+        class="org.springframework.richclient.image.DefaultIconSource">
+        <constructor-arg index="0" ref="imageSource"/>
+    </bean>
++---
+
+    With the new service resolution, this is no longer necessary.  In fact, 
since the
+    default IconSource references the registered ImageSource there isn't even 
a need to
+    define the iconSource bean in the context any more.  This kind of runtime 
resolution
+    also applies to the <<<applicationObjectConfigurer>>>, which used to 
require 3
+    constructor arguments.  It no longer requires this explicit configuration, 
you can
+    simply declare the bean like this:
+
++---
+    <bean id="applicationObjectConfigurer" depends-on="serviceLocator"
+        
class="org.springframework.richclient.application.config.DefaultApplicationObjectConfigurer">
+    </bean>
++---
+
+    Note the "depends-on" attribute.  This is necessary in order to ensure 
that the
+    service locator is constructed before the AOC.
+
+    There is a subtle chicken and egg problem with the service locator and the 
AOC.
+    Since the AOC needs the service locator to be constructed before it and 
the AOC
+    also needs to be registered as a runtime service, we have to play a subtle 
game
+    to break the circular dependency.  This is accomplished by registering the 
AOC
+    runtime service (in the <<<applicationServices>>> configuration, using its 
bean
+    id, not a direct reference to the bean.  You can see this in the code 
(repeated
+    from above):
+
++---
+    <property name="applicationObjectConfigurerId"><idref 
bean="applicationObjectConfigurer"/></property>
++---
+
+    The best way to see how the application context should now be configured 
is to look
+    at the simple sample.
+
+    Ok, enough with the application context, let's talk about the changes to 
how services
+    are accessed at runtime.  In version 0.1.0, you would access a service by 
using a
+    simple getter method on the <<<ApplicationServices>>> class, like this:
+
++---
+    IconSource iconSource = Application.services().getIconSource();
++---
+
+    In the new version, there are no specific getters for the individual 
services.  Instead,
+    there is a general <<<Object getServices( Class serviceType )>>> method.  
You pass it
+    the type of the service you need and it returns the implementation.  So, 
the new way
+    to make the same request as above would be:
+
++---
+    IconSource iconSource = 
(IconSource)ApplicationServicesLocator.services().getService(IconSource.class);
++---
+
+    Note that that <<<ApplicationServicesAccessor>>> base class has been 
updated to make
+    appropriate delegated calls, so it can continue to be used as is.  Also, 
the
+    <<<Application.services()>>> method still exists, it just delegates to
+    <<<ApplicationServicesLocator.services()>>>.
+
+    One final note.  The order of object initialization has gotten a little 
more sensitive
+    with this change.  Previously, several classes used a member initializer 
to obtain
+    a reference to a needed service (like LabeledEnumResolver).  This can be a 
problem
+    now if the class in question is itself a service that needs to be 
registered with
+    the service locator.  If so (as was the DefaultComponentFactory for 
example), then
+    you need to refactor the member initializer to use runtime resolution 
instead.  As
+    a concrete example, the code in DefaultFormFactory used to have this 
initializer:
+
++---
+    private LabeledEnumResolver enumResolver = 
(LabeledEnumResolver)ApplicationServicesLocator.services().getService(LabeledEnumResolver.class);
++---
+
+    Now, this code should be used (and all references to the 
<<<eunumResolver>>> member
+    should be replaced with calls to <<<getEnumResolver>>>):
+
++---
+    public void setEnumResolver(LabeledEnumResolver enumResolver) {
+        this.enumResolver = enumResolver;
+    }
+
+    protected LabeledEnumResolver getEnumResolver() {
+        if (enumResolver == null) {
+            enumResolver = 
(LabeledEnumResolver)ApplicationServicesLocator.services().getService(LabeledEnumResolver.class);
+        }
+        return enumResolver;
+    }
++---
+
++--
+    Application.instance().getServices().configure(command)
++--
+
+    should now be
+
++--
+    CommandConfigurer commandConfigurer = (CommandConfigurer) 
ApplicationServicesLocator.services()
+            .getService(CommandConfigurer.class);
+    commandConfigurer.configure(command);
++--
+
+    In order to support simple programmatic use of the 
<<<ApplicationServices>>>, a new
+    <<<StaticApplicationServices>>> class has been provided.  It has a simple
+    <<<registerService(Object service, Class serviceInterface)>>> method for 
registering
+    a service.
+
+    And lastly, there is a new test case base class that makes getting the 
proper application
+    and services locator configured, named <<<SpringRichTestClass>>>.  Take a 
look at how
+    it's used in the existing test classes for more details.  All new tests 
should use this
+    class as their base class.
+
+    * Change of "property" to "field" on forms and form models
+
+    In order to remove confusion regarding form fields and object properties, 
the
+    use of the word "property" has been replaced with "field" in all the Form 
and FormModel
+    contexts.  This should make clear the distinction between a property (in 
the java beans
+    sense) on a model object and the fields (visual abstractions and value 
models) in a form
+    or form model that are generally derived from (bound to) object properties.
+
+    The following tables list the changes made the names of classes and 
methods.
+
+*---------+----------+
+|<<Old Class Name>> | <<New Class Name>> |
+*---------+----------+
+| FormPropertyFaceDescriptor | FieldFace |
+*---------+----------+
+| DefaultFormPropertyFaceDescriptor | DefaultFieldFace |
+*---------+----------+
+| FormPropertyFaceDescriptorSource | FieldFaceSource |
+*---------+----------+
+| MessageSourceFormPropertyFaceDescriptorSource | MessageSourceFieldFaceSource 
|
+*---------+----------+
+| AbstractCachingPropertyFaceDescriptorSource | CachingFieldFaceSource |
+*---------+----------+
+| PropertyMetaData | FieldMetadata |
+*---------+----------+
+| PropertyMetaDataImpl | DefaultFieldMetadata |
+*---------+----------+
+| PropertyMetadataImplTests | DefaultFieldMetadataTests |
+*---------+----------+
+Class name changes
+
+
+*---------+----------+
+|<<Old method Name>> | <<New Method Name>> |
+*---------+----------+
+| FormModel.getPropertyMetadata | FormModel.getFieldMetadata |
+*---------+----------+
+| FormModel.getFormPropertyFaceDescriptor | FormModel.getFieldFace |
+*---------+----------+
+| AbstractFormModel.setFormPropertyFaceDescriptorSource | 
AbstractFormModel.setFieldFaceSource |
+*---------+----------+
+| AbstractFormModel.getFormPropertyFaceDescriptorSource | 
AbstractFormModel.getFieldFaceSource |
+*---------+----------+
+| FormPropertyFaceDescriptorSource.getFormPropertyFaceDescriptor | 
FieldFaceSource.getFieldFace |
+*---------+----------+
+| AbstractCachingPropertyFaceDescriptorSource.loadFormPropertyFaceDescriptor | 
CachingFieldFaceSource.loadFieldFace |
+*---------+----------+
+| DefaultApplicationServices.setFormPropertyFaceDescriptorSource | 
DefaultApplicationServices.setFieldFaceSource |
+*---------+----------+
+| AbstractBinding.getFormPropertyFaceDescriptor | AbstractBinding.getFieldFace 
|
+*---------+----------+
+Method name changes
+
+    * Already changed in a previous upgrade item: DefaultApplicationServices's 
applicationObjectConfigurerBeanId
+    renamed to applicationObjectConfigurerId
+
+    * Inject id's into applicationServices instead of the beans itself (to 
avoid chicken-and-egg problems).
+
+    Before:
+
++--
+    <bean id="applicationServices"
+        
class="org.springframework.richclient.application.support.DefaultApplicationServices">
+        <property name="applicationObjectConfigurer" 
ref="applicationObjectConfigurer"/>
+        <property name="binderSelectionStrategy" 
ref="binderSelectionStrategy"/>
+        <property name="formComponentInterceptorFactory" 
ref="formComponentInterceptorFactory"/>
+        <property name="imageSource" ref="imageSource"/>
+        <property name="rulesSource" ref="rulesSource"/>
+    </bean>
++--
+
+    After:
+
++--
+    <bean id="applicationServices"
+        
class="org.springframework.richclient.application.support.DefaultApplicationServices">
+        <property name="applicationObjectConfigurerId"><idref 
bean="applicationObjectConfigurer" /></property>
+        <property name="binderSelectionStrategyId"><idref 
bean="binderSelectionStrategy"/></property>
+        <property name="formComponentInterceptorFactoryId"><idref 
bean="formComponentInterceptorFactory"/></property>
+        <property name="imageSourceId"><idref bean="imageSource"/></property>
+        <property name="rulesSourceId"><idref bean="rulesSource"/></property>
+    </bean>
++--
+
+    * JGoodies looks has been upgraded from 1.x to 2.x.
+    If you used <<<com.jgoodies.looks.FontSizeHints>>>, you should now use 
<<<com.jgoodies.looks.FontPolicy>>>.
+
+    * Binder for JComboBox and JList changed.
+
+    Context parameter <<<selectableItemsHolder>>> changed to 
<<<selectableItems>>>.
+    The value of this property can now be any type as long as a converter is 
available to convert the type to <<<javax.swing.ListModel>>>.
+    The getter/setter for selectableItemsHolder changed to selectableItems and 
have type Object instead of ValueModel now.
+
+    ListBinding does not support context keys or properties 
<<<selectedItemHolder>>>, <<<selectedItemType>>> and <<<model>>> any more.
+    <<<model>>> is replaced with <<<selectableItems>>> which accepts instances 
of <<<javax.swing.ListModel>>>.
+    <<<selectedItemHolder>>> and <<<selectedItemType>>> where now determined 
from the field to which the list is bound to.
+    The field type can be any type as long as a converter is available to 
convert instances of <<<Object[]>>> to the field type and
+    the field type to <<<Object[]>>>.
+
+    Rename <<<ComboBoxBinder.SELECTABLE_ITEMS_HOLDER_KEY>>> to 
<<<ComboBoxBinder.SELECTABLE_ITEMS_KEY>>>.
+
+    If you used custom renderers or editors, update them to use closures and 
pass the value:
+
++--
+    context.put(ComboBoxBinder.EDITOR_KEY, new 
BeanPropertyValueComboBoxEditor("fullName"));
++--
+
+    changes into:
+
++--
+    context.put(ComboBoxBinder.EDITOR_KEY, new Closure() {
+        public Object call(Object value) {
+            return new BeanPropertyValueComboBoxEditor((ComboBoxEditor) value, 
"fullName");
+        }
+    });
++--
+
+    * Spring binding jar updated. Note that this jar is not part of the spring 
jars or the spring-richclient jars.
+
+    * ApplicationWindow/ApplicationPage/PageComponentPane updates
+    The magic bean name <<<applicationWindowPrototype>>> for instantiating a 
<<<ApplicationWindow>>> has been removed. Now you have to
+    create a <<<ApplicationWindowFactory>>> implementation and register it as 
a service in the <<<applicationServices>>>.
+
+    Implementing a custom <<<ApplicationWindow>>> just to create a custom 
<<<ApplicationPage>>> is no longer necessary, see the next paragraph
+
+    The magic bean name <<<defaultApplicationPagePrototype>>> for 
instantiating a <<<ApplicationPage>>> has been removed. Now you have to
+    create a <<<ApplicationPageFactory>>> implementation and register it as a 
service in the <<<applicationServices>>>.
+
+    <<<PageComponentPane>>> has become an interface. The previous 
implementation has moved to <<<DefaultPageComponentPane>>>
+
+    * The <<<GlazedTableModel>>> contructor no longer requires or wants a 
<<<MessageSource>>>.

Added: trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.3.x.apt
===================================================================
--- trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.3.x.apt    
                        (rev 0)
+++ trunk/spring-richclient/src/site/apt/user/upgrading/upgradingTo0.3.x.apt    
2006-09-16 08:35:58 UTC (rev 1415)
@@ -0,0 +1,10 @@
+ -----
+ Upgrading
+ -----
+ Geoffrey De Smet
+ Mathias Broekelmann
+ -----
+
+Upgrading from 0.2.x to 0.3.x
+
+    * Nothing yet

Modified: trunk/spring-richclient/src/site/apt/user/upgrading.apt
===================================================================
--- trunk/spring-richclient/src/site/apt/user/upgrading.apt     2006-09-15 
08:37:32 UTC (rev 1414)
+++ trunk/spring-richclient/src/site/apt/user/upgrading.apt     2006-09-16 
08:35:58 UTC (rev 1415)
@@ -5,307 +5,6 @@
  Mathias Broekelmann
  -----
 
-Introduction
+Document moved
 
-    Because the project is still in an alpha stage, backwards compability is 
sometimes broken
-    to create a better overall framework design.
-
-    To ease the upgrading path of our users, the most important upgrades are 
noted here.
-
-0.1.0 to 0.2.0
-
-    * Major Refactoring of application services configuration
-
-    A major refactoring of the way that application services (like 
ImageSource, RulesSource, etc.)
-    are handled/located was introduced in version 0.2.0.  This change is 
<<NOT>> backward
-    compatible and it requires changes to both the application context XML 
file and to
-    source code that used the ApplicationServices class.
-    
-    A new <<<ApplicationServicesLocator>>> singleton has been introduced in 
order to
-    remove the coupling with the <<<Application>>> object (this improves the 
modularity
-    of the overall framework.  The <<<ApplicationServices>>> class has been 
changed into
-    an interface and a new <<<DefaultApplicationServices>>> class has been 
created to
-    provide the basic functionality.  The new <<<DefaultApplicationServices>>> 
class
-    must be configured in the application context (or programatically) to 
register the
-    needed runtime services.  The application context will no longer be 
searched for
-    beans with magic names.  A typical configuration would look something like 
this:
-    
-+---
-    <bean id="serviceLocator" 
class="org.springframework.richclient.application.ApplicationServicesLocator">
-        <property name="applicationServices" ref="applicationServices"/>
-    </bean>
-
-    <bean id="applicationServices" singleton="true"
-            
class="org.springframework.richclient.application.support.DefaultApplicationServices">
-        <property name="imageSource" ref="imageSource"/>
-        <property name="rulesSource" ref="rulesSource"/>
-        <property name="formComponentInterceptorFactory" 
ref="formComponentInterceptorFactory"/>
-        <property name="applicationObjectConfigurerId"><idref 
bean="applicationObjectConfigurer"/></property>
-    </bean>
-+---
-
-    Note that the <<<DefaultApplicationServices>>> implementation provides 
setter methods
-    for each of the standard platform services.  It also contains a mechanism 
to register
-    a whole set of services using the <<<registryEntries>>> property.  The 
entryMap
-    parameter must be a map with keys that are either class instances (the 
serviceType) or
-    the String name of the class and values that are the implementation to use 
for that service.
-    
-    <<It is critical that any services that you are using be registered on the 
applicationServices
-    instance, as they will no longer be located using the old magic bean 
names.>>
-    
-    Also, many of the core services have been updated to use the new service 
locator pattern
-    to locate other services instead of requiring explicit configuration in 
the application
-    context.  For example, previously, to define the IconSource, you had to 
configure a bean
-    with a constructor argument referencing the ImageSource, like this:
-    
-+---
-    <bean id="iconSource" 
-        class="org.springframework.richclient.image.DefaultIconSource">
-        <constructor-arg index="0" ref="imageSource"/>
-    </bean>
-+---
-    
-    With the new service resolution, this is no longer necessary.  In fact, 
since the
-    default IconSource references the registered ImageSource there isn't even 
a need to
-    define the iconSource bean in the context any more.  This kind of runtime 
resolution
-    also applies to the <<<applicationObjectConfigurer>>>, which used to 
require 3
-    constructor arguments.  It no longer requires this explicit configuration, 
you can
-    simply declare the bean like this:
-    
-+---
-    <bean id="applicationObjectConfigurer" depends-on="serviceLocator"
-        
class="org.springframework.richclient.application.config.DefaultApplicationObjectConfigurer">
-    </bean>
-+---
-    
-    Note the "depends-on" attribute.  This is necessary in order to ensure 
that the
-    service locator is constructed before the AOC.
-    
-    There is a subtle chicken and egg problem with the service locator and the 
AOC.
-    Since the AOC needs the service locator to be constructed before it and 
the AOC
-    also needs to be registered as a runtime service, we have to play a subtle 
game
-    to break the circular dependency.  This is accomplished by registering the 
AOC
-    runtime service (in the <<<applicationServices>>> configuration, using its 
bean
-    id, not a direct reference to the bean.  You can see this in the code 
(repeated
-    from above):
-    
-+---
-    <property name="applicationObjectConfigurerId"><idref 
bean="applicationObjectConfigurer"/></property>
-+---
-    
-    The best way to see how the application context should now be configured 
is to look
-    at the simple sample.
-    
-    Ok, enough with the application context, let's talk about the changes to 
how services
-    are accessed at runtime.  In version 0.1.0, you would access a service by 
using a
-    simple getter method on the <<<ApplicationServices>>> class, like this:
-    
-+---
-    IconSource iconSource = Application.services().getIconSource();
-+---
-    
-    In the new version, there are no specific getters for the individual 
services.  Instead,
-    there is a general <<<Object getServices( Class serviceType )>>> method.  
You pass it
-    the type of the service you need and it returns the implementation.  So, 
the new way
-    to make the same request as above would be:
-    
-+---
-    IconSource iconSource = 
(IconSource)ApplicationServicesLocator.services().getService(IconSource.class);
-+---
-    
-    Note that that <<<ApplicationServicesAccessor>>> base class has been 
updated to make
-    appropriate delegated calls, so it can continue to be used as is.  Also, 
the
-    <<<Application.services()>>> method still exists, it just delegates to
-    <<<ApplicationServicesLocator.services()>>>.
-
-    One final note.  The order of object initialization has gotten a little 
more sensitive
-    with this change.  Previously, several classes used a member initializer 
to obtain
-    a reference to a needed service (like LabeledEnumResolver).  This can be a 
problem
-    now if the class in question is itself a service that needs to be 
registered with
-    the service locator.  If so (as was the DefaultComponentFactory for 
example), then
-    you need to refactor the member initializer to use runtime resolution 
instead.  As
-    a concrete example, the code in DefaultFormFactory used to have this 
initializer:
-    
-+---
-    private LabeledEnumResolver enumResolver = 
(LabeledEnumResolver)ApplicationServicesLocator.services().getService(LabeledEnumResolver.class);
-+---
-
-    Now, this code should be used (and all references to the 
<<<eunumResolver>>> member
-    should be replaced with calls to <<<getEnumResolver>>>):
-
-+---
-    public void setEnumResolver(LabeledEnumResolver enumResolver) {
-        this.enumResolver = enumResolver;
-    }
-
-    protected LabeledEnumResolver getEnumResolver() {
-        if (enumResolver == null) {
-            enumResolver = 
(LabeledEnumResolver)ApplicationServicesLocator.services().getService(LabeledEnumResolver.class);
-        }
-        return enumResolver;
-    }
-+---
-
-+--
-    Application.instance().getServices().configure(command)
-+--
-
-    should now be
-
-+--
-    CommandConfigurer commandConfigurer = (CommandConfigurer) 
ApplicationServicesLocator.services()
-            .getService(CommandConfigurer.class);
-    commandConfigurer.configure(command);
-+--
-
-    In order to support simple programmatic use of the 
<<<ApplicationServices>>>, a new
-    <<<StaticApplicationServices>>> class has been provided.  It has a simple
-    <<<registerService(Object service, Class serviceInterface)>>> method for 
registering
-    a service.
-    
-    And lastly, there is a new test case base class that makes getting the 
proper application
-    and services locator configured, named <<<SpringRichTestClass>>>.  Take a 
look at how
-    it's used in the existing test classes for more details.  All new tests 
should use this
-    class as their base class.
-    
-    * Change of "property" to "field" on forms and form models
-    
-    In order to remove confusion regarding form fields and object properties, 
the
-    use of the word "property" has been replaced with "field" in all the Form 
and FormModel
-    contexts.  This should make clear the distinction between a property (in 
the java beans
-    sense) on a model object and the fields (visual abstractions and value 
models) in a form
-    or form model that are generally derived from (bound to) object properties.
-    
-    The following tables list the changes made the names of classes and 
methods.
-    
-*---------+----------+
-|<<Old Class Name>> | <<New Class Name>> |
-*---------+----------+
-| FormPropertyFaceDescriptor | FieldFace |
-*---------+----------+
-| DefaultFormPropertyFaceDescriptor | DefaultFieldFace |
-*---------+----------+
-| FormPropertyFaceDescriptorSource | FieldFaceSource |
-*---------+----------+
-| MessageSourceFormPropertyFaceDescriptorSource | MessageSourceFieldFaceSource 
|
-*---------+----------+
-| AbstractCachingPropertyFaceDescriptorSource | CachingFieldFaceSource |
-*---------+----------+
-| PropertyMetaData | FieldMetadata |
-*---------+----------+
-| PropertyMetaDataImpl | DefaultFieldMetadata |
-*---------+----------+
-| PropertyMetadataImplTests | DefaultFieldMetadataTests |
-*---------+----------+
-Class name changes
-
-
-*---------+----------+
-|<<Old method Name>> | <<New Method Name>> |
-*---------+----------+
-| FormModel.getPropertyMetadata | FormModel.getFieldMetadata |
-*---------+----------+
-| FormModel.getFormPropertyFaceDescriptor | FormModel.getFieldFace |
-*---------+----------+
-| AbstractFormModel.setFormPropertyFaceDescriptorSource | 
AbstractFormModel.setFieldFaceSource |
-*---------+----------+
-| AbstractFormModel.getFormPropertyFaceDescriptorSource | 
AbstractFormModel.getFieldFaceSource |
-*---------+----------+
-| FormPropertyFaceDescriptorSource.getFormPropertyFaceDescriptor | 
FieldFaceSource.getFieldFace |
-*---------+----------+
-| AbstractCachingPropertyFaceDescriptorSource.loadFormPropertyFaceDescriptor | 
CachingFieldFaceSource.loadFieldFace |
-*---------+----------+
-| DefaultApplicationServices.setFormPropertyFaceDescriptorSource | 
DefaultApplicationServices.setFieldFaceSource |
-*---------+----------+
-| AbstractBinding.getFormPropertyFaceDescriptor | AbstractBinding.getFieldFace 
|
-*---------+----------+
-Method name changes
-
-    * Already changed in a previous upgrade item: DefaultApplicationServices's 
applicationObjectConfigurerBeanId
-    renamed to applicationObjectConfigurerId
-
-    * Inject id's into applicationServices instead of the beans itself (to 
avoid chicken-and-egg problems).
-
-    Before:
-
-+--
-    <bean id="applicationServices"
-        
class="org.springframework.richclient.application.support.DefaultApplicationServices">
-        <property name="applicationObjectConfigurer" 
ref="applicationObjectConfigurer"/>
-        <property name="binderSelectionStrategy" 
ref="binderSelectionStrategy"/>
-        <property name="formComponentInterceptorFactory" 
ref="formComponentInterceptorFactory"/>
-        <property name="imageSource" ref="imageSource"/>
-        <property name="rulesSource" ref="rulesSource"/>
-    </bean>
-+--
-
-    After:
-
-+--
-    <bean id="applicationServices"
-        
class="org.springframework.richclient.application.support.DefaultApplicationServices">
-        <property name="applicationObjectConfigurerId"><idref 
bean="applicationObjectConfigurer" /></property>
-        <property name="binderSelectionStrategyId"><idref 
bean="binderSelectionStrategy"/></property>
-        <property name="formComponentInterceptorFactoryId"><idref 
bean="formComponentInterceptorFactory"/></property>
-        <property name="imageSourceId"><idref bean="imageSource"/></property>
-        <property name="rulesSourceId"><idref bean="rulesSource"/></property>
-    </bean>
-+--
-
-    * JGoodies looks has been upgraded from 1.x to 2.x.
-    If you used <<<com.jgoodies.looks.FontSizeHints>>>, you should now use 
<<<com.jgoodies.looks.FontPolicy>>>.
-
-    * Binder for JComboBox and JList changed.
-    
-    Context parameter <<<selectableItemsHolder>>> changed to 
<<<selectableItems>>>.
-    The value of this property can now be any type as long as a converter is 
available to convert the type to <<<javax.swing.ListModel>>>.
-    The getter/setter for selectableItemsHolder changed to selectableItems and 
have type Object instead of ValueModel now.
-    
-    ListBinding does not support context keys or properties 
<<<selectedItemHolder>>>, <<<selectedItemType>>> and <<<model>>> any more. 
-    <<<model>>> is replaced with <<<selectableItems>>> which accepts instances 
of <<<javax.swing.ListModel>>>. 
-    <<<selectedItemHolder>>> and <<<selectedItemType>>> where now determined 
from the field to which the list is bound to. 
-    The field type can be any type as long as a converter is available to 
convert instances of <<<Object[]>>> to the field type and 
-    the field type to <<<Object[]>>>.
-
-    Rename <<<ComboBoxBinder.SELECTABLE_ITEMS_HOLDER_KEY>>> to 
<<<ComboBoxBinder.SELECTABLE_ITEMS_KEY>>>.
-
-    If you used custom renderers or editors, update them to use closures and 
pass the value:
-
-+--
-    context.put(ComboBoxBinder.EDITOR_KEY, new 
BeanPropertyValueComboBoxEditor("fullName"));
-+--
-
-    changes into:
-
-+--
-    context.put(ComboBoxBinder.EDITOR_KEY, new Closure() {
-        public Object call(Object value) {
-            return new BeanPropertyValueComboBoxEditor((ComboBoxEditor) value, 
"fullName");
-        }
-    });
-+--
-
-    * Spring binding jar updated. Note that this jar is not part of the spring 
jars or the spring-richclient jars.
-
-    * ApplicationWindow/ApplicationPage/PageComponentPane updates
-    The magic bean name <<<applicationWindowPrototype>>> for instantiating a 
<<<ApplicationWindow>>> has been removed. Now you have to
-    create a <<<ApplicationWindowFactory>>> implementation and register it as 
a service in the <<<applicationServices>>>.
-
-    Implementing a custom <<<ApplicationWindow>>> just to create a custom 
<<<ApplicationPage>>> is no longer necessary, see the next paragraph
-    
-    The magic bean name <<<defaultApplicationPagePrototype>>> for 
instantiating a <<<ApplicationPage>>> has been removed. Now you have to
-    create a <<<ApplicationPageFactory>>> implementation and register it as a 
service in the <<<applicationServices>>>.
-
-    <<<PageComponentPane>>> has become an interface. The previous 
implementation has moved to <<<DefaultPageComponentPane>>>
-
-    * The <<<GlazedTableModel>>> contructor no longer requires or wants a 
<<<MessageSource>>>.
-
-pre-0.1.0 to 0.1.0
-
-    * Switch from CVS with ANT to Subversion with Maven 2:
-
-    If you have made local changes to the spring rich code,
-    take a <<<cvs diff \> file.patch>>> in <<</src>>> and <<</sandbox>>>
-    and patch it in <<</support/src/main/java>>> or 
<<</support/src/main/resources>>>
-    and <<</sandbox/src/main/java>>> or <<</sandbox/src/main/resources>>>
-    
\ No newline at end of file
+    This document has moved {{{upgrading/index.html}here}}.

Modified: trunk/spring-richclient/src/site/site.xml
===================================================================
--- trunk/spring-richclient/src/site/site.xml   2006-09-15 08:37:32 UTC (rev 
1414)
+++ trunk/spring-richclient/src/site/site.xml   2006-09-16 08:35:58 UTC (rev 
1415)
@@ -52,7 +52,11 @@
                 </item>
             </item>
             <item name="Support" href="/user/support.html"/>
-            <item name="Upgrading" href="/user/upgrading.html"/>
+            <item name="Upgrading" href="/user/upgrading/index.html" 
collapse="true">
+                <item name="To 0.3.x" 
href="/user/upgrading/upgradingTo0.3.x.html"/>
+                <item name="To 0.2.x" 
href="/user/upgrading/upgradingTo0.2.x.html"/>
+                <item name="To 0.1.x" 
href="/user/upgrading/upgradingTo0.1.x.html"/>
+            </item>
             <item name="Powered by" href="/user/poweredBy.html"/>
             <item name="Articles" href="/user/articles.html"/>
             <item name="Related projects" href="/user/relatedProjects.html"/>


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
spring-rich-c-cvs mailing list
spring-rich-c-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spring-rich-c-cvs

Reply via email to