RCP开发积累

 

1.关于在RCP程序开发过程中遇到的:No Application ID has been found错误提示。
原因:依赖项添加不完整,漏掉了某些插件。
解决:运行配置中,在Main选项卡中选择运行方式为run an Application,然后在plugins选项卡中选择chose plugins and fregments from the list,然后在列表中Workspace Plugins里面选择自己的插件,在target platform中先设为全不选,然后再点击右边的add required Plugins。
这样就可以把必须的插件都自动的添加到项目中。

2.  eclipse平台图片资源共享:PlatformUI.getWorkbench().getSharedImages().
   getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TASK));

3. WorkbenchWindowAdvisor 中实现类似于eclipse的标签效果
public void preWindowOpen() {
  PlatformUI.getPreferenceStore().setDefault(IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS, false);
  super.preWindowOpen();
}
4.JFACE中设置表格中的一个单元格 是否可编辑:
 1> tableView.setCellModifier(ICellModifier test);
 2> 实现ICellModifier中的 boolean canModify()方法
5. //得到MenuBar上的菜单,菜单索引从0开始
  MenuItem menu = Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell().getMenuBar().getItem(1);
    //得到菜单中的菜单项
    MenuItem item = menu.getMenu().getItem(3);
    //设置菜单项不可用
    item.setEnabled(false); 
6.在RCP中获取IWorkbenchPage对象,实现视图间的事件监听。
 1>从视图中得到: IWorkbenchPage workbenchPage = getViewSite().getPage();  
 2>从外部得到:IWorkbenchPage workbenchPage = Plugin.getDefault().getWorkbench().  
   getActiveWorkbenchWindow().getActivePage();
 3>另外一种:IWorkbenchPage workbenchPage = PlatformUI.getWorkbench().  
   getActiveWorkbenchWindow().getActivePage();
7.获取目标视图中当前选择的元素
 IViewPart viewPart = AuditPlugin.getDefault().getWorkbench() .getActiveWorkbenchWindow().  
 getActivePage().findView("org.eclipse.ui.navigator.ProjectExplorer");   
 StructuredSelection sl = (StructuredSelection) viewPart.getSite().getSelectionProvider().  
 getSelection(); Object obj = sl.getFirstElement();  
8.RCP中设置Action的样式:
 继承Action时,使用super("",Action.AS_DROP_DOWN_MENU);设置Action的样式。
9.工具栏下拉菜单:
 setMenuCreator(IMenuCreator);
10.查看器(如:tableViewer)的update()方法与refresh()方法的区别:
前者假定输入模型结构不变,后者认为输入模型结构发生变化;所以优先调用前者,减少系统开销。
11.通过plugin.xml更改产品的样式
 1>在plugin.xml中对org.eclipse.core.runtime.products扩展点的属性进行更改,如下:
   <extension
            id="product"
            point="org.eclipse.core.runtime.products">
         <product
               application="cn.blogjava.youxia.rcp_start.application"
               name="第一个RCP程序">
            <property
                  name="preferenceCustomization"
                  value="plugin_customization.ini"/>
        </product>
  </extension>
 2>在plugin_customization.ini文件中,配置窗口的样式,如:
  org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false
  org.eclipse.ui/DOCK_PERSPECTIVE_BAR=topRight
12.内部类调用外部类的方法
menuMgr.addMenuListener(new IMenuListener() {
            public void menuAboutToShow(IMenuManager manager) {
                MyView.this.fillContextMenu(manager);
            }
        });
13.容器使用绝对定位,那么控件就必须得setBounds(),否则的话显示不出来。
14.表格里的组合框元素发生变化时,触发组合框的选择改变事件:
((CCombo)( ((ComboBoxCellEditor) testCellEditor).getControl())).addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                tableViewer.refresh();
            }           
        });

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值