我实现了一个扩展ViewPart的视图,其中包含一个JFace树查看器,一个表查看器和一堆文本框。我已向此视图注册了一个SelectionListener,它侦听工作台中的特殊域模型。此模型是作为EMF模型创建的,因此如果Ecore编辑器处于活动状态并且其中包含任何模型实例,则在选择时会发生数据绑定等,并且树查看器将填充输入。
但是一旦将输入设置到树查看器中,如果我关闭具有域对象的活动Ecore编辑器,则树查看器中的输入将保持不变。我需要的是,如果在选择时收听的编辑器关闭,那么必须清理查看器中的输入并且树查看器再次为空。
我可能需要一个进一步的监听器机制,但我不确定哪一个以及如何?如果有人能提供帮助,我将非常高兴。谢谢!
答案 0 :(得分:1)
您可以在视图中使用IPartListener
来监听工作台中所有部分的更改。
在您的视图中获取IPartService
:
IPartService service = (IPartService)getSite().getService(IPartService.class);
添加监听器:
service.addPartListener(listener);
不要忘记在视图配置中删除侦听器。
您可能对partClosed
和/或partDeactivated
方法最感兴趣。
还有IPartListener2
还有一些其他事件。