如果插件希望重用由其他插件定义的图像,那么需要查找哪些位置。
例如,如果插件需要在调试插件中的某个位置定义的“终止”图标,可以在哪里查找。
我不时地搜索图像,尽管在一个地方列出常用图像的位置是有用的。
发布于 2016-02-16 12:45:44
一些平台插件通过ImageDescriptor提供(一些)图像。不幸的是,所有这些都是以一种稍微不同的方式。
平台UI - 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 );Debug - org.eclipse.ui.debug
调试插件在IDebugUIConstants中定义共享映像,图像名常量以IMG_开头.它们可以通过DebugUITools实用程序类进行访问。
例如:
DebugUITools.getImageDescriptor( IDebugUIConstants.IMG_ACT_RUN );比较- org.eclipse.compare
比较插件直接在ImageDescritpors中为下一个和以前的图像定义了CompareUI。
例如:
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的一部分,插件作者可以选择删除或移动图像,这将破坏您的代码。如果需要证明这种情况确实发生了,请看一下这个职位。
如果您需要一个无法通过API提供的插件映像,您应该更愿意将该映像的副本放在插件中。
https://stackoverflow.com/questions/35433026
复制相似问题