JFace Data Binding/FAQ
|JFace Data Binding|
|How to Contribute|
- 1 Where can I ask a question?
- 2 How do I report a bug?
- 3 Where can I find examples of how to use data binding?
- 4 Where can I get the plugins?
- 5 What is a Realm, and do I need to care?
- 6 Does Data Binding depend on Eclipse and the OSGi runtime?
- 7 Does Data Binding depend on SWT?
- 8 How do I bind to the ValidationError of a Binding or DataBindingContext?
- 9 How do I run the tests?
- 10 Can JFace Data Binding run against Eclipse 3.2.x?
Where can I ask a question?
You can ask questions on the Eclipse Platform newsgroup. When you post please prefix the title with "[DataBinding]".
How do I report a bug?
On the Eclipse bugzilla log a bug to Eclipse > Platform > UI with "[DataBinding]" in the summary.
Where can I find examples of how to use data binding?
Have a look at our collection of Snippets.
Where can I get the plugins?
The JFace Data Binding plug-ins can be found in any of the following distributions on the Eclipse download page:
- Eclipse SDK
- RCP Runtime/SDK
- Platform Runtime/SDK
Just select the desired build (e.g. stable, integration, nightly) and download one of the above distributions.
The plug-ins you need are org.eclipse.core.databinding, org.eclipse.jface.databinding (if your UI is implemented using SWT and JFace), and org.eclipse.core.databinding.beans (if your model objects conform to the JavaBeans specification).
What is a Realm, and do I need to care?
The data binding core plug-in does not depend on SWT but needs to talk about "being on the UI thread" in the abstract. The class Realm is similar to SWT's Display class - you can call Realm.asyncExec(Runnable) to execute code within a realm (read: on the UI thread), but it does not have any UI-specific methods or fields. If your UI is the only source of changes to your model, then everything will happen on the UI thread anyway and you don't have to worry about realms. Workbench#createAndRunWorkbench will initialize the default realm to be associated with the SWT UI thread if you are writing an RCP application, or a plug-in for the Eclipse Platform. If you are writing an application that only uses SWT, data binding, and optionally JFace, you will have to provide the realm explicitly, or set up a default realm in your main method. All of our Snippets do this - they are standalone applications that just use SWT and JFace. For more information, see the wiki page about Realm.
Does Data Binding depend on Eclipse and the OSGi runtime?
The core Data Binding plug-in only depends on org.eclipse.equinox.common and no other parts of Eclipse. It will run without OSGi. There are parts of Data Binding that depend on SWT/JFace but these have been broken out into a separate plug-in, org.eclipse.jface.databinding. For a discussion of why the core depends upon equinox common see bug 153630 comment 9.
Does Data Binding depend on SWT?
No. Data Binding is meant to be UI toolkit agnostic and more specifically UI agnostic. There is default support for SWT and JFace but this is in the org.eclipse.jface.databinding project which is separate from the core Data Binding APIs that live in org.eclipse.core.databinding. For background and when the separation occurred in see bug 153630.
How do I bind to the ValidationError of a Binding or DataBindingContext?
How do I run the tests?
The main JUnit Test Suite is contained in the org.eclipse.jface.tests.databinding project. This project contributes the "JFace-Data Binding Test Suite" to the IDE. When invoked this suite will run all tests.
- Ensure the org.eclipse.jface.tests.databinding project is in your workspace.
- Open the Run Dialog (Run->Open Run Dialog...).
- Expand the "JUnit Plug-in Test" entry.
- Select the "JFace-Data Binding Test Suite" entry and select "Run".
Can JFace Data Binding run against Eclipse 3.2.x?
Yes, but depending upon your needs you might need to take an extra step. The 1.0 version of JDB does not depend upon Eclipse 3.3 APIs. But the org.eclipse.jface.databinding plug-in distributed by Eclipse will only run against Eclipse 3.3. The distributions of org.eclipse.core.databinding and org.eclipse.core.databinding.beans will run just fine against Eclipse 3.2.x. If wanting to run org.eclipse.jface.databinding against Eclipse 3.2.x you'll need to build it from source against your target platform. For more information as to why this is necessary see bug 177476.