0

我可以打开编辑器

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

这样,但它们是无序的(总是以相同的方式返回,哪个窗口是第一个和哪个窗口无关紧要)。对于插件,我实现它对我来说很重要,以便按顺序打开它们,有没有办法做到这一点?

4

1 回答 1

1

这里有一些迹象表明您无法直接从 API 获得所需的内容。

但是如何:使用页面的 IPartService 注册一个 IPartListener(或者,更好的是,IPartListener2)。那么你应该得到部分开放和部分封闭的消息。从中您可以保留自己的编辑器部件顺序 (IEditorPart)。您可以直接使用它,也可以将它与从 getEditorReferences() 获得的内容结合使用。

所以我在谈论类似的事情:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(
   new IPartListener2() {
      private Stack<IWorkbenchPartReference> partStack = new Stack<IworkbenchPartReference>();

      public void partOpened(IWorkbenchPartReference ref) {
          partStack.push(ref);
      }

      public void partClosed(IWorkbenchPartReference ref) {
          partStack.pop(ref);
      }

      /* you'll need to implement or stub out the other methods of IPartListener2 */
      public void partActivated(IWorkbenchpartReference ref) {}
      public void partDeactivated(IWorkbenchpartReference ref) {}
      /* etc */

   }
);

然后,您将在插件中访问该堆栈。

于 2011-01-04T21:13:40.643 回答