2012-01-09 85 views

回答

0

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

我与CompareUI.getDocument(对象)如此接近,但第一次我发现它给了它CompareEditorInput,它返回了我null而不是一个合理的对象(可能对于中间开发者没有神秘感,但不适合我)。我把它放在一边,认为这种方法不起作用。

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

0

您需要检索EditorInput,它扩展了CompareEditorInput。从插件类,你可以使用检索当前活动的编辑器:

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

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

编辑:链接固定。

+0

链接断开。此页面中目前没有文字,您可以在其他页面中搜索此页面标题或编辑此页面。 – 2012-01-10 15:39:27

+0

编辑器输入没有在编辑器中进行的当前更改。我需要它们,它们存储在我无法检索的IDocument实例中。 – 2012-01-10 15:41:48

+0

如果我可以将CompareEDitorInput转换为文档。有一个'CompareUI.getDocument(Object)',你是这么做的吗? – 2012-01-10 21:22:55

2

下面的代码示例演示如何获取的左,右比较编辑文档(和文档中的文本):

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();