【问题标题】:How do I get 'IStructuredSelection' from editor when user selects on text?当用户选择文本时,如何从编辑器中获取“IStructuredSelection”?
【发布时间】:2011-12-05 02:44:04
【问题描述】:

我正在开发 Eclipse 插件。

我已成功添加上下文菜单(当用户在 Java 编辑器中并在编辑器中单击鼠标右键时)并将其部分连接到我创建的操作类。

显然,当用户单击编辑器上的任何元素(任何文本)并右键单击以打开上下文菜单并选择我创建的菜单时,插件将开始跟踪用户选择的选择。但是,它跟踪的选择总是在 ITextSelection 的实例中,我无法用它做任何有用的事情。我想将选择作为IStructuredSelection 的实例,以便我的插件可以使用它。 反正我能做到吗?

public class MyPluginAction extends ActionDelegate implements IEditorActionDelegate {

    public void run(IAction action) {

    }

    public void selectionChanged(IAction action, ISelection selection) {
        if(selection instanceof IStructuredSelection){
            System.out.println("IStructure");
        } else if(selection instanceof ITextSelection){
            System.out.println("IText");
        }
    }

    public void setActiveEditor(IAction action, IEditorPart targetEditor) {
        // TODO Auto-generated method stub
    }
}

【问题讨论】:

  • IStructuredSelection 的哪个方面是您想玩的有用部分?它只是一个对象列表......
  • 我想从 IStructuredSelection 获取IJavaElement,以便我可以将我的重构插件与该 IJavaElement 一起使用。当用户右键单击 IJavaElement 时,似乎其他一些内部重构工作。我只是想知道最好的方法是什么.....

标签: eclipse eclipse-plugin eclipse-rcp


【解决方案1】:

如果您从编辑器中选择文本,您将始终获得 ITextSelection,获得 IStructuredSelection 根本没有意义。我猜this question 会解决你的问题。

【讨论】:

  • 那么,Java 中的其他一些内部重构如何直接与编辑器中选定的 IJavaElement 一起工作?
猜你喜欢
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
相关资源
最近更新 更多