JFace Databinding Problem

ruf

Mitglied
Hallo,

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

Mein Datenmodel

Java:
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

Java:
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
Java:
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
 
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.
 
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.
 
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
 

Neue Themen


Zurück
Oben