Как добавить перспективных слушателей - PullRequest
3 голосов
/ 23 февраля 2012

В нашем приложении у нас есть 4 вида (вид 1, 2, 3 и 4) и 3 ракурса (вид 1, 2 и 3).

Перспективы создаются путем реализации IPerspectivefactory, а представления создаются путем расширения viewPart.

Мы сталкиваемся с ситуацией, когда мы хотим установить фокус на конкретный вид в случае выбора какой-либо из перспектив.

Например, рассмотрим вид 1 как общий вид, который будет отображаться под всеми тремя ракурсами. Мы хотим установить фокус на View1 всякий раз, когда выбираем любую перспективу.

Как добавить слушателей к перспективам?

Мы знаем, что нам нужно добавить IPerspectiveListerner для прослушивания изменений перспективы, но мы не уверены, где его добавить, чтобы получить контроль выполнения внутри методов, которые мы реализовали в IPerspectiveListener.

1 Ответ

4 голосов
/ 23 февраля 2012

Вы можете использовать следующий код:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(new IPerspectiveListener() {
  @Override
  public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
    try {
      page.showView("...", null, IWorkbenchPage.VIEW_VISIBLE);
    } catch (PartInitException ex) {
      ex.printStackTrace();
    }
  }

  @Override
  public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
  }
});

РЕДАКТИРОВАТЬ: так как это связано с view1, вы можете поместить этот код в активатор для плагина view1.Конечно, он не будет отображаться, пока какой-нибудь код не будет загружен из плагина view1.Что-то вроде:

Job job = new UIJob("Add Perspective listener") {
    public IStatus runInUIThread(IProgressMonitor monitor) {
        addPerspectiveListener();
        return Status.OK_STATUS;
    }
};
job.setSystem(true);
job.schedule();
...