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:
  • 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 LocalResourceManagers, 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.