2016-06-21 62 views
0

我实现了一个自定义PropertySheet,如here中所述。RCP 3.x可编辑PropertySheet视图

所以我有一个主视图,它实现了selectionProvider,它的作用是在我的自定义PropertySheet视图中显示属性。

我的问题是现在,我想编辑属性视图中选择的一些属性,并防止在主视图中更改选择,如果在属性视图中有未保存的更改。

解决这个问题的最好方法是什么?

如果我在自定义属性视图中实现了ISaveablePart,我可以将其标记为脏。如果我的财产视图很脏,我该如何防止更改选择?

提前致谢!

回答

1

由于视图是非模态(例如非阻塞)UI组件,因此没有真正的方法来阻止视图之外的选择更改。出于这个原因,Properties视图工作的预期方式是尽快保存。

EMF模型的默认基于TreeViewer的实现使用CellEditor来更改其值;当CellEditor中的值发生更改时,已更改的值将自动写回原始模型以避免您提到的数据丢失情况。

换句话说,你必须依靠你的数据源(例如,提供了选择的编辑器)来存储永久性的变化,以及变化可以通过源(编辑)序列化。