eclipse 自定义项目类型

引用:http://www.oecp.cn/hi/slx/blog/5298

  Eclipse插件开发中允许我们自定义项目的类型,如已知的:java项目,js项目,maven项目。这些类似项目类型的定义都在对应的插件中存在的。我们也可以在自己开发的eclipse插件中,定义自己特有的项目类型。
    当我们在eclipse创建一个project,在project目录中都会有一个“.project”文件,这是个xml文件,里面记录这project的一些属性,如项目名称等等。用记事本打开这个文件,会找到这么一个节点<natures>里面的内容就是项目的性质。

xml 代码
  1. <natures>  
  2.     <nature>oecp.project.bcproject</nature>  
  3.     <nature>org.eclipse.jdt.core.javanature</nature>  
  4. </natures>  

上面的内容说明这个项目有两个性质。第一个是我自定义的项目性质oecp.project.bcproject,第二个是普通java项目。
    项目中有了这我们自定义的项目性质,我们在插件中就可以识别它了。接下来介绍下,这个自定义的项目的性质是怎么定义出来的。
    首先在插件描述文件,plugin.xml中添加一个扩展点,定义项目类型

xml 代码
  1. <extension  
  2.          id="oecp.project.bcproject"  
  3.          point="org.eclipse.core.resources.natures">  
  4.       <runtime>  
  5.          <run class="oecp.plugin.project.OECPBCProject">  
  6.          </run>  
  7.       </runtime>  
  8.       <requires-nature  
  9.             id="org.eclipse.jdt.core.javanature">  
  10.       </requires-nature>  
  11.    </extension>  

然后创建一个项目性质类oecp.plugin.project.OECPBCProject

java 代码
  1. public class OECPBCProject extends PlatformObject implements IProjectNature {  
  2.   
  3.     private IProject project;  
  4.       
  5.     public void configure() throws CoreException {  
  6.     }  
  7.   
  8.     @Override  
  9.     public void deconfigure() throws CoreException {  
  10.     }  
  11.   
  12.     @Override  
  13.     public IProject getProject() {  
  14.         return project;  
  15.     }  
  16.   
  17.     @Override  
  18.     public void setProject(IProject project) {  
  19.         this.project = project;  
  20.     }  
  21. }  

实现接口IProjectNature ,这样就简单的自定义了一种项目类型。
    插件开发时,我们获得Iproject对象后可以用下面语句获得我们定义的项目性质

java 代码
  1. OECPBCProject pn = (OECPBCProject)project.getNature("oecp.project.bcproject");  
  2. return pn;  

    当然项目性质的用法不只是这么简单,还有很多发挥的空间。自己根据需要扩展就行了。
    现在项目前面的小图标还没有有没变化,接下来,我们来解决。这需要插件扩展另一个扩展点。

xml 代码
  1. <extension  
  2.          point="org.eclipse.ui.ide.projectNatureImages">  
  3.       <image  
  4.             icon="icons/bc.gif"  
  5.             id="oecp.plugin.oecp.project.ico"  
  6.             natureId="oecp.project.bcproject">  
  7.       </image>  
  8.    </extension>  

    natureId指向的就是我们刚刚自定义的项目类型。这样自定义一个项目类型,并更改他的图标的功能就实现了。其实很简单,只是这方面中文资料不太多,基本都是英文的。我在这里记录一下我实现的过程,一是与大家分享,二是怕以后忘记了,做个备份。最后看一下效果。

原文地址:https://www.cnblogs.com/sode/p/2762072.html