2016-06-21 14 views
0

Ich habe ein benutzerdefiniertes PropertySheet wie in here beschrieben implementiert.RCP 3.x bearbeitbare PropertySheet-Ansicht

So habe ich eine Hauptansicht, die den Selectionprovider implementiert und es funktioniert, um die Eigenschaften in meiner benutzerdefinierten PropertySheet-Ansicht anzuzeigen.

Mein Problem ist jetzt, dass ich einige Eigenschaften der Auswahl in der Eigenschaftsansicht bearbeiten und verhindern möchte, dass die Auswahl in der Hauptansicht geändert wird, wenn in der Eigenschaftsansicht nicht gespeicherte Änderungen vorhanden sind.

Was ist der beste Weg, um dieses Problem zu lösen?

Wenn ich das ISaveablePart in meiner benutzerdefinierten Eigenschaftsansicht implementiere, kann ich es als schmutzig markieren. Wie kann ich verhindern, dass die Auswahl geändert wird, wenn meine Property-Ansicht schmutzig ist?

Vielen Dank im Voraus!

Antwort

1

Da es sich bei einer Ansicht um eine nicht-modale (z. B. nicht blockierende) UI-Komponente handelt, gibt es keine Möglichkeit, Auswahländerungen außerhalb der Ansicht zu verhindern. Aus diesem Grund sollten Sie so schnell wie möglich speichern, damit die Eigenschaftenansicht funktioniert.

Die standardmäßige TreeViewer-basierte Implementierung von EMF-Modellen verwendet einen CellEditor, um seine Werte zu ändern. Wenn sich der Wert in einem CellEditor ändert, werden die geänderten Werte automatisch in das ursprüngliche Modell zurückgeschrieben, um die von Ihnen erwähnten Datenverlust-Szenarien zu vermeiden.

Mit anderen Worten, Sie müssen sich auf Ihre Datenquelle verlassen (z. B. den Editor, der die Auswahl bereitstellt), um die permanenten Änderungen zu speichern, und die Änderungen können über diese Quelle (Editor) serialisiert werden.