Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "JFace Data Binding/Tutorial"
(→A first simple binding) |
(→Data Binding Tutorial) |
||
Line 1: | Line 1: | ||
== Data Binding Tutorial == | == Data Binding Tutorial == | ||
+ | --[[User:Frank.schaare.gmail.com|Frank.schaare.gmail.com]] 20:24, 12 October 2007 (EDT) | ||
=== Terms === | === Terms === | ||
* Model: a Model represents the Domain Model of your Application. | * Model: a Model represents the Domain Model of your Application. | ||
Line 8: | Line 9: | ||
public void createPartControl(Composite parent){ | public void createPartControl(Composite parent){ | ||
− | name = new Text( | + | name = new Text(parent, SWT.BORDER); |
final GridData gd_name = new GridData(SWT.FILL, SWT.CENTER, true, false); | final GridData gd_name = new GridData(SWT.FILL, SWT.CENTER, true, false); | ||
name.setLayoutData(gd_name); | name.setLayoutData(gd_name); |
Revision as of 20:24, 12 October 2007
Data Binding Tutorial
--Frank.schaare.gmail.com 20:24, 12 October 2007 (EDT)
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(parent, 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 !