创建装饰器,如何在 eclipse 插件中获取文件信息?

Creating decorators, how to get info of file in eclipse plugin?

我正在尝试制作一个插件,以便每当创建一个具有某些属性(例如从文件内容派生)的新特定文件时,就会显示该类型的装饰器。

我知道如何通过扩展 org.eclipse.ui.decorator extension 来制作基本的装饰器。

但是,在应用描述符之前,如何知道关于文件的信息,例如文件名和扩展名?我几乎不知道它可以在实现 ILightWeightLabelDecorator 接口的文件的 decorate() 方法中使用 Object element 参数来完成。但是我不知道如何使用这个 element 对象?

每当将新文件添加到包资源管理器时,装饰器会自行显示还是需要刷新workbench?

我正在使用 Eclipse 4.5.2

plugin.xml 中装饰器声明的 enablement 元素说明了装饰器为何种对象启用并确定传递给装饰器的对象类型。

所以如果你有:

    <enablement>
        <objectClass name="org.eclipse.core.resources.IFile"/> 
    </enablement>

上的 element 对象
@Override
public void decorate(final Object element, final IDecoration decoration)

呼叫将是 IFile。所以你只需要做:

IFile file = (IFile)element;

或者为了绝对确定您处理的是适应性强的对象,请使用:

IFile file = (IFile)Platform.getAdapterManager().getAdapter(element, IFile.class);

IFile 有方法可以告诉您有关该文件的所有信息。