引用:http://www.oecp.cn/hi/slx/blog/5298
Eclipse插件开发中允许我们自定义项目的类型,如已知的:java项目,js项目,maven项目。这些类似项目类型的定义都在对应的插件中存在的。我们也可以在自己开发的eclipse插件中,定义自己特有的项目类型。
当我们在eclipse创建一个project,在project目录中都会有一个“.project”文件,这是个xml文件,里面记录这project的一些属性,如项目名称等等。用记事本打开这个文件,会找到这么一个节点<natures>里面的内容就是项目的性质。
- <natures>
- <nature>oecp.project.bcproject</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
上面的内容说明这个项目有两个性质。第一个是我自定义的项目性质oecp.project.bcproject,第二个是普通java项目。
项目中有了这我们自定义的项目性质,我们在插件中就可以识别它了。接下来介绍下,这个自定义的项目的性质是怎么定义出来的。
首先在插件描述文件,plugin.xml中添加一个扩展点,定义项目类型
- <extension
- id="oecp.project.bcproject"
- point="org.eclipse.core.resources.natures">
- <runtime>
- <run class="oecp.plugin.project.OECPBCProject">
- </run>
- </runtime>
- <requires-nature
- id="org.eclipse.jdt.core.javanature">
- </requires-nature>
- </extension>
然后创建一个项目性质类oecp.plugin.project.OECPBCProject
- public class OECPBCProject extends PlatformObject implements IProjectNature {
- private IProject project;
- public void configure() throws CoreException {
- }
- @Override
- public void deconfigure() throws CoreException {
- }
- @Override
- public IProject getProject() {
- return project;
- }
- @Override
- public void setProject(IProject project) {
- this.project = project;
- }
- }
实现接口IProjectNature ,这样就简单的自定义了一种项目类型。
插件开发时,我们获得Iproject对象后可以用下面语句获得我们定义的项目性质
- OECPBCProject pn = (OECPBCProject)project.getNature("oecp.project.bcproject");
- return pn;
当然项目性质的用法不只是这么简单,还有很多发挥的空间。自己根据需要扩展就行了。
现在项目前面的小图标还没有有没变化,接下来,我们来解决。这需要插件扩展另一个扩展点。
- <extension
- point="org.eclipse.ui.ide.projectNatureImages">
- <image
- icon="icons/bc.gif"
- id="oecp.plugin.oecp.project.ico"
- natureId="oecp.project.bcproject">
- </image>
- </extension>
natureId指向的就是我们刚刚自定义的项目类型。这样自定义一个项目类型,并更改他的图标的功能就实现了。其实很简单,只是这方面中文资料不太多,基本都是英文的。我在这里记录一下我实现的过程,一是与大家分享,二是怕以后忘记了,做个备份。最后看一下效果。