Class ImageLoader

  • All Implemented Interfaces:
    AEDiagnosticsEvidenceGenerator

    public class ImageLoader
    extends java.lang.Object
    implements AEDiagnosticsEvidenceGenerator
    Loads images from a skinProperty object.

    Will look for special suffixes (over, down, disabled) and try to load resources using base key and suffix. ie. loadImage("foo-over") when foo=image.png, will load image-over.png

    Will also create own disabled images if base image found and no disabled image found. Disabled opacity can be set via imageloader.disabled-opacity key

    • Field Detail

      • sSuffixChecks

        private final java.lang.String[] sSuffixChecks
      • display

        private org.eclipse.swt.widgets.Display display
      • noImage

        public static org.eclipse.swt.graphics.Image noImage
      • nullImage

        public static org.eclipse.swt.graphics.Image nullImage
      • _mapImages

        private final java.util.concurrent.ConcurrentHashMap<java.lang.String,​ImageLoaderRefInfo> _mapImages
      • notFound

        private final java.util.ArrayList<java.lang.String> notFound
      • skinProperties

        private java.util.concurrent.CopyOnWriteArrayList<SkinProperties> skinProperties
      • disabledOpacity

        private int disabledOpacity
      • cached_resources

        private java.util.Set<java.lang.String> cached_resources
      • cache_dir

        private java.io.File cache_dir
    • Constructor Detail

      • ImageLoader

        public ImageLoader​(org.eclipse.swt.widgets.Display display,
                           SkinProperties skinProperties)
    • Method Detail

      • getInstance

        public static ImageLoader getInstance()
      • disposeInstance

        public static void disposeInstance()
      • dispose

        public void dispose()
      • findResources

        private org.eclipse.swt.graphics.Image[] findResources​(java.lang.String sKey)
      • parseValuesString

        private org.eclipse.swt.graphics.Image[] parseValuesString​(java.lang.ClassLoader cl,
                                                                   java.lang.String sKey,
                                                                   java.lang.String[] values,
                                                                   java.lang.String suffix)
        Parameters:
        values -
        suffix -
        Returns:
        Since:
        3.1.1.1
      • loadImage

        private org.eclipse.swt.graphics.Image loadImage​(org.eclipse.swt.widgets.Display display,
                                                         java.lang.ClassLoader cl,
                                                         java.lang.String res,
                                                         java.lang.String sKey)
      • fadeImage

        private org.eclipse.swt.graphics.Image fadeImage​(org.eclipse.swt.graphics.Image imgToFade)
      • unLoadImages

        public void unLoadImages()
      • getRefInfoFromImageMap

        private ImageLoaderRefInfo getRefInfoFromImageMap​(java.lang.String key)
      • putRefInfoToImageMap

        private void putRefInfoToImageMap​(java.lang.String key,
                                          ImageLoaderRefInfo info)
      • getImageFromMap

        protected org.eclipse.swt.graphics.Image getImageFromMap​(java.lang.String sKey)
      • getImagesFromMap

        protected org.eclipse.swt.graphics.Image[] getImagesFromMap​(java.lang.String sKey)
      • getImages

        public org.eclipse.swt.graphics.Image[] getImages​(java.lang.String sKey)
      • getImage

        public org.eclipse.swt.graphics.Image getImage​(java.lang.String sKey)
      • getImageSupport

        private org.eclipse.swt.graphics.Image getImageSupport​(java.lang.String sKey)
      • releaseImage

        public long releaseImage​(java.lang.String sKey)
      • addImage

        public void addImage​(java.lang.String key,
                             org.eclipse.swt.graphics.Image image)
        Adds image to repository. refcount will be 1, or if key already exists, refcount will increase.
        Parameters:
        key -
        image -
        Since:
        4.0.0.5
      • addImage

        public void addImage​(java.lang.String key,
                             org.eclipse.swt.graphics.Image[] images)
      • logRefCount

        private void logRefCount​(java.lang.String key,
                                 ImageLoaderRefInfo info,
                                 boolean inc)
      • addImageNoDipose

        public void addImageNoDipose​(java.lang.String key,
                                     org.eclipse.swt.graphics.Image image)
      • getNoImage

        public static org.eclipse.swt.graphics.Image getNoImage()
      • getNoImage

        private static org.eclipse.swt.graphics.Image getNoImage​(java.lang.String key)
      • getNullImage

        private static org.eclipse.swt.graphics.Image getNullImage()
      • imageExists

        public boolean imageExists​(java.lang.String name)
      • imageAdded_NoSWT

        public org.eclipse.swt.graphics.Image[] imageAdded_NoSWT​(java.lang.String name)
      • imageAdded

        public boolean imageAdded​(java.lang.String name)
      • isRealImage

        public static boolean isRealImage​(org.eclipse.swt.graphics.Image image)
      • getAnimationDelay

        public int getAnimationDelay​(java.lang.String sKey)
      • getFileImage

        public org.eclipse.swt.graphics.Image getFileImage​(java.io.File file,
                                                           org.eclipse.swt.graphics.Point maxSize,
                                                           ImageLoader.ImageDownloaderListener l)
        Parameters:
        file -
        lastModified - > 0 -> image key will include this for caching purposes
        maxSize - non-null -> image will be resized if required
        l -
        Returns:
      • getUrlImageSupport

        private org.eclipse.swt.graphics.Image getUrlImageSupport​(java.lang.String url,
                                                                  java.lang.String baseImageKey,
                                                                  org.eclipse.swt.graphics.Point maxSize,
                                                                  ImageLoader.ImageDownloaderListener l)
      • resizeImageIfLarger

        public org.eclipse.swt.graphics.Image resizeImageIfLarger​(org.eclipse.swt.graphics.Image image,
                                                                  org.eclipse.swt.graphics.Point maxSize)
      • getImageStream

        public java.io.InputStream getImageStream​(java.lang.String sKey)
      • writeEvidenceLine

        private void writeEvidenceLine​(IndentWriter writer,
                                       java.lang.String key,
                                       ImageLoaderRefInfo info,
                                       long[] totalSizeEstimate,
                                       long[] sizeCouldBeFree)
        Parameters:
        writer -
        info -
      • addSkinProperties

        public void addSkinProperties​(SkinProperties skinProperties)
      • collectGarbage

        public boolean collectGarbage()
        Since:
        4.0.0.5
      • setLabelImage

        public void setLabelImage​(org.eclipse.swt.widgets.Label label,
                                  java.lang.String key)
        Parameters:
        label -
        key -
        Since:
        4.0.0.5
      • setButtonImage

        public org.eclipse.swt.graphics.Image setButtonImage​(org.eclipse.swt.widgets.Button btn,
                                                             java.lang.String key)
      • setToolItemImage

        public org.eclipse.swt.graphics.Image setToolItemImage​(org.eclipse.swt.widgets.ToolItem btn,
                                                               java.lang.String key)
      • setBackgroundImage

        public void setBackgroundImage​(org.eclipse.swt.widgets.Control control,
                                       java.lang.String key)
      • findImageID

        public java.lang.String findImageID​(org.eclipse.swt.graphics.Image imageToFind)
      • findWidgetWithDisposedImage

        public static java.lang.Object[] findWidgetWithDisposedImage​(org.eclipse.swt.widgets.Composite c)
      • getBadDisposalDetails

        public static java.lang.String getBadDisposalDetails​(java.lang.Throwable e,
                                                             org.eclipse.swt.widgets.Composite startAt)