实现 RCP 中 VIEW 视图 全窗口 显示

本文介绍了在Eclipse中如何实现除指定视图外其它所有视图的隐藏,并提供了具体的Java代码实现。通过使用`showView()`和`ActionFactory.MAXIMIZE.create(window)`等方法,可以有效地管理视图的显示状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做产品用到了这一功能,说实话让我头疼了好一会。不过还好,偶然让我发现了解决方法,写在这里。

先看下面一段代码:
java 代码
  1. IViewPart viewpart = getSite().getPage().findView(View.ID);  
  2.                 PlatformUI.getWorkbench().getActiveWorkbenchWindow().  
  3. getActivePage().hideView(viewpart);  

上面的代码可以让当前活动的 视图隐藏。这会原理也就差不多清楚了把。那具体怎样样其他视图隐藏呢,代码如下:

java 代码
 
  1. public void run(IAction action)   
  2.     {  
  3.         boolean Flag = false;  
  4.           
  5.         IWorkbenchWindow[] workbechWindows = PlatformUI.getWorkbench().getWorkbenchWindows();  
  6.         for(int i = 0;i
  7.         {  
  8.             IWorkbenchPage[] workbechPages = workbechWindows[i].getPages();  
  9.             for(int j = 0;j
  10.             {  
  11.                 IViewPart mapViewPart = workbechPages[j].findView(View.ID);//保持显示的视图  
  12.                 if(mapViewPart == null)  
  13.                 {  
  14.                     Flag = true;  
  15.                 }  
  16.             }  
  17.             if(Flag)  
  18.             {  
  19.                 for(int j = 0;j
  20.                 {                     
  21.                     IViewPart[] viewParts = workbechPages[j].getViews();  
  22.                     for(int k = 0; k
  23.                     {  
  24.                         workbechPages[j].hideView(viewParts[k]);  
  25.                     }  
  26.                 }  
  27.             }  
  28.         }  
  29.     }  


但经过测试后发现行不通,因为我所在的工程只有一个workbenchWindow,一个workbenchPage.

经过多方查证和实验,总算搞定了,代码如下:

java 代码
  1. public void run(IAction action) {   
  2.         try {   
  3.             window.getActivePage().showView(MapView.ID);   
  4.         }catch (PartInitException e) {   
  5.             e.printStackTrace();   
  6.         }   
  7.            
  8.         IWorkbenchAction action1 = ActionFactory.MAXIMIZE.create(window);   
  9.         action1.run();   
  10.     }  

这里要说明下showView()函数,如果View没有显示,则显示并置为当前活动的view,如果已经显示了,则只把它置为当前活动的view.      ActionFactory.MAXIMIZE.create(window);只对当前活动的view起作用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值