Package com.biglybt.ui.swt.imageloader
Class ImageLoader
- java.lang.Object
-
- com.biglybt.ui.swt.imageloader.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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
ImageLoader.ImageDownloaderListener
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.ConcurrentHashMap<java.lang.String,ImageLoaderRefInfo>
_mapImages
private java.io.File
cache_dir
private java.util.Set<java.lang.String>
cached_resources
private static boolean
DEBUG_REFCOUNT
private static boolean
DEBUG_UNLOAD
private int
disabledOpacity
private org.eclipse.swt.widgets.Display
display
private static int
GC_INTERVAL
private static ImageLoader
instance
static org.eclipse.swt.graphics.Image
noImage
private java.util.ArrayList<java.lang.String>
notFound
static org.eclipse.swt.graphics.Image
nullImage
private TimerEventPeriodic
periodicEvent
private java.util.concurrent.CopyOnWriteArrayList<SkinProperties>
skinProperties
private java.lang.String[]
sSuffixChecks
-
Constructor Summary
Constructors Constructor Description ImageLoader(org.eclipse.swt.widgets.Display display, SkinProperties skinProperties)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addImage(java.lang.String key, org.eclipse.swt.graphics.Image image)
Adds image to repository.void
addImage(java.lang.String key, org.eclipse.swt.graphics.Image[] images)
void
addImageNoDipose(java.lang.String key, org.eclipse.swt.graphics.Image image)
void
addSkinProperties(SkinProperties skinProperties)
boolean
collectGarbage()
void
dispose()
static void
disposeInstance()
private org.eclipse.swt.graphics.Image
fadeImage(org.eclipse.swt.graphics.Image imgToFade)
java.lang.String
findImageID(org.eclipse.swt.graphics.Image imageToFind)
private org.eclipse.swt.graphics.Image[]
findResources(java.lang.String sKey)
static java.lang.Object[]
findWidgetWithDisposedImage(org.eclipse.swt.widgets.Composite c)
void
generate(IndentWriter writer)
int
getAnimationDelay(java.lang.String sKey)
static java.lang.String
getBadDisposalDetails(java.lang.Throwable e, org.eclipse.swt.widgets.Composite startAt)
org.eclipse.swt.graphics.Image
getFileImage(java.io.File file, org.eclipse.swt.graphics.Point maxSize, ImageLoader.ImageDownloaderListener l)
org.eclipse.swt.graphics.Image
getImage(java.lang.String sKey)
protected org.eclipse.swt.graphics.Image
getImageFromMap(java.lang.String sKey)
org.eclipse.swt.graphics.Image[]
getImages(java.lang.String sKey)
protected org.eclipse.swt.graphics.Image[]
getImagesFromMap(java.lang.String sKey)
java.io.InputStream
getImageStream(java.lang.String sKey)
private org.eclipse.swt.graphics.Image
getImageSupport(java.lang.String sKey)
static ImageLoader
getInstance()
static org.eclipse.swt.graphics.Image
getNoImage()
private static org.eclipse.swt.graphics.Image
getNoImage(java.lang.String key)
private static org.eclipse.swt.graphics.Image
getNullImage()
private ImageLoaderRefInfo
getRefInfoFromImageMap(java.lang.String key)
SkinProperties[]
getSkinProperties()
org.eclipse.swt.graphics.Image
getUrlImage(java.lang.String url, ImageLoader.ImageDownloaderListener l)
org.eclipse.swt.graphics.Image
getUrlImage(java.lang.String url, org.eclipse.swt.graphics.Point maxSize, ImageLoader.ImageDownloaderListener l)
Get anImage
from an url.private org.eclipse.swt.graphics.Image
getUrlImageSupport(java.lang.String url, java.lang.String baseImageKey, org.eclipse.swt.graphics.Point maxSize, ImageLoader.ImageDownloaderListener l)
boolean
imageAdded(java.lang.String name)
org.eclipse.swt.graphics.Image[]
imageAdded_NoSWT(java.lang.String name)
boolean
imageExists(java.lang.String name)
static boolean
isRealImage(org.eclipse.swt.graphics.Image image)
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)
private void
logRefCount(java.lang.String key, ImageLoaderRefInfo info, boolean inc)
private org.eclipse.swt.graphics.Image[]
parseValuesString(java.lang.ClassLoader cl, java.lang.String sKey, java.lang.String[] values, java.lang.String suffix)
private ImageLoaderRefInfo
putIfAbsentRefInfoToImageMap(java.lang.String key, ImageLoaderRefInfo info)
private void
putRefInfoToImageMap(java.lang.String key, ImageLoaderRefInfo info)
long
releaseImage(java.lang.String sKey)
org.eclipse.swt.graphics.Image
resizeImageIfLarger(org.eclipse.swt.graphics.Image image, org.eclipse.swt.graphics.Point maxSize)
void
setBackgroundImage(org.eclipse.swt.widgets.Control control, java.lang.String key)
org.eclipse.swt.graphics.Image
setButtonImage(org.eclipse.swt.widgets.Button btn, java.lang.String key)
void
setLabelImage(org.eclipse.swt.widgets.Label label, java.lang.String key)
org.eclipse.swt.graphics.Image
setToolItemImage(org.eclipse.swt.widgets.ToolItem btn, java.lang.String key)
void
unLoadImages()
private void
writeEvidenceLine(IndentWriter writer, java.lang.String key, ImageLoaderRefInfo info, long[] totalSizeEstimate, long[] sizeCouldBeFree)
-
-
-
Field Detail
-
instance
private static ImageLoader instance
-
DEBUG_UNLOAD
private static final boolean DEBUG_UNLOAD
- See Also:
- Constant Field Values
-
DEBUG_REFCOUNT
private static final boolean DEBUG_REFCOUNT
- See Also:
- Constant Field Values
-
GC_INTERVAL
private static final int GC_INTERVAL
- See Also:
- Constant Field Values
-
sSuffixChecks
private final java.lang.String[] sSuffixChecks
-
periodicEvent
private final TimerEventPeriodic periodicEvent
-
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)
-
putIfAbsentRefInfoToImageMap
private ImageLoaderRefInfo putIfAbsentRefInfoToImageMap(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)
-
getUrlImage
public org.eclipse.swt.graphics.Image getUrlImage(java.lang.String url, ImageLoader.ImageDownloaderListener l)
-
getUrlImage
public org.eclipse.swt.graphics.Image getUrlImage(java.lang.String url, org.eclipse.swt.graphics.Point maxSize, ImageLoader.ImageDownloaderListener l)
Get anImage
from an url. URL will be the key, which you can use later toreleaseImage(String)
-
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 purposesmaxSize
- non-null -> image will be resized if requiredl
-- 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)
-
generate
public void generate(IndentWriter writer)
- Specified by:
generate
in interfaceAEDiagnosticsEvidenceGenerator
-
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)
-
getSkinProperties
public SkinProperties[] getSkinProperties()
-
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)
-
-