GEF - 如何在Composite中打开编辑器?

时间:2009-04-21 08:14:53

标签: eclipse bpel eclipse-gef

我的名字是Oleg,我正在编写高级功能 - BPEL文件的可视化比较。 我想在“比较”窗格中使用常规编辑器(左侧和右侧) 作为第一步,我只想打开两个编辑器(每个文件一个) 后来我可以“破解”它们,使新零件变绿, 删除的部分红色等...

所以我的问题听起来很简单 我有: - 复合材料 - 描述.bpel文件的资源 我必须在此Composite中为此资源打开默认编辑器。

我将不胜感激任何提示或建议!

我尝试了什么:

我花了几天时间试图更深入地了解GEF, 但毕竟我没有找到任何简单的解决方案 简单的问题。

来自其他项目的人使用:

  • org.eclipse.gmf.runtime.notation.Diagram
  • org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer
  • diagramGraphicalViewer.setContents(diagram)

但我的编辑是基于GEF的,而不是基于GMF的。

据我所知,我不能只在合成中打开编辑器 我必须使用很多“额外”的东西 - EditorManager, 工作区,一些网站等等。

毕竟我写了一些简单的代码,但事实并非如此 工作。可能我用绝对错误的方式写了它,但是让 我引用它只是为了说明我真正需要什么。

File file2open = new File(new Path("/p1/name2.bpel"), (Workspace) BPELPlugin.getPlugin().getWorkspace()) { };
BPELMultipageEditorPart editorPart = new BPELMultipageEditorPart();
FileEditorInput editorInput = new FileEditorInput(file2open);
EditorDescriptor editorDescriptor = null;
try {
   editorDescriptor = (EditorDescriptor)IDE.getEditorDescriptor(file2open);
} catch (PartInitException e) {
   e.printStackTrace();
}
WorkbenchPage workbrenchpage = (WorkbenchPage)   PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
EditorSite editorSite = new EditorSite(new EditorReference(workbrenchpage.getEditorManager(), editorInput, editorDescriptor), editorPart, workbrenchpage, editorDescriptor);
try {
 editorPart.init(editorSite, editorInput);
} catch (PartInitException e) {
 e.printStackTrace();
}
editorPart.createPartControl(mycomposite);

upd:最后我实现了我想要的,但不确定是否有其他人感兴趣:)

2 个答案:

答案 0 :(得分:1)

不,没有好办法在GEF查看器中打开编辑器。记住: 1.“编辑器”是Eclipse平台的概念。即它不仅仅是一个小部件,而是一个完整的基础架构正如你所说 - 你需要IEditorSite等等。 全球环境基金的数字是“轻量级的”。整个GraphicalViewer是一个单独的SWT小部件,并在其上绘制数字 - 它们没有支持它的操作系统小部件。

因此,如果您真的需要在GEF查看器中嵌套编辑器,则必须将SWT复合材料置于查看器之上并管理其放置位置。

答案 1 :(得分:-1)