如何添加透视侦听器

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

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

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

例如,将View 1视为一个常见视图,它将在所有3个视角下显示。 每当我们选择任何透视图时,我们都希望将焦点设置为View1。

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

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

您可以使用以下代码:

 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();