这里要介绍的是如何给你的RCP程序或Eclipse插件定义透视图并向透视图中添加视图及对各视图间的摆放位置给出定义 好进入正题给我们的插件定义一个透视图先:定义透视图的方法相信很多人都比较清楚要扩展orgeclipseuiperspectives扩展点好直接在我们的pluginxml文件中加入下面一句代码就ok了
﹤extension point=orgeclipseuiperspectives>
﹤perspective
class=reuiperspectivePerspective
icon=icons/amc_perspectgif
id=reuiperspectivePerspective
name=%perspectiveamc>
﹤/perspective>
﹤/extension>
上面的代码中表明我们的透视图id为orgtalendamcpluginPerspective好记住这个id下面我们就要向这个透视图中来添加我们的view(视图)了有两种方法都可以实现视图的添加一种是通过代码直接添加另外一种方法则是直接就在pluginxml里进行配置
通过代码向已知透视图中添加视图并布局
上面的代码中已指出该perspective所对应的类为orgtalendamcpluginPerspective该类需要实现IPerspectiveFactory接口并实现它的createInitialLayout(IPageLayout layout) 方法createInitialLayout(IPageLayout layout) 方法就能够实现对perspective中view的布局详细代码如下
package reuiperspective;
import orgeclipseuiIFolderLayout;
import orgeclipseuiIPageLayout;
import orgeclipseuiIPerspectiveFactory;
import reuiviewsdetaillogDetailLogsView; import reuiviewsjobinfoJobInformationView; import reuiviewsstatinfoDetailStatsView; import reuiviewsstatinfoSimpleStatsView;
/** *//** * The class define for the test blog perspective ﹤br/> * * $Id: Perspectivejavav // :: pub Exp $ * */ public class Perspective implements IPerspectiveFactory { public static final String ID = reuiperspectivePerspective; //$NONNLS$ public void createInitialLayout(IPageLayout layout) { //这里不需要显示editor故而设置为不可见 layoutsetEditorAreaVisible(false); String editorArea = layoutgetEditorArea(); //下面给出的是各view的位置布局定义这些代码都可以直接在pluginxml进行配置可以达到相同效果 layoutaddView(JobInformationViewID IPageLayoutLEFT f editorArea); layoutaddView(DetailLogsViewID IPageLayoutBOTTOM f editorArea); String logInfoFolderID = positionstatlog; IFolderLayout bottomFolder = layoutcreateFolder(logInfoFolderID IPageLayoutBOTTOM f JobInformationViewID); bottomFolderaddView(SimpleStatsViewID); bottomFolderaddView(DetailStatsViewID); layoutgetViewLayout(JobInformationViewID)setCloseable(false); layoutgetViewLayout(SimpleStatsViewID)setCloseable(false); layoutgetViewLayout(DetailStatsViewID)setCloseable(false); } }
这里只是在代码中直接使用view id 如果真要让这些id所对应的view显示出来当然还需要你在自己的插件中给出这些view id的定义
在pluginxml中直接添加视图并配置布局
Eclipse 为各个view在透视图的布局也提供了专用的扩展点它就是orgeclipseuiperspectiveExtensions利用这个扩展点我们甚至不需要对orgtalendamcpluginPerspective类进行任何修改就可以按我们的要求向perspective中添加新的视图(view) 比如要达到上面同效果的视图布局可向pluginxml中添加以下配置代码
﹤extension point=orgeclipseuiperspectiveExtensions>
﹤perspectiveExtension
targetID=reuiperspectivePerspective>
﹤view
id=reuiviewsjobinfoJobInformationView
relative=orgeclipseuieditorss
relationship=left
ratio=
closeable=false/>
﹤view
id=reuiviewsdetaillogDetailLogsView
relative=orgeclipseuieditorss
relationship=bottom
ratio=/>
﹤view
id=reuiviewsstatinfoSimpleStatsView
relative=reuiviewsjobinfoJobInformationView
relationship=bottom
ratio=
closeable=false/>
﹤view
id=reuiviewsstatinfoDetailStatsView
relative=reuiviewsstatinfoSimpleStatsView
relationship=stack
closeable=false/>
﹤/perspectiveExtension>
﹤/extension>
运行后各view间的布局关系如下图所示
)thisstylewidth=; border= twffan=done>
Eclipse的帮助文件中已对该扩展点进行了详细的说明在Eclipse的帮助中直接搜索orgeclipseuiperspectiveExtensions即可得知该扩展点的相关信息