无痕客

落花无情,流水无痕……

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
在RCP中,view是张贴于perspective之上的。传统的方式是直接在perspective的createInitialLayout方法中按照类似如下的方式添加view并设置布局:
Java代码 复制代码 收藏代码
  1. public void createInitialLayout(IPageLayout layout) {   
  2.      String editorArea = layout.getEditorArea();   
  3.     layout.setEditorAreaVisible(false);    
  4.     layout.addView(SelectedPsrInfoView.ID, IPageLayout.LEFT,    IPageLayout.RATIO_MAX, IPageLayout.ID_EDITOR_AREA);   
  5. }  

但是,这样的配置把view就写死在了该perspective上了。我们可以通过perspectiveExtensions扩展点来进行配置。
假设现在我又两个view 分别是:
com.client.cki.selectedPsrInfoView和
com.client.cki.selectedFltInfoView
那么,如何将这两个view通过perspectiveExtensions的方式配置到指定的某个perspective上呢?看看下面这段plugin.xml的配置文件:
Xml代码 复制代码 收藏代码
  1.   <extension  
  2.          point="org.eclipse.ui.perspectiveExtensions">  
  3.       <perspectiveExtension  
  4.             targetID="com.client.cki.perspective">  
  5. <!-- 指定两个view要张贴在那个perspective之上,用ID标识该perspective-->  
  6.          <view  
  7.                closeable="false"  
  8.                id="com.client.cki.selectedPsrInfoView"  
  9.                minimized="false"  
  10.                moveable="false"  
  11.                ratio="0.5f"  
  12.                relationship="top"  
  13.                relative="org.eclipse.ui.editorss"  
  14.                showTitle="true"  
  15.                standalone="false"  
  16.                visible="true">  
  17.          </view>  
  18. <!--    
  19. 注意:该段注释不要拷贝到配置文件中   
  20. 第一个view: com.client.cki.selectedPsrInfoView   
  21. closeable="false"表明该view无关闭按钮。   
  22. id="com.client.cki.selectedPsrInfoView"指定view的id   
  23. minimized="false"表明初始时不是最小化状态   
  24. moveable="false"表明在运行中该view不可拖动   
  25. ratio="1f"表明其所占的比例 1f表明占据整个参照空间   
  26. relationship="top"表明位于参照的上方   
  27. relative="org.eclipse.ui.editorss"其参照对象。第一个张贴于perspective上的view其参照对象就是这个。   
  28. 后面几项就不解释了 一看都懂。   
  29. -->  
  30.          <view  
  31.                closeable="false"  
  32.                id="com.client.cki.selectedFltInfoView"  
  33.                minimized="false"  
  34.                moveable="false"  
  35.                relationship="stack"  
  36.                relative="com.client.cki.selectedPsrInfoView"  
  37.                showTitle="true"  
  38.                standalone="false"  
  39.                visible="true">  
  40.          </view>  
  41. <!--    
  42. 注意:该段注释不要拷贝到配置文件中   
  43. 第二个view: com.client.cki.selectedFltInfoView   
  44. closeable="false"表明该view无关闭按钮。   
  45. id="com.client.cki.selectedPsrInfoView"指定view的id   
  46. minimized="false"表明初始时不是最小化状态   
  47. moveable="false"表明在运行中该view不可拖动   
  48. relationship="stack"表明其位置与参照对象在同一个topfolder里面   
  49. 其他参数:left:在参照对象的左边   
  50. right:参照对象的右边   
  51. top:上边   
  52. bottom:下边   
  53. relative="com.client.cki.selectedPsrInfoView"其参照对象。表明该view的参照对象是前一个view   
  54. -->  
  55.       </perspectiveExtension>  
  56.    </extension>  


将该段代码拷贝至plugin.xml中,就可以完成配置了。
此时,perspective中就的createInitialLayout方法就非常简单了,基本上什么都不用写。
Java代码 复制代码 收藏代码
  1. public void createInitialLayout(IPageLayout layout) {   
  2.     layout.setEditorAreaVisible(false);   
  3. }  

是不是很简单呢?运行一下,看一下效果吧,perspective中有两个view,两个view在一个tabfolder中,其中前一个是selectedPsrInfoView后一个是selectedFltInfoView。

当然,所有的这些配置都可以在eclipse中plugin.xml的图形化界面完成。看完了这个配置文件,我相信图形化界面大家都会做了。
希望对没有采用perspectiveExtensions配置过的人能有所帮助。
 
posted on 2011-11-09 08:42  无痕客  阅读(2985)  评论(0编辑  收藏  举报