Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgkessler2008-03-05 17:09:24 +0000
committergkessler2008-03-05 17:09:24 +0000
commite21afe371bce806c92ab7e3b64adc5f516518012 (patch)
treec641e12d935b6a175028dea3844b67626ca3e75c /jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner
parent91e79f14148058a9a7af20839f012b4252dfc522 (diff)
downloadwebtools.jsf-e21afe371bce806c92ab7e3b64adc5f516518012.tar.gz
webtools.jsf-e21afe371bce806c92ab7e3b64adc5f516518012.tar.xz
webtools.jsf-e21afe371bce806c92ab7e3b64adc5f516518012.zip
Cache images in PDPlugin
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner')
-rw-r--r--jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/TagImageManager.java27
1 files changed, 21 insertions, 6 deletions
diff --git a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/TagImageManager.java b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/TagImageManager.java
index f269213c4..6c6f955b7 100644
--- a/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/TagImageManager.java
+++ b/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/TagImageManager.java
@@ -31,7 +31,7 @@ import org.eclipse.swt.graphics.Image;
/**
* Locates and creates Images for tags using the common metadata framework.
*
- * No caching is of images is occurring at this time.
+ * Images are cached in the PDPlugin's ImageRegistry.
*
* Some code is being duplicated in palette helper. PaletteHelper should be re-factored to use this code
*
@@ -62,6 +62,7 @@ public class TagImageManager {
}
/**
+ * Returns small image using metadata and may be null. Caller should NOT dispose the image, but should call TagImageManager's dispose(image)
* @param project
* @param nsUri
* @param tagName
@@ -72,13 +73,12 @@ public class TagImageManager {
Model model = getModel(project, nsUri);
if (model != null){
ImageDescriptor imgDesc = getSmallIconImageDescriptor(model, tagName);
- if (imgDesc != null)
- image = imgDesc.createImage();
+ image = getOrCreateImage(imgDesc);
}
return image;
}
-
+
/**
* @param project
* @param nsUri
@@ -90,13 +90,28 @@ public class TagImageManager {
Model model = getModel(project, nsUri);
if (model != null){
ImageDescriptor imgDesc = getLargeIconImageDescriptor(model, nsUri);
- if (imgDesc != null)
- image = imgDesc.createImage();
+ image = getOrCreateImage(imgDesc);
}
return image;
}
+ private Image getOrCreateImage(ImageDescriptor imgDesc) {
+ Image image = null;
+ if (imgDesc != null){
+ image = PDPlugin.getDefault().getImageRegistry().get(imgDesc.toString());
+ if (image == null ){
+ image = imgDesc.createImage();
+ PDPlugin.getDefault().getImageRegistry().put(imgDesc.toString(), image);
+ } else if (image.isDisposed()){ //should not occur, but handling just in case
+ PDPlugin.getDefault().getImageRegistry().remove(imgDesc.toString());
+ image = imgDesc.createImage();
+ PDPlugin.getDefault().getImageRegistry().put(imgDesc.toString(), image);
+ }
+ }
+ return image;
+ }
+
private Model getModel(IProject project, String nsUri) {
ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper.createMetaDataModelContext(project, nsUri);
Model model =TaglibDomainMetaDataQueryHelper.getModel(modelContext);

Back to the top