【问题标题】:How to get "active editor" in Eclipse plugin?如何在 Eclipse 插件中获得“活动编辑器”?
【发布时间】:2012-03-10 01:32:00
【问题描述】:

在我的 Eclipse 插件中,我需要知道屏幕上可见的编辑器何时发生了变化。我目前获得的活动编辑器如下:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()

这适用于大多数情况,但按下绿色继续按钮时除外:

如果我使用 F8 快捷键,那么活动编辑器会按预期更新。

在编辑器选项卡获得焦点之前,活动编辑器属性似乎不会更新(按下继续按钮时不会发生这种情况)。

我还有其他途径可以获得“可见编辑器”吗?

提前致谢。

艾伦

【问题讨论】:

  • 鉴于下面的讨论,我假设您的插件是现有调试插件的扩展。对吗?
  • 它不是调试插件的扩展,但我确实挂钩了关于断点等的各种调试事件。

标签: java eclipse eclipse-plugin eclipse-cdt eclipse-jdt


【解决方案1】:
  1. 编辑器只有在获得焦点时才处于活动状态,因此您得到的是 API 的正确输出。您的插件的用户不会在调试模式下运行它,因此最终用户不必担心
  2. 或者,要获取所有打开的编辑器,您可以执行以下操作:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences()

【讨论】:

  • 感谢您的回复。我实际上指的是在他们的 Eclipse 副本中运行调试器的用户,所以这对最终用户来说是个问题。
  • 极不可能在您的代码中使用断点,从而导致执行在该点停止,对吧?
  • 我说的是用户自己的代码。当用户在他们的代码中单步调试调试器时,我想做一些事情。这个特殊的场景并不像我想要的那样工作。如果我可以访问可见编辑器,那么我可以处理它。
【解决方案2】:

IWorkbenchPage interface has anisPartVisible()` 方法指示指定部分是否可见。结果不取决于指定部分当前是否处于活动状态,即是否具有焦点。

要查找可见但当前未激活的编辑器,仅在活动工作台页面上调用此方法可能还不够。相反,您可能必须遍历所有工作台窗口并检查编辑器在每个窗口的可见性。

【讨论】:

    【解决方案3】:

    这个问题类似于下面链接中发布的问题。实现此目的的一种方法是通过创建 Part Listener 来跟踪先前打开的编辑器。 Eclipse Plugin - How to get the last worked on editor

    【讨论】:

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