2016-06-21 82 views
0

我實現了一個自定義PropertySheet,如here中所述。RCP 3.x可編輯PropertySheet視圖

所以我有一個主視圖,它實現了selectionProvider,它的作用是在我的自定義PropertySheet視圖中顯示屬性。

我的問題是現在,我想編輯屬性視圖中選擇的一些屬性,並防止在主視圖中更改選擇,如果在屬性視圖中有未保存的更改。

解決這個問題的最好方法是什麼?

如果我在自定義屬性視圖中實現了ISaveablePart,我可以將其標記爲髒。如果我的財產視圖很髒,我該如何防止更改選擇?

提前致謝!

回答

1

由於視圖是非模態(例如非阻塞)UI組件,因此沒有真正的方法來阻止視圖之外的選擇更改。出於這個原因,Properties視圖工作的預期方式是儘快保存。

EMF模型的默認基於TreeViewer的實現使用CellEditor來更改其值;當CellEditor中的值發生更改時,已更改的值將自動寫回原始模型以避免您提到的數據丟失情況。

換句話說,你必須依靠你的數據源(例如,提供了選擇的編輯器)來存儲永久性的變化,以及變化可以通過源(編輯)序列化。