沙漠中的鱼

欲上天堂,先下地狱
posts - 0, comments - 56, trackbacks - 0, articles - 119
  BlogJava :: 首页 ::  :: 联系 :: 聚合  :: 管理

RCP开发学习笔记

Posted on 2009-11-25 15:57 沙漠中的鱼 阅读(404) 评论(0)  编辑  收藏 所属分类: RCP开发

Application.java 整个程序的入口点,在程序运行时,会选执行run方法,将创建用户界面的工作交给ApplicationWorkbenchAdvisor类
ApplicationWorkbenchAdvisor.java 指定默认的透视图,把创建窗口的开作交给ApplicationWorkbenchWindowAdvisor类
ApplicationWorkbenchWindowAdvisor.java,可能重载它的preWindowCreate,postWindowCreate,preWindowOpen,postWindowOpen等方法,以便修改窗口的外观
ApplicationActionBarAdvisor.java,可以创建菜单和工具条
添加菜单
添加菜单工具栏第一种方法
makeActions创建action,注册action;regsiter(action)是用来把实例注册到工作台中,当工作台销毁的时候,action也可以被销毁
action需要实现IWorkbenchAction接口
fillMenuBar建菜单,工具条,设置相对应的action;
添加菜单工具栏第二种方法
在plugin.xml中添加配置
<extension
 id ="cn.blogjava.youxia.actionset"
 name ="我的菜单扩展"
 point ="org.eclipse.ui.actionSets">
        <actionSet
 description ="第一个扩展"
 id ="RCP_Start.actionSet1"
 label ="RCP_Start.actionSet1"
 visible ="true" >
 <action class ="cn.blogjava.youxia.actions.Action2"
  icon ="icons/alt_window_16.gif"
  id ="RCP_Start.action2"
  label ="第二个菜单项"
  menubarPath ="cn.blogjava.youxia.firstmenu/additions"
  style ="push"
  toolbarPath ="additions"
  tooltip ="第二个菜单项的按钮" />
       </actionSet>
</extension>
Action2必须要实现实现org.eclipse.ui.IWorkbenchWindowActionDelegate接口,多定义了一个方法public void selectionChanged(IAction action, ISelection selection),这个方法是必须的,以便工作台窗口在用户选定哪一项资源的时候通知我们的Action类的实例。这个方法是必须的,以便工作台窗口在用户选定哪一项资源时通知我们的action类的实例

添加视图
在File->New->Other->Designer->RCP->ViewPart->Next
Perspective类:这是RCP应用的默认视图,实现了IPerspectiveFactory接口,并且通过org.eclipse.ui.perspectives扩展ClassName属性指定
在Perspective类中createInitialLayout方法中添加如下代码
layout.addView( BrowserView.ID,
IPageLayout.TOP,
IPageLayout.RATIO_MAX,
IPageLayout.ID_EDITOR_AREA );
在plugin.xml中添加如下节点
<extension point="org.eclipse.ui.views">
    <view
        class="helloworld_rcp.BrowView"
        id="BrowView"
        name="New ViewPart">
    </view>
</extension>
设置隐藏编辑面板
layout.setEditorAreaVisible(false);

Selection Service的整体架构
注册
this.getSite().setSelectionProvider(viewer);
viewer需要实现ISelectProvider接口
监听
this.getSite().getPage().addSelectionListener(this);
this.实现ISelectionListener接口


只有注册用户登录后才能发表评论。


网站导航: