如何管理Eclipse插件项目中的资源(图片、字体、颜色)?
How to manage resources (Image, font, color) in an Eclipse plug-in project?
我的Eclipse 插件项目有一些图像并使用了一些字体。所以我创建了一个名为ImageManager
的单例class来管理图片,可以让图片对象在整个项目中成为一个单独的对象。
但还不够完美,无法适时处理图片。所以,我需要一个更好的机制来管理这些资源,包括图片、字体、颜色等等
JFace 提供 ResourceManager
class 来帮助创建和处理图像、字体和颜色。
对于每一种资源类型,还有一个对应的资源描述符:ImageDescriptor
、FontDescriptor
、ColorDescriptor
。资源描述符是轻量级对象,引用image/font/color而不占用操作系统资源。
资源描述符能够创建实际资源,例如:
ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL( "..." );
Image image = imageDescriptor.createImage();
A ResourceManager
能够从资源描述符创建和缓冲资源,并释放它在处理时直接创建的所有资源。
可以将专用资源管理器 LocalResourceManager
附加到 SWT 控件,并在处理该控件时将其处理掉。
资源管理器也可以嵌套,这样子资源管理器就可以 re-use 之前由其父资源管理器之一分配的资源。
如果您的 plug-in 有一个扩展 AbstractUIPlugin
的 plug-in 激活器,您已经有一个可以通过 AbstractUIPlugin::getImageRegistry()
访问的映像注册表。覆盖 initializeImageRegistry()
方法以填充注册表。避免使用 ImageRegistry::get()
,因为此方法分配的图像无法释放,并且会在 plug-in.
的整个 life-time 期间保留。
大多数 workbench API 使用资源描述符,例如Action::setImageDescriptor()
或 IEditorInput::getImageDescriptor()
。如果应用程序代码使用资源,请遵循此做法并优先使用资源描述符而不是实际资源。仅在需要时创建资源,并在不再需要时立即处理它们。
本文包含一些使用 SWT 资源时的一般规则:https://www.eclipse.org/articles/swt-design-2/swt-design-2.html
我的Eclipse 插件项目有一些图像并使用了一些字体。所以我创建了一个名为ImageManager
的单例class来管理图片,可以让图片对象在整个项目中成为一个单独的对象。
但还不够完美,无法适时处理图片。所以,我需要一个更好的机制来管理这些资源,包括图片、字体、颜色等等
JFace 提供 ResourceManager
class 来帮助创建和处理图像、字体和颜色。
对于每一种资源类型,还有一个对应的资源描述符:ImageDescriptor
、FontDescriptor
、ColorDescriptor
。资源描述符是轻量级对象,引用image/font/color而不占用操作系统资源。
资源描述符能够创建实际资源,例如:
ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL( "..." );
Image image = imageDescriptor.createImage();
A ResourceManager
能够从资源描述符创建和缓冲资源,并释放它在处理时直接创建的所有资源。
可以将专用资源管理器 LocalResourceManager
附加到 SWT 控件,并在处理该控件时将其处理掉。
资源管理器也可以嵌套,这样子资源管理器就可以 re-use 之前由其父资源管理器之一分配的资源。
如果您的 plug-in 有一个扩展 AbstractUIPlugin
的 plug-in 激活器,您已经有一个可以通过 AbstractUIPlugin::getImageRegistry()
访问的映像注册表。覆盖 initializeImageRegistry()
方法以填充注册表。避免使用 ImageRegistry::get()
,因为此方法分配的图像无法释放,并且会在 plug-in.
大多数 workbench API 使用资源描述符,例如Action::setImageDescriptor()
或 IEditorInput::getImageDescriptor()
。如果应用程序代码使用资源,请遵循此做法并优先使用资源描述符而不是实际资源。仅在需要时创建资源,并在不再需要时立即处理它们。
本文包含一些使用 SWT 资源时的一般规则:https://www.eclipse.org/articles/swt-design-2/swt-design-2.html