1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-05 23:35:48 +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 2003-05-29 Mikhail Khodjaiants
Changed the vizualization of arrays and structures. Changed the vizualization of arrays and structures.
* CDTDebugModelPresentation.java * CDTDebugModelPresentation.java

View file

@ -100,6 +100,8 @@ public class CDTDebugModelPresentation extends LabelProvider
private static CDTDebugModelPresentation fInstance = null; private static CDTDebugModelPresentation fInstance = null;
private OverlayImageCache fImageCache = new OverlayImageCache();
/** /**
* Constructor for CDTDebugModelPresentation. * Constructor for CDTDebugModelPresentation.
*/ */
@ -218,8 +220,7 @@ public class CDTDebugModelPresentation extends LabelProvider
break; break;
} }
} }
OverlayImageDescriptor overlayImage = new OverlayImageDescriptor( baseImage, overlays ); return fImageCache.getImageFor( new OverlayImageDescriptor( baseImage, overlays ) );
return overlayImage.createImage();
} }
return null; return null;
} }
@ -627,8 +628,7 @@ public class CDTDebugModelPresentation extends LabelProvider
descriptor = DebugUITools.getImageDescriptor( IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED ); descriptor = DebugUITools.getImageDescriptor( IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED );
} }
; ;
OverlayImageDescriptor overlayImage = new OverlayImageDescriptor( fDebugImageRegistry.get( descriptor ), computeBreakpointOverlays( breakpoint ) ); return fImageCache.getImageFor( new OverlayImageDescriptor( fDebugImageRegistry.get( descriptor ), computeBreakpointOverlays( breakpoint ) ) );
return overlayImage.createImage();
} }
protected Image getWatchpointImage( ICWatchpoint watchpoint ) throws CoreException protected Image getWatchpointImage( ICWatchpoint watchpoint ) throws CoreException
@ -652,8 +652,7 @@ public class CDTDebugModelPresentation extends LabelProvider
else else
descriptor = CDebugImages.DESC_OBJS_WATCHPOINT_DISABLED; descriptor = CDebugImages.DESC_OBJS_WATCHPOINT_DISABLED;
} }
OverlayImageDescriptor overlayImage = new OverlayImageDescriptor( fDebugImageRegistry.get( descriptor ), computeBreakpointOverlays( watchpoint ) ); return fImageCache.getImageFor( new OverlayImageDescriptor( fDebugImageRegistry.get( descriptor ), computeBreakpointOverlays( watchpoint ) ) );
return overlayImage.createImage();
} }
protected IBreakpoint getBreakpoint( IMarker marker ) protected IBreakpoint getBreakpoint( IMarker marker )
@ -931,4 +930,12 @@ public class CDTDebugModelPresentation extends LabelProvider
} }
return type; 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();
}
}