2010-09-30 108 views
2

我是新来的Eclipse RCP和具有以下情形的变化后一种观点:Eclipse RCP的更新在编辑器中

  • 一个插件,它是应用程序
  • 另一个女巫是一个视图,并显示 一些数据
  • 而第三个是 编辑器。

在视图中,我可以右键单击记录并选择编辑打开编辑器并让我更改数据。

不,我想在保存编辑器时刷新视图。我认为这是实施白板模式的经典方案。不幸的是,我不太了解它,可能有人会展示一个简单的例子来说明如何在Eclipse RCP中实现它。

由于提前 约翰内斯

回答

2

视图有听编辑器或者 - 甚至更好 - 在编辑模式。如果它侦听编辑器,请查找一些“保存”事件。就我个人而言,我会让模型本身可观察,并通知听众(如您的观点)实际的变化。

该视图然后需要一些逻辑从模型中提取其信息。所以,而不是一个whitboard - 观察者模式应该是您的设计的正确选择。


这是值得一试:添加IPropertyListener给编辑的IEditorPart实例,并等待属性更改。保存后,IEditorPart.PROP_DIRTY属性应该从“脏”变为“不脏”。 eclipse rcp的片段/代码示例很难发展和沟通。使用我的答案中的流行语在eclipse帮助,API和谷歌上进行一些搜索。和:祝你好运;) - 顺便说一句,考虑购买一些关于eclipse插件/ rcp开发的好书,它们值得花费每€/美元。

+0

感谢你的回应,但你有一个简单的源代码示例我如何告诉视图,听编辑器? – john84 2010-09-30 12:59:52

3

您的视图需要实现IPartListener2(http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/ IPartListener2.html)

可以覆盖的方法partInputChanged(IWorkbenchPartReference partRef)刷新THW观点有两种方式: 1)如果与视图的插件有依赖与编辑

If (partRef instanceOf YourEditorClass){ 
YourData yourData = editor.getInput().getxxx(); 
} 

2插件)如果带有视图的插件不依赖于编辑器 的插件,则需要使用适配器。你重写getAdapter方法在编辑器中返回,你需要和视图从适配器

If (partRef instanceOf EditorPart){ 
YourData yourData = Platform.getAdapterManager().getAdapter(this, YourData.class); 
} 

两个代码只是为了显示这个想法的范例中得到数据的数据!

我希望我帮你

相关问题