从比较编辑器获取文档

时间:2012-01-09 20:34:39

标签: java eclipse eclipse-rcp

如何从比较编辑器获取文档?我有CompareViewerSwitchingPane,但我不知道如何为左右窗格提取文档。

我需要它来获取编辑器中显示的文本。

3 个答案:

答案 0 :(得分:2)

以下代码示例演示如何获取左右比较编辑器Document(以及文档中的文本):

IWorkbench workbench = PlatformUI.getWorkbench();
IEditorPart editorPart = workbench.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
CompareEditorInput compareEditorInput = (CompareEditorInput) editorPart.getEditorInput();
ICompareInput compareInput = (ICompareInput) compareEditorInput.getCompareResult();
ITypedElement leftTypedElement = compareInput.getLeft();
ITypedElement rightTypedElement = compareInput.getRight();
IDocument leftDocument = CompareUI.getDocument(leftTypedElement);
IDocument rightDocument = CompareUI.getDocument(rightTypedElement);
String left = leftDocument.get();
String right = rightDocument.get();

答案 1 :(得分:0)

您需要检索EditorInput,它扩展了CompareEditorInput。从Pluginclass中,您可以使用以下方法检索当前的活动编辑器:

getActiveWorkbenchWindow().getActivePage().getActiveEditor().getEditorInput();

Here您可以看到比较编辑器的工作原理以及如何使用所需的信息填充比较编辑器。

编辑:链接修复。

答案 2 :(得分:0)

我找到了一种方法,可以为他的CompareEditorInput获取文档。有不同类型的比较输入:一个用于CompareEditor,另一个用于CompareEditor查看器。

我与CompareUI.getDocument(Object)如此接近,但是第一次发现它我给了它CompareEditorInput它返回了我null而不是一个合理的对象(可能对于中间开发者来说没有任何谜团,但不适合我)。我不相信这种方法不起作用。

感谢aphex因为我对CompareUI.getDocument(Object)给予了更多的关注,并且它给我一个想法:嘿,为什么不尝试传递DiffNode而不是CompareEditor,最后它工作了!