Eclipse Plugins
文章平均质量分 53
cuser_online
致力于软件开发。
展开
-
为你的工程或工作空间设置编码
新的工作中有这个需求,于是研究了一番。我们知道,在Eclipse首先项中就有改变工作空间编码的功能。截图如下:注意 Text file encoding那里。好吧,程序员最不缺乏的就是钻研精神,将eclipse此处的源码阅读一下不就清楚了吗。在我阅读代码的过程中依次寻找的类是:IDEWorkspacePreferencePage--->ResourceEncodin原创 2012-07-25 15:05:00 · 534 阅读 · 0 评论 -
为首选项添加PropetyChange事件监听
可以为首选项添加PropetyChange事件监听,设置了新的Property时更新UI部分的显示。eg:Activator.getDefault().getPreferenceStore() .addPropertyChangeListener(new IPropertyChangeListener() { @Override public void pro原创 2012-09-03 00:10:19 · 562 阅读 · 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 · 1782 阅读 · 1 评论 -
Eclipse源码阅读:Go To Resource
Go To Resource是Eclipse的Navigate菜单下的一个子菜单的功能,如下所示:Go To Resource Action是一个RetargetAction,在org.eclipse.ui.ide插件中定义,plugin.xml中关于此action的定义内容为:<action definitionId="org.eclipse.ui.n原创 2012-09-02 13:25:33 · 1384 阅读 · 0 评论 -
Eclipse源码阅读:GotoTypeAction
Go To Type是Eclipse的Navigate菜单下的一个子菜单的功能,如下所示:大部分内容和{Eclipse源码阅读:Go To Resource点击打开链接}一样.这里直接贴同分析的核心代码,重点部分添加了中文注释./*****************************************************************************原创 2012-09-02 17:59:38 · 759 阅读 · 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 · 1013 阅读 · 0 评论 -
Eclipse源码阅读:Choose Super Class
下午睡了一觉,起来后阅读了New Java Class的部分的代码,对应的向导为org.eclipse.jdt.internal.ui.wizards.NewClassCreationWizard,从New Java Class的功能实现中,我们可以学习到诸如JDT,AST的很多巧妙实现,在后面的博文中,会将自己的阅读心得与大家进行分享,本文只关注于Choose Super Class,如下图用红原创 2012-09-02 18:13:52 · 800 阅读 · 3 评论 -
Eclipse源码阅读:Add Interfaces
本文和Eclipse源码阅读:Choose Super Class类似, 废话不说,直接看代码吧: protected void chooseSuperInterfaces() { IJavaProject project= getJavaProject(); if (project == null) { return; } SuperIn原创 2012-09-02 18:21:55 · 548 阅读 · 0 评论 -
首选项中字体,颜色等属性的存取
首选项中,如boolean,int,String等类型的保存都比较简单,使用的是IPreferenceStore类。但字体,颜色等属性的保存有一些特殊,要访问与 SWT 对象有关的首选项(尤其是 RGB、Rectangle、FontData 和 FontData[] 对象),可以调用jface提供的org.eclipse.jface.preference.PreferenceConverter原创 2012-09-04 00:41:03 · 666 阅读 · 0 评论 -
Eclipse Workbench Structure分析
IWorkbenchpublic interface IWorkbenchextends IAdaptable, IServiceLocatorA workbench is the root object for the Eclipse Platform user interface.A workbench has one or more main windows which pr原创 2012-08-31 18:17:58 · 926 阅读 · 0 评论 -
StructuredViewer的SelectionAll功能是如何实现的
最近有时间就在阅读eclipse源码,今天读了一下Package Explorer视图(所在类为org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart)的内容.我们可以看看其selectionAll是如何实现的.SelectAll效果可能是这样的:即选中所有已展开的树节点.直接贴一下代码吧.package or原创 2012-09-02 10:19:51 · 564 阅读 · 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 · 1308 阅读 · 0 评论 -
JavaPreview类的使用(预览Java代码)
在ide开发中,我们经常可能会需要预览Java代码(可能自己提供的java代码模板),jdt中已经提供了这样的支持,支持语法高亮等,它本质上是对TextViewer的包装。截图可能如下:JavaPreview是抽象类,我们可以使用其子类 org.eclipse.jdt.internal.ui.preferences.formatter.CompilationUnitPreview.原创 2012-08-17 13:02:26 · 1191 阅读 · 0 评论 -
Eclipse中的扩展点机制存在的理由
众所周知,Eclipse平台本身就作为一个成功的OSGI应用,从技术层面讲,Eclipse本身就是由OSGI协议驱动的(我想,这句话大家已经听的很多遍了~_~)。同时Eclipse对OSGI组件机制做了有力的扩充,也就是我们所熟知的扩展点(Extension Point)机制,关于扩展点的支持也作为Equinox(Eclipse的OSGI协议实现)一部分呈现给了广大的Eclipse开发者和用户。关转载 2012-08-29 17:32:48 · 875 阅读 · 0 评论 -
Eclipse开发的一些原则
本文系转载,这些原则在经典图书Contributing to Eclipse中详细论述。只是版本很老了,国内几近绝版。在插件开发中,我个人最常用贡献法则,有样学样法则,适配法则。扩展者贡献法则( Contribution Rule ):一切皆是贡献。遵循法则( Conformance Rule):插件必须遵循预期的接口。共享法则( Sharing Rule):增加,不要转载 2012-08-29 17:39:22 · 656 阅读 · 0 评论 -
JDT:在TreeViewer中呈现java元素
有时候,可能需要在自己定义的视图或对话框中展示workspace中的元素。UI效果可能如下:此对话框的核心UI代码为:@Override protected Control createDialogArea(Composite parent) { getShell().setText("在TreeViewer中展示Java元素"); Composite contain原创 2012-08-20 14:37:11 · 630 阅读 · 0 评论 -
说说IResource.refreshLocal(int depth,, IProgressMonitor monitor)
refreshLocal的原型为:public void refreshLocal(int depth, IProgressMonitor monitor) throws CoreException; refreshLocal方法可以传递一个尝试参数,以指明刷新的对象仅仅是该资源,还是该资源及其成员,或者是该资源及其所有后代资源。所有由工作空间api引起的更改,例如向项目中添加文件夹或原创 2012-08-29 17:12:58 · 1585 阅读 · 1 评论 -
CompilationUnit包括了PackageDelration,ImportContainer,SourceType
纠正自己一个认识上的误区。IType createdType = ...;CompilationUnit cu =...;//并不包括package和import部分内容 ISourceRange range= createdType.getSourceRange();IBuffer buf= cu.getBuffer();String originalContent原创 2012-08-29 17:57:54 · 1109 阅读 · 0 评论 -
插件开发为Java透视图贡献新建向导时的一个bug(org.eclipse.ui.perspectiveExtensions)
有前同事问到,想在新建向导中添加一个右键菜单,可能是这样: 这种需求通过org.eclipse.ui.perspectiveExtensions扩展点就能办到。eg:step1:实现org.eclipse.ui.newWizards向导 <extension point="org.eclipse.ui.newWizards"> <cate原创 2012-08-30 17:50:55 · 1383 阅读 · 1 评论 -
JDT:类型对话框的使用(FilteredTypesSelectionDialog)
在UI上的展现可能是这样的:核心是JavaUI类的使用了,直接上代码: public IType selectType() throws JavaModelException { Shell parent = window.getShell(); SelectionDialog dialog= JavaUI.createTypeDialog(原创 2012-08-20 14:11:23 · 614 阅读 · 0 评论 -
代码生成器(一)
计算机的专家们一起在探寻一种能使得重复代码越来越少的方法,函数封装、面向对象、AOP、MDA、ORM......所有这些相关或者无关的技术都在试图将重复的代码消灭,可是一路起来,人们突然发现,重复的代码是不可能被完全消灭的,到了更高的层次一定会有更高级的重复的代码需要我们去对付,因为代码生成也逐渐不再被妖魔化。网页编辑器、编译器、IDE等这些非常重要的工具不就是代码生成器吗?只要是系统经过好的设计转载 2010-03-16 22:14:00 · 694 阅读 · 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 · 747 阅读 · 0 评论 -
初始化首选项的方式[总结]
针对有UI(激活器继承自AbstractUIPlugin)的插件,有2种方式.1.在继承自AbstractUIPlugin的子类中实现initializeDefaultPreferences(IPreferenceStore store)方法.eg:public class Activator extends AbstractUIPlugin { //The shared in原创 2012-09-04 00:25:22 · 644 阅读 · 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 · 894 阅读 · 0 评论 -
让你的视图(ViewPart)支持Show In请求(1)
编辑器和视图都能支持名为Show In的导航操作。这个操作在workbench菜单栏的Navitate菜单的show in子菜单下,UI上的展示可能如下图所示:这一功能通常也会被添加至视图或编辑器的右键菜单中(如何添加在后面的博文中有描述),如下所示:Show In请求,为WrokbenchPart间的交互提供了一种较为通用的方式。本篇,描述的是下面一种需求:将你自己的视图添加原创 2012-09-11 17:29:11 · 904 阅读 · 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 · 836 阅读 · 0 评论 -
弹出首选项对话框并定位至指定页面
某些时候,我们的Action的执行依赖于某些配置已经完好才能运行,即要检查环境是否已经配置完好。我们可以这样做:在Action的run中进行判断,然后将用户引导至配置页面进行环境配置。对用户体验是非常好的。public class StartActionDelegate implements IWorkbenchWindowActionDelegate { private IWo原创 2012-09-19 16:24:31 · 759 阅读 · 0 评论 -
自定义Eclipse中点击Propertyies弹出的首选项对话框
自定义Eclipse中点击Propertyies弹出的首选项对话框,我们可以将其用在我们自己的RCP中。步骤如下:1.定义PreferenceDialog,如:public class PropertyPreferenceDialog extends PreferenceDialog 2.完成构造方法。如:private ITreeEntry entry;//传一个树结点原创 2012-09-19 16:49:38 · 985 阅读 · 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 · 1070 阅读 · 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 · 1691 阅读 · 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 · 1825 阅读 · 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 · 745 阅读 · 0 评论 -
IResource.isSynchronized(int depth)_用法
通过isSynchronized方法,你既可以査询一个资源的同步信息,也可以查询该资源的成员及该资源的所有子资源的同步信息。eg:bool inSync = folder.isSynchronized(IResourse.DEPTH_ONE);其它的有关深度的选项是DEPTH_ZERO和DEPTH_INFINITE,这些选项在isSynchronized和refreshLocal等方法原创 2012-09-06 17:56:04 · 726 阅读 · 0 评论 -
RetargetAction实现原理简单代码剖析
我们知道,RetargetAction是一个UI占位符,只提供了最简单的诸如id,image,tooltip等信息,真实的Action可以动态的绑定,详细内容在以前的博文中已有论述(在Eclipse开发中使用Retarget Action),今天主要是分析一下其基本原理,和IPartListener接口有关(参见IPartListener与IPartListener2[总结]).先原创 2012-09-06 21:59:21 · 798 阅读 · 0 评论 -
How do I set a preference value?
ps:内容来自Eclipse Preferences FAQ。代码简单,直接贴了。 1.Through the backwards compatibility layer.Again, all the old APIs exist and are fully functional.String key = ResourcesPlugin.PREF_AUTO_BU转载 2012-09-04 17:43:30 · 614 阅读 · 0 评论 -
从插件中获取资源的几种方式[总结]_FileLocator
方式一:public static URL getFile(String filename) throws IOException { System.out.println("get file " + filename); //URL installURL = EditorPlugin.getDefault().getDescriptor().getInstallURL();原创 2012-09-05 17:05:03 · 1347 阅读 · 1 评论 -
IPartListener与IPartListener2[总结]
IIPartListener的应用场景?IPartListener监听WorkbenchPart(包括ViewPart和EditorPart)和生命周期(打开,隐藏,关闭等),当我们想在某WorkbenchPart在这些生命周期发生的触发点上做些事情的时候,此接口正好为你所用。IWorkbenchPage page = ...;//the active partIWorkben原创 2012-09-05 17:35:35 · 956 阅读 · 0 评论 -
JDT:Open Resource Action代码阅读
源码位于org.eclipse.ui.internal.ide.handlers.OpenResourceHandler类。//弹出打开资源对话框private final Object[] queryFileResource() { final IWorkbenchWindow window = PlatformUI.getWorkbench() .getActiveWorkb原创 2012-08-28 13:18:42 · 561 阅读 · 0 评论 -
JDT:Choose Source Container Dialog(选择src目录的功能)
源码位于org.eclipse.jdt.ui.wizards.NewContainerWizardPage类中,注意一下ElementTreeSelectionDialog对话框的使用。// ------------- choose source container dialog /** * Opens a selection dialog that allows to select a原创 2012-08-28 13:22:14 · 625 阅读 · 0 评论 -
choosePackage(选择package的功能)(ElementListSelectionDialog对话框)
在Eclipse中,新建Class,Interface等向导页(org.eclipse.jdt.ui.wizards.NewTypeWizardPage)中的browse package的功能即是通过下面代码实现的,此处可以注意一下ElementListSelectionDialog类。直接看一下代码吧。protected IPackageFragment choosePackage() {原创 2012-08-28 13:15:29 · 1013 阅读 · 0 评论