# JFace Databinding Problem



## ruf (7. Jul 2011)

Hallo,

ich versuche mich gerade in JFace Databinding einzuarbeiten und habe ein (kleines) Problem.

Mein Datenmodel


```
public class SettingsAudio implements PropertyChangeListener {
	
	private Boolean mVibrationAlarm;

        public SettingsAudio() {

		mVibrationAlarm = true;
	}

        public void setVibrationAlarm(Boolean pVibrationAlarm) {
		propertyChangeSupport.firePropertyChange("mVibrationAlarm",
				this.mVibrationAlarm, this.mVibrationAlarm = pVibrationAlarm);
	}


	@Override
	public void propertyChange(PropertyChangeEvent pEvent) {
		propertyChangeSupport.firePropertyChange(pEvent.getPropertyName(),
				pEvent.getOldValue(), pEvent.getNewValue());
	}
}
```

in der GUI Komponente habe ich ein SWT CheckBox und damit soll  mVibrationAlarm gesetzt werden.
Mein binding versuch sieht so aus


```
private void bindValues() {
		Realm.runWithDefault(SWTObservables.getRealm(Display.getCurrent()),
				new Runnable() {
					public void run() {
						SettingsAudio tSetting = new SettingsAudio();
						DataBindingContext bindingContext = new DataBindingContext();
						IObservableValue tObserveWidget =    SWTObservables.observeEnabled(mVibrationCheckBox);
								

						IObservableValue tVibrationAlarmObserveValue =BeansObservables.observeValue(tSetting, "mVibrationAlarm");
						bindingContext.bindValue(tObserveWidget,
								tVibrationAlarmObserveValue, null, null);
					}
				});
	}
```

leider endet mein versuch mit einer Exception

```
Exception in thread "main" org.eclipse.core.databinding.BindingException: Could not find property with name mVibrationAlarm in class class de....audio.config.model.SettingsAudio
	at org.eclipse.core.databinding.beans.BeansObservables.getPropertyDescriptor(BeansObservables.java:124)
	at org.eclipse.core.databinding.beans.BeansObservables.observeValue(BeansObservables.java:82)
	at org.eclipse.core.databinding.beans.BeansObservables.observeValue(BeansObservables.java:64)
```

kann mir jemmand sagen was ich da falsch mache.

Vielen Dank schon mal
Ruf


----------



## maki (7. Jul 2011)

1. Halte dich an die JavaBean Spec.
2. Halte dich an die Java Code Konventionen
3. Halte dich an die JavaBean Spec.
4. Halte dich an die Java Code Konventionen

tSetting, mVibrationAlarm, etc. sind FALSCH
richtig wäre setting, vibrationAlarm, etc.

prefixe wie in der Hungarian Notation verstossen nicht nur gegen die JavaBean Spec. und Java Code Konventionen, sondern sind auch generell schlecht.


----------



## ruf (7. Jul 2011)

Vielen Dank, hat geholfen


----------



## Wildcard (8. Jul 2011)

Als Tipp, Databinding wird umso einfacher wenn du ein EMF Modell verwendest anstatt es selbst mit PropertyChangeSupport usw. zu schreiben.
Du hast dann auch Compile-Time Sicherheit beim Binding und musst keine Property Namen als String eintragen.
Ausserdem sind EMF Modelle besser und schneller als das was die meisten Entwickler (ich schließe mich da ein) händisch produzieren können.


----------



## ruf (8. Jul 2011)

Hallo Wildcard,

Databinding mit EMF sieht wirklich viel einfacher aus. Ich werde es mal die Tage ausprobieren.
Vielen Dank nochmal für den Hinweis.

Ruf


----------



## Gast2 (8. Jul 2011)

Kann Wildcard nur recht geben das EMF-Databinding ist wirklich top :toll:


----------

