【问题标题】:Listen on Eclipse Editor Events监听 Eclipse 编辑器事件
【发布时间】:2012-05-19 03:34:19
【问题描述】:

我正在为 Eclipse 编写一个插件,我想知道如何监听任何活动编辑器的编辑器文本更改事件。

基本上,我希望在任何打开的编辑器中修改任何文本时触发侦听器事件。

【问题讨论】:

标签: eclipse events eclipse-plugin


【解决方案1】:

您想访问与编辑器关联的 JFace Document 对象并添加一个 IDocumentListener,这应该可以帮助您入门。

【讨论】:

  • 是否有听众知道何时打开新编辑器(即打开新文件)?
  • 是的,IPartListener。这也会让您知道部件何时被激活。您可以查看该部件是否为编辑器,因为它是EditorPart 的子类(或者可能实现了某些接口)。
【解决方案2】:

听起来很不典型。也非常具有侵入性和危险性。你为什么要听任何编辑器的任何输入?强烈建议不要这样做。那不应该仅限于同一模型的一堆编辑器(IEditorInput)吗?

IWorkbenchPage page = PlatformUI.getWorkbench()
            .getActiveWorkbenchWindow().getActivePage();
    IEditorReference[] editorReferences = page.getEditorReferences();

从 editorReferences 尝试找出添加监听器的方法。 IEditorReference 是一个句柄,并不意味着编辑器被激活。当你打开 Eclipse 时,编辑器会被延迟激活(当它们被点击打开时)。因此激活所有打开的编辑器也会导致性能问题。

【讨论】:

    最近更新 更多