eclipse 如何按正确的顺序打开编辑器?

xqnpmsa8  于 2023-06-22  发布在  Eclipse
关注(0)|答案(1)|浏览(119)

我可以让开放的编辑

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

但是它们是无序的(总是以相同的方式返回,哪个窗口在第一个,哪个窗口在第二个并不重要)。对于插件我实现其重要的是我让他们为了他们打开它,有没有办法做到这一点?

x6h2sr28

x6h2sr281#

有一些迹象表明here不能直接从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 */

   }
);

然后您将访问插件中的堆栈。

相关问题