【问题标题】:How can I hook into Eclipse editor events in my own plugin?如何在我自己的插件中挂钩 Eclipse 编辑器事件?
【发布时间】:2011-06-28 14:18:12
【问题描述】:

我不想创建自己的编辑器,但我想通过挂钩编辑事件来扩展现有编辑器。

例如,每当文本或 xml 编辑器中的文本发生更改时,我都会收到回调并能够对更改做出反应。

这样合适的扩展点存在吗?

【问题讨论】:

    标签: eclipse plugins


    【解决方案1】:

    您可以通过访问IEditorPart 来做到这一点,使用getAdapter(IDocument.class) 然后向它​​添加一个监听器...

    但这真的是一个黑客...... ;-)

    编辑:根据要求,这里还有一些代码。

    public void hookToEditor() {
        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
        if (page == null) return;
        IEditorPart editor = page.getActiveEditor();
        if (editor == null) return;
        IDocument doc = (IDocument) editor.getAdapter(IDocument.class);
        if (doc == null) return;
    
        doc.addDocumentListener(new IDocumentListener() {
            @Override
            public void documentChanged(DocumentEvent event) {
                // Do something
            }
    
            @Override
            public void documentAboutToBeChanged(DocumentEvent event) {
                // About to do something
            }
        });
    }
    

    注意

    • 有很多方法可以获取页面 - 例如通过当前网站
    • 获取编辑器部分的方法有很多,例如通过处理程序
    • 许多编辑器没有嵌入文档 - 例如PDE 编辑器

    【讨论】:

    • 如果没有别的东西,黑客就可以了;)
    • @TonnyMadsen 你能举一个更具体的例子吗?
    【解决方案2】:

    您可以添加资源更改监听器。

    IResourceChangeListener listener =  new IResourceChangeListener() {
        @Override
        public void resourceChanged(IResourceChangeEvent arg0) {
            System.out.println("Text changed");
        }   
    };
    ResourcesPlugin.getWorkspace().addResourceChangeListener(listener);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 2010-11-09
      • 2021-10-06
      • 2014-08-01
      相关资源
      最近更新 更多