如何以编程方式获取Eclipse插件中常用的图像

时间:2016-02-16 12:45:45

标签: eclipse-plugin eclipse-rcp

如果插件希望重复使用其他插件定义的图像,有哪些地方可以查找。

例如,在哪里查找插件是否需要'终止'图标,在调试插件的某处定义。

偶尔我一直在寻找图像,虽然在一个地方列出常用图像的位置会很有用。

1 个答案:

答案 0 :(得分:3)

某些平台插件通过ImageDescriptor提供(部分)其图像。不幸的是,所有方式都略有不同。

平台用户界面 - org.eclipse.ui

此插件定义了ISharedImages中供公众使用的图片。要获取图像描述符,请查询工作台的图像注册表,如下所示:

PlatformUI.getWorkbench().getSharedImages().getImage( ISharedImages.IMG_OBJ_FILE );

IDE - org.eclipse.ui.ide

IDE插件会向工作台图像注册表添加更多图像,并在IDE.ISharedImages中列出已注册的名称。

要获取图像描述符,还要查询工作台的图像注册表,如下所示:

PlatformUI.getWorkbench().getSharedImages().getImage( IDE.ISharedImages.IMG_OBJ_PROJECT );

调试 - org.eclipse.ui.debug

调试插件在IDebugUIConstants中定义共享图像,图像名称常量以IMG_开头。它们可以通过DebugUITools实用程序类进行访问。

例如:

DebugUITools.getImageDescriptor( IDebugUIConstants.IMG_ACT_RUN );

比较 - org.eclipse.compare

比较插件直接在CompareUI中为下一步上一页图像定义ImageDescritpors。

例如:

ImageDescriptor next = CompareUI.DESC_DTOOL_NEXT;

团队 - org.eclipse.team.ui

团队插件也使用ISharedImage界面来声明叠加图像以修饰已修改,冲突等资源。

图像描述符可以通过TeamImages类获得:

ImageDescriptor imageDescriptor = TeamImages.getImageDescriptor( ISharedImages.IMG_DIRTY_OVR );

JDT - org.eclipse.jdt.ui

JDT在提供图像时与工作台对齐。其ISharedImages接口定义了已注册的名称,JavaUI.getSharedImages()允许获取相应的图像描述符。

直接访问图片

AbstractUIPlugin有一个静态帮助器方法来获取任意插件中图像的描述符。

ImageDescriptor imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin( "the.bundle.id", "/icons/sample-image.png" );

警告:以这种方式加载图片存在风险,通常应避免使用。图像位置不是插件API的一部分,插件作者可能会选择删除或移动图像,这会破坏您的代码。如果您需要证明这实际发生,请查看this post

如果您需要插件中没有通过其API提供的图片,您应该更喜欢在插件中放置该图片的副本。