如何在Eclipse插件中获得“主动编辑器”?

时间:2012-02-19 11:30:33

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

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

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

除了按下绿色的“继续”按钮时,这适用于大多数情况:

Debugger buttons

如果我使用F8快捷方式,则活动编辑器会按预期更新。

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

我可以采取其他途径来获取“可见编辑器”吗?

提前致谢。

艾伦

3 个答案:

答案 0 :(得分:2)

  1. 编辑器仅在具有焦点时才处于活动状态,因此您获得的是API的正确输出。插件的用户不会在调试模式下运行它,因此不关心最终用户
  2. 或者,要获得所有开放式编辑器,您可以执行以下操作:
  3. PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences()

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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