【问题标题】:Grab selected text from Eclipse Java editor从 Eclipse Java 编辑器中抓取选定的文本
【发布时间】:2011-01-24 15:40:41
【问题描述】:

我正在开发一个 Eclipse 插件,在按下按钮时,插件会在 Java 编辑器中获取选定的文本并将其放入出现的文本框中。

我的代码如下所示:我从这里得到它:http://dev.eclipse.org/newslists/news.eclipse.newcomer/msg02200.html

private ITextSelection getSelection(ITextEditor editor) {
     ISelection selection = editor.getSelectionProvider()
            .getSelection();
     return (ITextSelection) selection;
}

private String getSelectedText(ITextEditor editor) {
     return getSelection(editor).getText();
}

问题是如何让 Java 编辑器的ITextEditor 显示出来。巧合的是,这是我发布的链接中的下一个问题,但没有答案:(

【问题讨论】:

  • 当您说“选定的文本”时,您的意思是实际突出显示,还是仅仅是光标所在的当前关键字?

标签: eclipse eclipse-plugin editor


【解决方案1】:

您可以要求ActiveEditor,如this thread

IEditorPart part;

part =
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().get
ActiveEditor();

if(part instanceof ITextEditor){
    ITextEditor editor = (ITextEditor)part;
    IDocumentProvider provider = editor.getDocumentProvider();
    IDocument document = provider.getDocument(editor.getEditorInput());

OP Krt_Malta 提到了这个blog entry "Programmatically query current text selection",这类似于这个其他 SO 答案(写在博客条目之前"Replace selected code from eclipse editor through plugin command"

【讨论】:

【解决方案2】:

我想在 VonCs 的答案中添加一件事。他描述的获得选择的技术对所有类型的文本编辑器都很有用,不仅仅是这个问题所涉及的 Java 编辑器。但他的解决方案在工作区部分是MultiPageEditorPart 的情况下不起作用,因为那不是ITextEditor

但在许多情况下(例如使用标准 XML 编辑器)MultiPageEditorPart 的页面为ITextEditors。在这些情况下,您可以从 MultiPageEditorPart 获取活动页面并从中获取选择。

这可以通过以下代码完成:

ITextEditor editor = null;

if (part instanceof ITextEditor) {
    editor = (ITextEditor) part;
} else if (part instanceof MultiPageEditorPart) {
    Object page = ((MultiPageEditorPart) part).getSelectedPage();
    if (page instanceof ITextEditor) editor = (ITextEditor) page;
}

if (editor != null) {
    IDocumentProvider provider = editor.getDocumentProvider();
    IDocument document = provider.getDocument(editor.getEditorInput());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多