Index:
ChangeLog =================================================================== RCS
file: /home/tools/org.eclipse.cdt.debug.ui/ChangeLog,v retrieving revision
1.149 diff -u -r1.149 ChangeLog --- ChangeLog 29 May 2003 19:20:15
-0000 1.149 +++ ChangeLog 30 May 2003 17:44:06 -0000 @@ -1,4
+1,9 @@ 2003-05-29 Mikhail Khodjaiants + PR 38268: added the
image cache for overlay images. + * OverlayImageCache.java:
new + * CDTDebugModelPresentation.java + +2003-05-29 Mikhail
Khodjaiants Changed the vizualization of arrays and
structures. * CDTDebugModelPresentation.java Index:
src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java,v retrieving
revision 1.55 diff -u -r1.55 CDTDebugModelPresentation.java ---
src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java 29 May
2003 19:20:15 -0000 1.55 +++
src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java 30 May
2003 17:44:07 -0000 @@ -100,6 +100,8 @@ private
static CDTDebugModelPresentation fInstance = null; + private
OverlayImageCache fImageCache = new
OverlayImageCache(); + /** * Constructor for
CDTDebugModelPresentation. */ @@ -218,8 +220,7
@@ break; } } - OverlayImageDescriptor
overlayImage = new OverlayImageDescriptor( baseImage, overlays
); - return
overlayImage.createImage(); + return
fImageCache.getImageFor( new OverlayImageDescriptor( baseImage, overlays )
); } return
null; } @@ -627,8 +628,7
@@ descriptor = DebugUITools.getImageDescriptor(
IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED
); } ; - OverlayImageDescriptor
overlayImage = new OverlayImageDescriptor( fDebugImageRegistry.get( descriptor
), computeBreakpointOverlays( breakpoint ) ); - return
overlayImage.createImage(); + return fImageCache.getImageFor( new
OverlayImageDescriptor( fDebugImageRegistry.get( descriptor ),
computeBreakpointOverlays( breakpoint ) )
); } protected Image getWatchpointImage(
ICWatchpoint watchpoint ) throws CoreException @@ -652,8 +652,7
@@ else descriptor =
CDebugImages.DESC_OBJS_WATCHPOINT_DISABLED; } - OverlayImageDescriptor
overlayImage = new OverlayImageDescriptor( fDebugImageRegistry.get( descriptor
), computeBreakpointOverlays( watchpoint ) ); - return
overlayImage.createImage(); + return fImageCache.getImageFor( new
OverlayImageDescriptor( fDebugImageRegistry.get( descriptor ),
computeBreakpointOverlays( watchpoint ) )
); } protected IBreakpoint
getBreakpoint( IMarker marker ) @@ -930,5 +929,13
@@ { } return
type; + } + + /* (non-Javadoc) + * @see
org.eclipse.jface.viewers.IBaseLabelProvider#dispose() +
*/ + public void
dispose() + { + fImageCache.disposeAll(); } } Index:
src/org/eclipse/cdt/debug/internal/ui/OverlayImageCache.java =================================================================== RCS
file: src/org/eclipse/cdt/debug/internal/ui/OverlayImageCache.java diff -N
src/org/eclipse/cdt/debug/internal/ui/OverlayImageCache.java ---
/dev/null 1 Jan 1970 00:00:00 -0000 +++
src/org/eclipse/cdt/debug/internal/ui/OverlayImageCache.java 30 May 2003
17:44:07 -0000 @@ -0,0 +1,53 @@ +/* + *(c) Copyright QNX Software
Systems Ltd. 2002. + * All Rights Reserved. + * + */ + +package
org.eclipse.cdt.debug.internal.ui; + +import java.util.HashMap; +import
java.util.Iterator; +import java.util.Map; + +import
org.eclipse.swt.graphics.Image; + +/** + * Maintains a cache of overlay
images. + * + * @since May 30, 2003 + */ +public class
OverlayImageCache +{ + private Map cache = new
HashMap(); + + /** + * Returns and caches an image
corresponding to the specified image descriptor. + * + *
@param imageDecsriptor the image descriptor + * @return the
image + */ + public Image getImageFor( OverlayImageDescriptor
imageDescriptor ) + { + Image image = (Image)cache.get(
imageDescriptor ); + if ( image == null
) + { + image =
imageDescriptor.createImage(); + cache.put( imageDescriptor,
image ); + } + return
image; + } + + /** + * Disposes of all images in the
cache. + */ + public void
disposeAll() + { + for ( Iterator it =
cache.values().iterator(); it.hasNext();
) + { + Image image =
(Image)it.next(); + image.dispose(); + } + cache.clear(); + } +}
|