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();
}
});