在我们的应用程序中,我们有4个视图(视图1,2,3和4)和3个视角(透视图1,2和3)。
通过实现IPerspectivefactory
构建透视图,并通过扩展viewPart构建视图。
我们面临的情况是,如果选择了任何透视图,我们希望将焦点设置为特定视图。
例如,将视图1视为将在所有3个视角下显示的公共视图。每当我们选择任何视角时,我们都希望将焦点设置为View1。
如何向透视图添加侦听器?
我们知道我们必须添加IPerspectiveListerner
来监听透视更改但我们不确定在哪里添加它以便我们在IPerspectiveListener
下实现的方法中获得执行控制
答案 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();