在开发中有时会碰到这样的需求,需要判断当前用户的焦点切换到了哪个视图,这时只要使用IPartListener来监听即可。
具体如下:
IWorkbenchPage wp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if(wp != null) {
final IViewPart outlineView = wp.findView(IPageLayout.ID_OUTLINE);
final IViewPart navigatorView = wp.findView(IPageLayout.ID_RES_NAV);
final IViewPart propertiesView = wp.findView(IPageLayout.ID_PROP_SHEET);
……
wp.addPartListener(new IPartListener() {
@Override
public void partActivated(IWorkbenchPart arg0) {
if(arg0 == outlineView) {//判断当前活动的视图是否是Outline视图
System.out.println("Outline View");
}
else if(arg0 == navigatorView) {//判断当前活动的视图是否是Navigator视图
System.out.println("Navigator View");
}
else if(arg0 == propertiesView) {//判断当前活动的视图是否是Properties视图
System.out.println("Properties View");
}
else if(...) {
……
}
}
@Override
public void partBroughtToTop(IWorkbenchPart arg0) {
}
@Override
public void partClosed(IWorkbenchPart arg0) {
}
@Override
public void partDeactivated(IWorkbenchPart arg0) {
}
@Override
public void partOpened(IWorkbenchPart arg0) {
}
});
}