如何在 Eclipse 插件中获取“活动编辑器”?

13

在我的Eclipse插件中,我需要知道屏幕上可见的编辑器何时发生变化。我目前是通过以下方式获取当前的活动编辑器:

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

这对大多数情况都有效,但是当点击绿色的“Continute”按钮时则不行:

Debugger buttons

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

看起来活动编辑器属性在编辑器选项卡获得焦点之前不会被更新(当按下“Continue”按钮时不会发生这种情况)。

是否有其它方法可以获取“可见编辑器”?

先行致谢。

Alan


根据下面的讨论,我假设你的插件是现有调试插件的一个扩展。对吗? - Tonny Madsen
这不是调试插件的扩展,但我确实钩入了关于断点等各种调试事件。 - Alan Spark
3个回答

2
  1. 只有当编辑器被聚焦时,它才处于活动状态,因此您通过API获得的输出是正确的。您插件的用户不会在调试模式下运行它,因此对最终用户没有影响。
  2. 或者,您可以执行以下操作来获取所有打开的编辑器:

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


谢谢您的回复。我实际上是在指用户在他们的Eclipse副本中运行调试器,因此这是最终用户的问题。 - Alan Spark
你觉得用户在你的代码中设置了断点,导致执行被阻塞在那个点上的可能性非常小,对吧? - codejammer
我在谈论用户自己的代码。我想要在用户通过他们的代码调试器时执行一些操作。但这个特定场景并不像我希望的那样工作。如果我可以访问可见的编辑器,那么我就可以处理它。 - Alan Spark

1
IWorkbenchPage接口有一个isPartVisible()方法,用于指示指定部件是否可见。结果不取决于指定的部件当前是否处于活动状态,即是否具有焦点。
要查找可见但当前不活动的编辑器,仅在活动工作台页面上调用此方法可能是不足够的。相反,您可能需要迭代所有工作台窗口,并检查每个窗口页面上编辑器的可见性。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接