1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-03 14:25:37 +02:00

PR 38268: added the image cache for overlay images.

This commit is contained in:
Mikhail Khodjaiants 2003-05-30 17:44:52 +00:00
parent 18b219a690
commit 6ac9c4e9a4
3 changed files with 71 additions and 6 deletions

View file

@ -1,3 +1,8 @@
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

View file

@ -100,6 +100,8 @@ public class CDTDebugModelPresentation extends LabelProvider
private static CDTDebugModelPresentation fInstance = null;
private OverlayImageCache fImageCache = new OverlayImageCache();
/**
* Constructor for CDTDebugModelPresentation.
*/
@ -218,8 +220,7 @@ public class CDTDebugModelPresentation extends LabelProvider
break;
}
}
OverlayImageDescriptor overlayImage = new OverlayImageDescriptor( baseImage, overlays );
return overlayImage.createImage();
return fImageCache.getImageFor( new OverlayImageDescriptor( baseImage, overlays ) );
}
return null;
}
@ -627,8 +628,7 @@ public class CDTDebugModelPresentation extends LabelProvider
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 @@ public class CDTDebugModelPresentation extends LabelProvider
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 )
@ -931,4 +930,12 @@ public class CDTDebugModelPresentation extends LabelProvider
}
return type;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
public void dispose()
{
fImageCache.disposeAll();
}
}

View file

@ -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();
}
}