# 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
Constructor
Description
`DeviceResourceManager(Device device)`
Creates a new registry for the given device.

## Method Summary

Modifier and Type
Method
Description
`protected <R> R`
`allocate(DeviceResourceDescriptor<R> descriptor)`
Called the first time a resource is requested.
`final <R> R`
`create(DeviceResourceDescriptor<R> descriptor)`
Returns the resource described by the given descriptor.
`protected <R> void`
`deallocate(Object resource, DeviceResourceDescriptor<R> descriptor)`
Called the last time a resource is dereferenced.
`final <R> void`
`destroy(DeviceResourceDescriptor<R> 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.
`<R> R`
`find(DeviceResourceDescriptor<R> 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 ResourceManager

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

### Methods inherited from class Object

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

## Constructor Details

### DeviceResourceManager

public DeviceResourceManager(Device device)
Creates a new registry for the given device.

Parameters:
  `device` - device to manage

## Method Details

### 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 <R> R allocate(DeviceResourceDescriptor<R> 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 <R> void deallocate(Object resource, DeviceResourceDescriptor<R> 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 <R> R create(DeviceResourceDescriptor<R> 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 this resource-manager, a subsequent call to `ResourceManager.destroy(DeviceResourceDescriptor)` may be omitted and the resource will be cleaned up when this 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.

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 <R> void destroy(DeviceResourceDescriptor<R> 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 <R> R find(DeviceResourceDescriptor<R> 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.