Как открыть редакторов в нужном порядке? - PullRequest
0 голосов
/ 04 января 2011

Я могу получить открытые редакторы

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

таким образом, но они неупорядочены (всегда возвращаются одинаково, не имеет значения, какое окно первое и какое второе).Для плагина я реализую это важно для меня, чтобы получить их в порядке их открытия, есть ли способ сделать это?

1 Ответ

1 голос
/ 05 января 2011

Есть некоторое указание здесь , что вы не можете получить то, что вы хотите непосредственно из API.

Но как насчет этого: зарегистрируйте IPartListener (или, еще лучше, IPartListener2) сIPartService страницы.Тогда вы должны получать частично открытые и частично закрытые сообщения.От этого вы можете сохранить свой собственный порядок частей редактора (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 */

   }
);

Затем вы получите доступ к этому стеку вваш плагин.

...