最近做产品用到了这一功能,说实话让我头疼了好一会。不过还好,偶然让我发现了解决方法,写在这里。
先看下面一段代码:
上面的代码可以让当前活动的 视图隐藏。这会原理也就差不多清楚了把。那具体怎样样其他视图隐藏呢,代码如下:
先看下面一段代码:
java 代码
- IViewPart viewpart = getSite().getPage().findView(View.ID);
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().
- getActivePage().hideView(viewpart);
上面的代码可以让当前活动的 视图隐藏。这会原理也就差不多清楚了把。那具体怎样样其他视图隐藏呢,代码如下:
java 代码
- public void run(IAction action)
- {
- boolean Flag = false;
- IWorkbenchWindow[] workbechWindows = PlatformUI.getWorkbench().getWorkbenchWindows();
- for(int i = 0;i
- {
- IWorkbenchPage[] workbechPages = workbechWindows[i].getPages();
- for(int j = 0;j
- {
- IViewPart mapViewPart = workbechPages[j].findView(View.ID);//保持显示的视图
- if(mapViewPart == null)
- {
- Flag = true;
- }
- }
- if(Flag)
- {
- for(int j = 0;j
- {
- IViewPart[] viewParts = workbechPages[j].getViews();
- for(int k = 0; k
- {
- workbechPages[j].hideView(viewParts[k]);
- }
- }
- }
- }
- }
但经过测试后发现行不通,因为我所在的工程只有一个workbenchWindow,一个workbenchPage.
经过多方查证和实验,总算搞定了,代码如下:
java 代码
- public void run(IAction action) {
- try {
- window.getActivePage().showView(MapView.ID);
- }catch (PartInitException e) {
- e.printStackTrace();
- }
- IWorkbenchAction action1 = ActionFactory.MAXIMIZE.create(window);
- action1.run();
- }
这里要说明下showView()函数,如果View没有显示,则显示并置为当前活动的view,如果已经显示了,则只把它置为当前活动的view. ActionFactory.MAXIMIZE.create(window);只对当前活动的view起作用。