Posted by
shan_man on June 21, 2007 at 9:04 AM PDT
Just a short note to announce that I've posted the 0.6 release of
the Beans Binding project at http://beansbinding.dev.java.net
In this release:
- Improved
JTable support
- More default converters
- Name your
Bindings
- Compile-time type safety for setting
Parameters
- A handful of method renames
Full details, straight from the release notes:
API Changes/Additions
Binding.addBinding/removeBinding/getBindings have been renamed to the more
descriptive Binding.addChildBinding/removeChildBinding/getChildBindings
Binding.setSourcePath/getSourcePath have been renamed to the more
appropriate Binding.setSourceExpression/getSourceExpression
To enforce compile-time type safety, the Object varargs parameter has been
removed from all constructors and methods in Binding and BindingContext.
You must now call setValue directly. To allow for method chaining, setValue
now returns the Binding. As an example, replace this binding:
Binding b = new Binding(source, "${property}", target, "property",
Parameter1, param1Value, Parameter2, param2Value);
with this:
Binding b = new Binding(source, "${property}", target, "property");
b.setValue(Parameter1, param1Value).setValue(Parameter2, param2Value);
Some Binding and BindingContext methods were updated to throw the more
appropriate IllegalArgumentException (rather than IllegalStateException)
for certain conditions.
Binding now has a name property. The ability to name a binding assists in
debugging. Its main goal, however, is to make it possible to fetch
bindings by name. This will show its full utility with future changes
making it easier to validate and then commit or revert bindings as a group.
To support naming a binding, the following API additions have been
made to Binding:
- Constructors that take a
String name parameter
void setName(String name)
String getName()
addChildBinding methods that take a String name parameter
Binding getChildBinding(String name)
In addition, the following additions have been made to BindingContext:
addBinding methods that take a String name parameter
Binding getBinding(String name)
Added a Parameter to control the editability of a JTable when it is the
target of a binding. A new EditableParameter has been added to
SwingBindingSupport to control this. It can be used on a top-level
binding to control the editability of the entire JTable, and/or on the
binding's individual child bindings to control editability of individual
columns. For example, to make all columns non-editable, except for
the first:
Binding b = new Binding(list, null, table, "elements");
// whole table is non-editable
b.setValue(SwingBindingSupport.EditableParameter, false);
b.addChildBinding("${firstName}, null)
.setValue(SwingBindingSupport.TableColumnParameter, 0)
// this column IS editable
.setValue(SwingBindingSupport.EditableParameter, true);
b.addChildBinding("${lastName}, null)
.setValue(SwingBindingSupport.TableColumnParameter, 1);
Issues Resolved
- 2: Need converters between various types and String
- 5: JTable binding support doesn't support sorting and filtering
Other
The JavaDoc in Binding and SwingBindingSupport has been updated to reflect the
change to use EL for the source "property".