如何添加透视侦听器

时间:2012-02-23 11:48:24

标签: java eclipse-rcp

在我们的应用程序中,我们有4个视图(视图1,2,3和4)和3个视角(透视图1,2和3)。

通过实现IPerspectivefactory构建透视图,并通过扩展viewPart构建视图。

我们面临的情况是,如果选择了任何透视图,我们希望将焦点设置为特定视图。

例如,将视图1视为将在所有3个视角下显示的公共视图。每当我们选择任何视角时,我们都希望将焦点设置为View1。

如何向透视图添加侦听器?

我们知道我们必须添加IPerspectiveListerner来监听透视更改但我们不确定在哪里添加它以便我们在IPerspectiveListener下实现的方法中获得执行控制

1 个答案:

答案 0 :(得分:4)

您可以使用以下代码:

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插件的Activator中。当然,直到从view1插件加载一些代码才会显示。类似的东西:

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