前几天一个朋友说想把eclipse里的某些特殊文件夹图标换一下,不想用默认的.这里我就说一下怎么做,方法说出来很简单,在plugin.xml里实现org.eclipse.ui.decorators扩展点,如下
<extension point="org.eclipse.ui.decorators">
<decorator
id="com.xyz.decorator"
label="XYZ Decorator"
state="true"
class="com.myproject.LabelDecorator">
<enablement>
<objectClass name="org.eclipse.core.resources.IFolder"/>
</enablement>
</decorator>
</extension>
enablement的意思是对什么起作用,这里是对文件夹(IFolder),因为如果想改变工程或者文件的图标,有其它方法,这里就不说了.对应的实现类LabelDecorator,LabelDecorator实现ILabelDecorator接口,这里主要实现了decorateImage方法,别的方法采用自动生成的就可以.decorateImage方法代码如下:
public Image decorateImage(Image image, Object element) {
if(element instanceof Folder && ((Folder)element).getName().indexOf("test") >= 0){
return ImageDescriptor.getMissingImageDescriptor().createImage();
}
return null;
}
怎么回事?文件夹名称以test开头的图标都边成一个红的方框了!对就是这个效果.需要对什么文件夹自定义图标可以通过判断来过滤,然后返回一个Image ,喜欢什么样的Image就用什么样的Image!
注:所有的view中看到的图标都是这个返回的图标,也就是说与view没关系!