Jump to: navigation, search

Difference between revisions of "JFace Data Binding/FAQ"

m (Where can I ask a question?)
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{JFace Data Binding}}
 
{{JFace Data Binding}}
=== Does Data Binding depend upon Eclipse? ===
+
=== Where can I ask a question? ===
The core Data Binding plug-in only depends upon org.eclipse.equinox.common and no other parts of Eclipse.  There are parts of Data Binding that depend upon 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 comment|153630|9}}.
+
You can ask questions on the [http://www.eclipse.org/newsportal/thread.php?group=eclipse.platform.jface Eclipse JFace newsgroup]When you post please prefix the title with "[DataBinding]".
 
+
=== Does Data Binding depend upon 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.databindingFor background and when the separation occurred in see {{bug|153630}}.
+
  
 
=== How do I report a bug? ===
 
=== How do I report a bug? ===
 
On the [https://bugs.eclipse.org/bugs Eclipse bugzilla] log a bug to Eclipse > Platform > UI with "[DataBinding]" in the summary.
 
On the [https://bugs.eclipse.org/bugs Eclipse bugzilla] log a bug to Eclipse > Platform > UI with "[DataBinding]" in the summary.
  
=== When will the public API be ready? ===
+
=== Where can I find examples of how to use data binding? ===
The majority of refactorings have occurred.  We have few planned before [http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_3.html 3.3M6] (API freeze) but we still reserve the right tweak the API as we see fit until then.  The 1.0 version will be a part of Eclipse 3.3.  (Technically, it will be version 1.1, because version 1.0 of data binding shipped with Eclipse 3.2.)  To view the plan item for this see {{bug|154132}}.
+
Have a look at our collection of [[JFace_Data_Binding/Snippets|Snippets]].
 
+
=== Where can I ask a question? ===
+
You can ask questions on the [http://www.eclipse.org/newsportal/thread.php?group=eclipse.platform Eclipse Platform newsgroup].  When you post please prefix the title with "[DataBinding]".
+
 
+
=== How do I bind to the ValidationError of a Binding or DataBindingContext? ===
+
See [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet004DataBindingContextErrorLabel.java?rev=HEAD&content-type=text/vnd.viewcvs-markup snippet 004].
+
 
+
=== How do I run the tests? ===
+
In order to run the tests you need to check out the following projects:
+
* org.eclipse.core.databinding
+
* org.eclipse.core.databinding.beans
+
* org.eclipse.jface.databinding
+
* org.eclipse.jface.examples.databinding
+
* org.eclipse.jface.tests.databinding
+
 
+
View the run configurations in your workspace (Run->Run...).  Run JUnit Plug-in Test->JFace-Data Binding Test Suite.
+
  
 
=== Where can I get the plugins? ===
 
=== Where can I get the plugins? ===
Line 36: Line 17:
 
Just select the desired build (e.g. stable, integration, nightly) and download one of the above distributions.
 
Just select the desired build (e.g. stable, integration, nightly) and download one of the above distributions.
  
=== Where can I find examples of how to use data binding? ===
+
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).
The [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jface.examples.databinding/ org.eclipse.jface.examples.databinding project] contains [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/ snippets] that demonstrate some of the more common usages of the API.
+
 
 +
=== 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. <b>Workbench#createAndRunWorkbench</b> 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 [[JFace_Data_Binding/Snippets|Snippets]] do this - they are standalone applications that just use SWT and JFace. For more information, see the wiki page about [[JFace_Data_Binding/Realm|Realm]].
 +
 
 +
=== Does Data Binding depend on Eclipse and the OSGi runtime? ===
 +
The core Data Binding plug-in only depends on org.eclipse.equinox.common, [[ICU4J]] but no other parts of Eclipse. It will run without OSGi.  See also [[JFace Data Binding/Runtime Dependencies]].
 +
 
 +
=== 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? ===
 +
See [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet004DataBindingContextErrorLabel.java?rev=HEAD&content-type=text/vnd.viewcvs-markup Snippet 004] and [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet014WizardDialog.java?rev=HEAD&content-type=text/vnd.viewcvs-markup Snippet 014].
 +
 
 +
=== 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.
 +
 
 +
Steps:
 +
# 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? ===
+
=== Can JFace Data Binding run against older versions of Eclipse? ===
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}}.
+
Yes, we try to keep the data binding bundles compatible with the previous release of Eclipse - for example, data binding released with Eclipse 3.3 will work against Eclipse 3.2. Depending upon your needs you might need to take an extra step because of the way the released version of the bundles is compiled. For example, the compiled org.eclipse.jface.databinding bundle as released with Eclipse 3.3 will only run against Eclipse 3.3, whereas 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}}.
  
 
[[Category:FAQ]]
 
[[Category:FAQ]]
 
[[Category:Data Binding]]
 
[[Category:Data Binding]]

Latest revision as of 15:49, 15 May 2009

JFace Data Binding
Home
How to Contribute
FAQ
Snippets
Concepts
Binding
Converter
Observable
Realm

Where can I ask a question?

You can ask questions on the Eclipse JFace 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, ICU4J but no other parts of Eclipse. It will run without OSGi. See also JFace Data Binding/Runtime Dependencies.

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?

See Snippet 004 and Snippet 014.

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.

Steps:

  1. Ensure the org.eclipse.jface.tests.databinding project is in your workspace.
  2. Open the Run Dialog (Run->Open Run Dialog...).
  3. Expand the "JUnit Plug-in Test" entry.
  4. Select the "JFace-Data Binding Test Suite" entry and select "Run".

Can JFace Data Binding run against older versions of Eclipse?

Yes, we try to keep the data binding bundles compatible with the previous release of Eclipse - for example, data binding released with Eclipse 3.3 will work against Eclipse 3.2. Depending upon your needs you might need to take an extra step because of the way the released version of the bundles is compiled. For example, the compiled org.eclipse.jface.databinding bundle as released with Eclipse 3.3 will only run against Eclipse 3.3, whereas 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.