我按照here中的说明实现了自定义PropertySheet。
所以我有一个主视图,它实现了selectionprovider,它可以在我的自定义PropertySheet视图中显示属性。
现在我的问题是,如果属性视图中有未保存的更改,我想在属性视图中编辑选择的某些属性,并阻止更改主视图中的选择。
解决这个问题的最佳方法是什么?
如果我在自定义属性视图中实现ISaveablePart,我可以将其标记为脏。如果我的属性视图是脏的,我该如何阻止更改选择?
提前致谢!
答案 0 :(得分:1)
由于视图是非模态(例如非阻塞)UI组件,因此没有真正的方法来阻止视图外的选择更改。出于这个原因,Properties视图工作的预期方式是尽快保存。
默认的,基于TreeViewer的EMF模型实现使用CellEditor来更改其值;当CellEditor中的值发生变化时,更改的值会自动写回原始模型,以避免您提到的数据丢失情况。
换句话说,您必须依赖数据源(例如提供选择的编辑器)来存储永久性更改,并且可以通过该源(编辑器)序列化更改。