我可以打开编辑

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

这样,但是它们是无序的(总是以相同的方式返回,这不是第一个窗口,哪个窗口是什么)。对于插件,我对我的重要意义,以便将它们打开,有什么方法可以做到吗?

有帮助吗?

解决方案

有一些迹象 这里 您无法直接从API获得想要的东西。

但是如何:注册页面的ipartservice(或者更好的是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 */

   }
);

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top