Tuesday, May 27, 2008

EditorPart und IsDirty()

Gestern hatte ich meinen Durchbruch, endlich funktioniert das Aendern der GUI Daten so, dass das Editor-Fenster den Stern (naehe Caption) erhaelt.

Zuerst habe ich im Netz gesucht und komplexe Loesungen gefunden, die ich aber mit meinem ObjectModel nicht einsetzen konnte (vielleicht lag es auch nur an mir :-)).

Mein ObjectModel hat ein Object PropertyChangeSupport. So genuegt es dem EditorPart, sprich meinem TrainingEditorPart, das Interface PropertyChangeListener implementiere.

In der Funktion init() uebergebe ich dann den PropertyChangeListener:

public void init(IEditorSite site, IEditorInput input) throws PartInitException
{
..
domainModel.addPropertyChangeListener(this);
..
}

und

public void dispose() {
domainModel.removePropertyChangeListener(this);
super.dispose();
}

Somit kann ich in der Funktion propertyChange alles abfangen:

@Override
public void propertyChange(PropertyChangeEvent evt) {

// Jede Aenderung fuehrt zu dirty = true;
domainModel.setDirty(true);
firePropertyChange(IEditorPart.PROP_DIRTY);

if (evt.getPropertyName() == "name") {
setPartName(evt.getNewValue().toString());
firePropertyChange(IEditorPart.PROP_TITLE);
}
}

Jetzt arbeite ich wieder am Databinding weiter... denn mit Text Feldern funkt alles perfekt aber ich brauche auch DateTime und CheckBoxen.

0 Kommentare: