![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Eclipse RCP
文章平均质量分 53
cuser_online
致力于软件开发。
展开
-
插件开发:我们应该在什么时候收集扩展点?
在插件开发中,为了利用插件的扩展性,我们通常会自定义一些扩展点(相当于定义一个标准,一个接口)。而将实现,放在其它插件中去实现。既然定义了扩展点,那么我们就应该去收集它以使用。不要在start方法中去收集扩展点,我们应该尽量保证我们的插件懒加载(lazy)。而是应该在使用的时候收集扩展点,什么时候使用,什么时候去加载。eg:package net.chenxs.common.n原创 2011-11-23 22:31:00 · 527 阅读 · 0 评论 -
获取Bundle中的资源
直接看代码InputStream is = EditorPlugin.getDefault().getBundle().getEntry("icons/project.gif").openStream(); protected IEntryDictionary importXMLEntryDictionary( Bundle bundle, IEntryD原创 2011-12-20 21:35:30 · 824 阅读 · 0 评论 -
插件开发,为某个视图贡献右键菜单
废话不说。直接看如何操作。以大家熟悉的Package Explore视图为例。step1:新建一个org.eclipse.ui.popupMenus扩展点,在其下建立一个viewerContribution,id任意(注意保持唯一,不要和工作台和自己的viewerContribution重复),targetID设置为"org.eclipse.jdt.ui.PackageExpl原创 2011-12-13 23:14:49 · 1317 阅读 · 0 评论 -
扩展点总结之org.eclipse.ui.newWizards
新建向导扩展点:org.eclipse.ui.newWizards描述:此扩展点用来注册资源创建向导扩展。创建向导作为“新建对话框”中的选项出现,该向导通常用于创建文件夹或文件。class:实现org.eclipse.ui.INewWizard的java类实例 project - 指示向导将创建 IProject 资源的可选属性。还导致向导作为“新建项目对话框”中的选项出现。原创 2011-12-21 21:49:19 · 2247 阅读 · 0 评论 -
插件开发,为某个编辑器贡献右键菜单
和为视图贡献菜单类似。重复内容请参考"为某个视图添加右键菜单"以java编辑器为例。 step1:新建一个org.eclipse.ui.popupMenus扩展点,在其下建立一个viewerContribution,id任意(注意保持唯一,不要和工作台和自己的viewerContribution重复),targetID设置为"#CompilationUnitEditorCo原创 2011-12-13 23:17:47 · 1445 阅读 · 0 评论 -
为何能够为其它的WorkbenchPart贡献右键菜单?
在前面两篇博文中,已经言及,为视图和编辑器贡献右键菜单。根据见样学样法则。我们去看看这些WorkbenchPart内部作了什么。比如,我们在自己的视图或编辑器中这样做。MenuManager menuMgr = new MenuManager("#popupMenu", "popupMenu"); //$NON-NLS-1$ //$NON-NLS-2$ menuMgr原创 2011-12-13 23:20:49 · 1055 阅读 · 0 评论 -
扩展点总结之org.eclipse.ui.importWizards
导入向导扩展点可在插件和rcp平台中使用扩展点:org.eclipse.ui.importWizards描述:此扩展点用来注册导入向导扩展。导入向导作为“导入对话框”内的选项出现,用来将资源导入工作台。向导可选择指定其主体应包含有关向导的简短文本的描述子元素。class:实现org.eclipse.ui.IImportWizard接口的类的标准名称eg:原创 2011-12-22 22:16:48 · 1474 阅读 · 1 评论 -
扩展点总结之org.eclipse.ui.perspectiveExtensions
org.eclipse.ui.perspectiveExtensions扩展点可将自定义的视图添加进已经存在的透视图中。比如将我们自定义的视图添加到Eclipse中已经存在的Java透视图。eg: point="org.eclipse.ui.perspectiveExtensions"> id原创 2011-12-21 21:52:10 · 1760 阅读 · 0 评论 -
获取每个插件(bunlde)的国际化文件
获取每个插件(bunlde)的国际化文件(plugin.properties或plugin_locale名称.properties) 。比如plugin.properties或plugin_zh_CN.properties等文件。 注意事项: 1.需要在MANI-INF下面的MANIFEST.MF中添加Bundle-Localization: plugin内容。原创 2011-12-20 21:34:26 · 509 阅读 · 0 评论 -
Eclipse扩展点总结之org.eclipse.ui.exportWizards
Export Wizards:导出向导扩展点名称:org.eclipse.ui.exportWizards此扩展点用来注册导出向导扩展。导出向导作为“导出对话框”中的选项出现,用来从工作台导出资源。class:继承自Wizard,实现IExportWizard接口eg: point="org.eclipse.ui.exportWizards">原创 2011-12-27 23:00:52 · 1374 阅读 · 1 评论 -
How do I hook into global actions, such as Copy and Delete?
FAQ How do I hook into global actions, such as Copy and Delete?View中如何关联关联全局的Retarget Action。 Certain standard toolbar and menu entries can be shared among several views and editors. These act转载 2011-12-11 14:22:24 · 637 阅读 · 0 评论 -
How do I enable global actions such as Cut, Paste, and Print in my editor?
FAQ How do I enable global actions such as Cut, Paste, and Print in my editor?如何在Editor激活时关联全局的Retarget Action?Your editor's IEditorActionBarContributor, defined in the editor definition in转载 2011-12-11 14:20:24 · 557 阅读 · 0 评论 -
插件开发或RCP中如何通过actions扩展点配置工具栏按钮(插入到指定的ToolBarManger中)
在插件或RCP开发中,我们通常使用org.eclipse.ui.actions扩展点配置菜单和工具按钮。eg: point="org.eclipse.ui.actionSets"> id="test.actionSet" label="Sample Action Set"原创 2011-11-28 22:57:31 · 1937 阅读 · 0 评论 -
如何构建一个带有自己标签的Eclipse?
做过插件或RCP开发的应该都知道,Eclipse本身就是RCP的一个成功范例。其Application扩展点对应的id为org.eclipse.ui.ide.workbench。在前面的博文中,也介绍过从控制台通过application id启动eclipse的方法 。我们可以随便新建一个自己的RCP项目,然后新建*.product文件,在Application中选中org.ecl原创 2011-11-28 22:58:42 · 555 阅读 · 0 评论 -
插件/RCP的国际化
0.国际化的基本步骤a.准备一个国际化的工具类b.准备properties资源文件c.利用国际化工具类替换需要替换的字符1.在META-INF/MANIFEST.MF中添加Bundle-Localization:plugin2.plugin.xml文件的国际化 以"%"开关的标识符代表的是plugin.properties文件中的键,Eclipse实际使用的的是这个键所原创 2011-11-29 21:18:14 · 864 阅读 · 0 评论 -
RCP开发中,顶级菜单/顶级工具栏多出了一些无关的项?
今天小组里面同志写的RCP demo中顶级菜单上出现了一些无关项,Help菜单下面无故多出了Key Assit,Software Updates项。工具栏也多出了一些无关的项。如图:怎么办?一检查,其RCP应用中添加了org.eclipse.ui.ide依赖,很显然,这些项是由此插件产生的。而且很可能是通过org.eclipse.ui.actionSets扩展点配置的menuBar原创 2011-11-30 23:00:48 · 1238 阅读 · 2 评论 -
关闭当前(Active)视图和关闭所有视图
关闭视图一般是将视图隐藏(hide)起来。直接看代码:1.关闭当前(Active)视图public class CloseAction extends Action{ public CloseAction() { setText("Close"); setActionDefinitionId("org.eclipse.ui.fil原创 2011-12-01 23:04:29 · 885 阅读 · 0 评论 -
RCP开发:多出工具条一扫光
private static final String[] ACTIONSETID = new String[] { "org.eclipse.ant.ui.actionSet.presentation", //$NON-NLS-1$ "org.eclipse.debug.ui.breakpointActionSet",//$NON-NLS-1$ "org原创 2011-12-17 00:01:59 · 832 阅读 · 0 评论 -
打开多个视图支持
首先需要将视图扩展点的allowMultiple设置true。This allows multiple instances of a particular view to be created. They are disambiguated using the secondary id. If a secondary id is given, the view must allow multi原创 2011-12-19 22:33:57 · 487 阅读 · 0 评论 -
MessageFormat的使用
我们可以在*.properties中配置一下模式(pattern)。eg: class.skeleton= public class {0} extends Trade '{\n\ \n\ \tpublic int init() throws Exception\n\ \t{\n\ \t\treturn 0;\n\ \t}\n\原创 2011-12-19 22:26:05 · 384 阅读 · 0 评论 -
IWorkbenchPart的生命周期
IWorkbenchPart的子类有IViewPart(视图)和IEditorPart(编辑器)。通过查看IWorkbenchPart的源码,其描述如下:1.part.init(site)2.part.createControl(parent)3.part.setFocus()4.part.dispose()源代码中的注释 * The lifecycle of a原创 2011-12-11 14:16:48 · 813 阅读 · 0 评论 -
RCP开发中,点位符的巧妙运用
step1:我们可以在继承自ActionBarAdvisor的ApplicationActionBarAdvisor类中填充menubar和toolbar方法中,加入一些点位符。eg:@Override protected final void fillMenuBar(final IMenuManager menuBar) { // Add File menu to menu bar原创 2012-08-29 17:24:37 · 873 阅读 · 0 评论 -
IBinding,IJavaElement,ASTNode等类的相互转化
How to go from one of IBinding, IJavaElement, ASTNode to another?标签:ast,jdt之间的相互转化From an IBinding to its declaring ASTNodeorg.eclipse.jdt.core.dom.CompilationUnit.findDeclaringNode(IBinding)翻译 2012-08-20 14:18:15 · 1335 阅读 · 0 评论 -
RCP:为工具栏(CoolBar)贡献右键菜单
群里有网友问到。刚好以前做过。以为RCP的工具栏贡献锁定和隐藏右键为例吧。直接贴代码了。搞插件的,看代码就能明白吧?改写一下ActionBarAdvisor实现类的fillCoolBar方法。 protected void fillCoolBar(ICoolBarManager coolBar) { IToolBarManager toolbar = new Tool原创 2012-08-30 17:25:02 · 1504 阅读 · 0 评论 -
让你的视图(ViewPart)支持Show In请求(1)
编辑器和视图都能支持名为Show In的导航操作。这个操作在workbench菜单栏的Navitate菜单的show in子菜单下,UI上的展示可能如下图所示:这一功能通常也会被添加至视图或编辑器的右键菜单中(如何添加在后面的博文中有描述),如下所示:Show In请求,为WrokbenchPart间的交互提供了一种较为通用的方式。本篇,描述的是下面一种需求:将你自己的视图添加原创 2012-09-11 17:29:11 · 947 阅读 · 0 评论 -
让你的视图(ViewPart)支持Show In请求(2)
本篇博文接上一篇(让你的视图(ViewPart)支持Show In请求(1))。本篇要描述的内容为:当你自己的视图(或编辑器)激活时,显示相应的目标Show In目标视图并为即将show in的目标视图提供数据支持。1.实现org.eclipse.ui.part.IShowInSource接口,并实现public ShowInContext getShowInContext();方法。原创 2012-09-11 17:35:18 · 765 阅读 · 0 评论 -
将Show In菜单添加至视图或编辑器的右键菜单中
涉及的概念其实只有org.eclipse.jface.action.IContributionItem和org.eclipse.ui.actionn.ContributionItemFactory。本文只给出实现方法。IMenuManager manager =...;MenuManager showInSubMenu= new MenuManager("Show In");原创 2012-09-11 17:38:06 · 903 阅读 · 0 评论 -
如何自己定义RetargetAction
在Eclipse平台,已经内置了很多RetargetAction,比如save,save as,cut,copy,paste,delete等,同时我们也可以定义自己的Retarget Action,赋予它们自己的语义,通常有2种方式.1.写代码,下面代码来自gef源码: eg1:package org.eclipse.gef.ui.actions;import org.ecli原创 2012-09-06 22:08:41 · 847 阅读 · 0 评论 -
弹出首选项对话框并定位至指定页面
某些时候,我们的Action的执行依赖于某些配置已经完好才能运行,即要检查环境是否已经配置完好。我们可以这样做:在Action的run中进行判断,然后将用户引导至配置页面进行环境配置。对用户体验是非常好的。public class StartActionDelegate implements IWorkbenchWindowActionDelegate { private IWo原创 2012-09-19 16:24:31 · 771 阅读 · 0 评论 -
自定义Eclipse中点击Propertyies弹出的首选项对话框
自定义Eclipse中点击Propertyies弹出的首选项对话框,我们可以将其用在我们自己的RCP中。步骤如下:1.定义PreferenceDialog,如:public class PropertyPreferenceDialog extends PreferenceDialog 2.完成构造方法。如:private ITreeEntry entry;//传一个树结点原创 2012-09-19 16:49:38 · 1004 阅读 · 0 评论 -
ViewPart的主要方法执行顺序
ViewPart的主要方法执行顺序1.无参构建方法2.init(IViewSite site, IMemento memento)3.init(IViewSite site)4.createPartControl5.setFocus当ViewPart被"X"掉后,会将UI全部销毁,其中disposed是用来销毁用户自定义资源的,可以在这里释放静态资源。重原创 2012-09-21 13:28:16 · 1103 阅读 · 0 评论 -
编译运行xmind3.2源码
XMind是一款顶级 商业品质的思维导图(mindmap)和头脑风暴(brainstorm)软件,2008年“最佳Eclipse RCP商业应用”获奖产品。从2008年10月起,XMind 推出 开源版本,并荣获 sourceforge 社区 2009 最佳学术应用奖。它采用Java语言开发,基于Eclipse RCP体系结构,可以运行于Windows/Mac/Linux平台。其技术构架基原创 2012-10-26 09:52:50 · 1748 阅读 · 1 评论 -
OSGI:osgi.bundles与osgi.bundles.defaultStartLevel
红色内容来自个人理解,其余来自eclipse helps。英文:osgi.bundlesThe comma-separated list of bundles which are automatically installed and optionally started once the system is up and running. Each entry is of the form:原创 2012-11-05 16:53:29 · 1854 阅读 · 0 评论 -
RetargetAction实现原理简单代码剖析
我们知道,RetargetAction是一个UI占位符,只提供了最简单的诸如id,image,tooltip等信息,真实的Action可以动态的绑定,详细内容在以前的博文中已有论述(在Eclipse开发中使用Retarget Action),今天主要是分析一下其基本原理,和IPartListener接口有关(参见IPartListener与IPartListener2[总结]).先原创 2012-09-06 21:59:21 · 811 阅读 · 0 评论 -
在Eclipse开发中使用Retarget Action
Retarget Action这是一种具有一定语义但没有实际功能的Action,它唯一的作用就是在主菜单条或主工具条上占据一个项位置,编辑器可以将具有实际功能的Action映射到某个Retarget Action,当这个编辑器被激活时,主菜单/工具条上的那个Retarget Action就会具有那个Action的功能。举例来说,Eclipse提供了IWorkbenchActionConstan原创 2011-01-23 23:02:00 · 1175 阅读 · 0 评论 -
为首选项添加PropetyChange事件监听
可以为首选项添加PropetyChange事件监听,设置了新的Property时更新UI部分的显示。eg:Activator.getDefault().getPreferenceStore() .addPropertyChangeListener(new IPropertyChangeListener() { @Override public void pro原创 2012-09-03 00:10:19 · 586 阅读 · 0 评论 -
根据给定的IEditPar或IEditorInput获取IFile实例。
根据IEditorInput获取IFile实例 public static IFile getFile(IEditorInput editorInput) {if (editorInput == null) {return null;} Object o = editorInput.getAdapter(IFile.class); if (o i原创 2012-09-03 14:53:51 · 1821 阅读 · 1 评论 -
Eclipse Preference scope
Preference是Eclipse平台内置支持的几种持久化(记忆先前的状态)的机制中的一种(其它的还有DialogSettings,IMemento)。本篇主要针对Preference的Scope(范围)进行总结。Preference持久化文件的后缀为".prefs"。The Eclipse runtime defines three so-called scopes. The scop原创 2012-09-03 12:48:26 · 1035 阅读 · 0 评论 -
初始化首选项的方式[总结]
针对有UI(激活器继承自AbstractUIPlugin)的插件,有2种方式.1.在继承自AbstractUIPlugin的子类中实现initializeDefaultPreferences(IPreferenceStore store)方法.eg:public class Activator extends AbstractUIPlugin { //The shared in原创 2012-09-04 00:25:22 · 658 阅读 · 0 评论 -
How do I get a preference value?
ps:这篇博文的完成过程异常痛苦,对我来说, 这 块的知识是基本弄明白了。但估计写在这里,能明了的人不是很多,应该是还没有理解得更透彻的原因。不过,如果你真正懂插件,或许能看懂的。1.针对有UI的插件(激活器继承自AbstractUIPlugin),可以通过下面的代码来做:String key = Activator.IS_FALT;Activator.getDefault()原创 2012-09-04 17:41:57 · 760 阅读 · 0 评论