如果插件希望重复使用其他插件定义的图像,有哪些地方可以查找。
例如,在哪里查找插件是否需要'终止'图标,在调试插件的某处定义。
偶尔我一直在寻找图像,虽然在一个地方列出常用图像的位置会很有用。
答案 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提供的图片,您应该更喜欢在插件中放置该图片的副本。