Difference between revisions of "JFace Data Binding/Tutorial"

From Eclipsepedia

Jump to: navigation, search
(New page: == Data Binding Tutorial == === Terms === * Model: a Model represents the Domain Model of your Application. * Target: a Target represents the GUI side. === A first simple binding === <p>L...)
 
(A first simple binding)
Line 49: Line 49:
 
<p>The observeText method takes two params
 
<p>The observeText method takes two params
 
<ul>
 
<ul>
<li>name: the watched Control</li>
+
<li>name: the observed Control</li>
<li>event: when the model will be updated. Choices are </li>
+
<li>event: when the model will be updated. Choices are SWT.FocusOut, SWT.Modify or SWT.NONE</li>
 
</ul>
 
</ul>
 
</p>
 
</p>
 +
<p>Second, we add a '''IObservableValue''' Object for the Model:</p>
 +
<pre>
 +
private DataBindingContext initDataBindings() {
 +
DataBindingContext bindingContext = new DataBindingContext();
 +
        IObservableValue nameTextObserveWidget = SWTObservables.observeText(name, SWT.FocusOut);
 +
 +
IObservableValue personNameObserveValue = BeansObservables.observeValue(person, "name");
 +
 +
return bindingContext;
 +
}
 +
</pre>
 +
<p>The observeValue method takes two params
 +
<ul>
 +
<li>bean: the observed bean</li>
 +
<li>propertyName: the name of the observed property, in our case the persons name.</li>
 +
</ul>
 +
</p>
 +
<p>Last, we need to bind Target and Model. This is done through the DataBindingContext#bindValue method:</p>
 +
<pre>
 +
private DataBindingContext initDataBindings() {
 +
DataBindingContext bindingContext = new DataBindingContext();
 +
        IObservableValue nameTextObserveWidget = SWTObservables.observeText(name, SWT.FocusOut);
 +
IObservableValue personNameObserveValue = BeansObservables.observeValue(person, "name");
 +
 +
bindingContext.bindValue(nameTextObserveWidget, personNameObserveValue, null, null);
 +
 +
return bindingContext;
 +
}
 +
</pre>
 +
<p>The bindValue method takes four params
 +
<ul>
 +
<li>targetObservableValue: our first created IObservableValue </li>
 +
<li>modelObservableValue: our second created IObservableValue </li>
 +
<li>UpdateValueStrategy targetToModel: will be dicusssed later</li>
 +
<li>UpdateValueStrategy modelToTarget: will be dicusssed later</li>
 +
</ul>
 +
</p>
 +
<p>That's it. You successfully created your first JFace Data Binding !</p>

Revision as of 20:22, 12 October 2007

Data Binding Tutorial

Terms

  • Model: a Model represents the Domain Model of your Application.
  • Target: a Target represents the GUI side.

A first simple binding

Looking at the example snippets, you'll see a few SWT examples. This time, we'll create a very simple RCP view. Our createPartControl method has just one Text Element:

	public void createPartControl(Composite parent){

	name = new Text(testGroup, SWT.BORDER);
	final GridData gd_name = new GridData(SWT.FILL, SWT.CENTER, true, false);
	name.setLayoutData(gd_name);

	}

That Text name represents the Target of our binding. Let's add a simple Model:

	static class Person {
		// A property...
		String name = "HelloWorld";

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}
	}

To create your first binding, you need to instantiate a DataBindingContext. Create a method like this:

	private DataBindingContext initDataBindings() {
	DataBindingContext bindingContext = new DataBindingContext();

	return bindingContext;
	}

Next, we add a IObservableValue Object for the Target:

	private DataBindingContext initDataBindings() {
	DataBindingContext bindingContext = new DataBindingContext();

        IObservableValue nameTextObserveWidget = SWTObservables.observeText(name, SWT.FocusOut);

	return bindingContext;
	}

The observeText method takes two params

  • name: the observed Control
  • event: when the model will be updated. Choices are SWT.FocusOut, SWT.Modify or SWT.NONE

Second, we add a IObservableValue Object for the Model:

	private DataBindingContext initDataBindings() {
	DataBindingContext bindingContext = new DataBindingContext();
        IObservableValue nameTextObserveWidget = SWTObservables.observeText(name, SWT.FocusOut);

	IObservableValue personNameObserveValue = BeansObservables.observeValue(person, "name");

	return bindingContext;
	}

The observeValue method takes two params

  • bean: the observed bean
  • propertyName: the name of the observed property, in our case the persons name.

Last, we need to bind Target and Model. This is done through the DataBindingContext#bindValue method:

	private DataBindingContext initDataBindings() {
	DataBindingContext bindingContext = new DataBindingContext();
        IObservableValue nameTextObserveWidget = SWTObservables.observeText(name, SWT.FocusOut);
	IObservableValue personNameObserveValue = BeansObservables.observeValue(person, "name");

	bindingContext.bindValue(nameTextObserveWidget, personNameObserveValue, null, null);

	return bindingContext;
	}

The bindValue method takes four params

  • targetObservableValue: our first created IObservableValue
  • modelObservableValue: our second created IObservableValue
  • UpdateValueStrategy targetToModel: will be dicusssed later
  • UpdateValueStrategy modelToTarget: will be dicusssed later

That's it. You successfully created your first JFace Data Binding !