Package org.eclipse.jface.resource

## Class DeviceResourceManager

- java.lang.Object
- - org.eclipse.jface.resource.ResourceManager
  - - org.eclipse.jface.resource.DeviceResourceManager

    public final class DeviceResourceManager
    extends ResourceManager

Manages SWT resources for a particular device.

IMPORTANT: in most cases clients should use a `LocalResourceManager` instead of a `DeviceResourceManager`. To create a resource manager on a particular display, use `new LocalResourceManager(JFaceResources.getResources(myDisplay))`. `DeviceResourceManager` should only be used directly when managing resources for a device other than a Display (such as a printer).

Since:
  3.1
See Also:
  `LocalResourceManager`

### Constructor Summary

Constructors
`DeviceResourceManager​(Device device)` Creates a new registry for the given device.

### Method Summary

All Methods Instance Methods Concrete Methods
`protected Object` `allocate​(DeviceResourceDescriptor descriptor)` Called the first time a resource is requested.
`Object` `create​(DeviceResourceDescriptor descriptor)` Returns the resource described by the given descriptor.
`protected void` `deallocate​(Object resource, DeviceResourceDescriptor descriptor)` Called the last time a resource is dereferenced.
`void` `destroy​(DeviceResourceDescriptor descriptor)` Deallocates a resource previously allocated by `ResourceManager.create(DeviceResourceDescriptor)`.
`void` `dispose()` Deallocates any resources allocated by this registry that have not yet been deallocated.
`Object` `find​(DeviceResourceDescriptor descriptor)` Returns a previously allocated resource associated with the given descriptor, or null if none exists yet.
`protected Image` `getDefaultImage()` Returns the default image that will be returned in the event that the intended image is missing.
`Device` `getDevice()` Returns the Device for which this ResourceManager will create resources

### Methods inherited from class org.eclipse.jface.resource.ResourceManager

`cancelDisposeExec, createColor, createColor, createFont, createImage, createImageWithDefault, destroyColor, destroyColor, destroyFont, destroyImage, disposeExec, get`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### DeviceResourceManager

    public DeviceResourceManager​(Device device)

Creates a new registry for the given device.

Parameters:
  `device` - device to manage

### Method Detail

#### getDevice

    public Device getDevice()

Description copied from class: `ResourceManager`
Returns the Device for which this ResourceManager will create resources

Specified by:
  `getDevice` in class `ResourceManager`
Returns:
  the Device associated with this ResourceManager

#### allocate

    protected Object allocate​(DeviceResourceDescriptor descriptor)
                       throws DeviceResourceException

Called the first time a resource is requested. Should allocate and return a resource of the correct type.

Parameters:
  `descriptor` - identifier for the resource to allocate
Returns:
  the newly allocated resource
Throws:
  `DeviceResourceException` - Thrown when allocation of an SWT device resource fails

#### deallocate

    protected void deallocate​(Object resource,
                              DeviceResourceDescriptor descriptor)

Called the last time a resource is dereferenced. Should release any resources reserved by allocate(...).

Parameters:
  `resource` - resource being deallocated
  `descriptor` - identifier for the resource

#### getDefaultImage

    protected Image getDefaultImage()

Description copied from class: `ResourceManager`
Returns the default image that will be returned in the event that the intended image is missing.

Specified by:
  `getDefaultImage` in class `ResourceManager`
Returns:
  a default image that will be returned in the event that the intended image is missing.

#### dispose

    public void dispose()

Deallocates any resources allocated by this registry that have not yet been deallocated.

#### create

    public final Object create​(DeviceResourceDescriptor descriptor)
                        throws DeviceResourceException

Description copied from class: `ResourceManager`
Returns the resource described by the given descriptor. If the resource already exists, the reference count is incremented and the exiting resource is returned. Otherwise, a new resource is allocated. Every call to this method should have a corresponding call to `ResourceManager.destroy(DeviceResourceDescriptor)`.

If the resource is intended to live for entire lifetime of the resource manager, a subsequent call to `ResourceManager.destroy(DeviceResourceDescriptor)` may be omitted and the resource will be cleaned up when the resource manager is disposed. This pattern is useful for short-lived `LocalResourceManager`s, but should never be used with the global resource manager since doing so effectively leaks the resource.

The resources returned from this method are reference counted and may be shared internally with other resource managers. They should never be disposed outside of the ResourceManager framework, or it will cause exceptions in other code that shares them. For example, never call `Resource.dispose()` on anything returned from this method.

Callers may safely downcast the result to the resource type associated with the descriptor. For example, when given an ImageDescriptor, the return value of this method will always be an Image.

Specified by:
  `create` in class `ResourceManager`
Parameters:
  `descriptor` - descriptor for the resource to allocate
Returns:
  the newly allocated resource (not null)
Throws:
  `DeviceResourceException` - if unable to allocate the resource

#### destroy

    public final void destroy​(DeviceResourceDescriptor descriptor)

Description copied from class: `ResourceManager`
Deallocates a resource previously allocated by `ResourceManager.create(DeviceResourceDescriptor)`. Descriptors are compared by equality, not identity. If the same resource was created multiple times, this may decrement a reference count rather than disposing the actual resource.

Specified by:
  `destroy` in class `ResourceManager`
Parameters:
  `descriptor` - identifier for the resource

#### find

    public Object find​(DeviceResourceDescriptor descriptor)

Description copied from class: `ResourceManager`
Returns a previously allocated resource associated with the given descriptor, or null if none exists yet.

Specified by:
  `find` in class `ResourceManager`
Parameters:
  `descriptor` - descriptor to find
Returns:
  a previously allocated resource for the given descriptor or null if none.