View | Details | Raw Unified | Return to bug 379512
Collapse All | Expand All

(-)a/org.eclipse.gef/src/org/eclipse/gef/ui/palette/editparts/PaletteEditPart.java (-4 / +32 lines)
Lines 23-28 import org.eclipse.swt.graphics.Image; Link Here
23
import org.eclipse.swt.widgets.Display;
23
import org.eclipse.swt.widgets.Display;
24
24
25
import org.eclipse.jface.resource.ImageDescriptor;
25
import org.eclipse.jface.resource.ImageDescriptor;
26
import org.eclipse.jface.resource.ResourceManager;
26
import org.eclipse.ui.IMemento;
27
import org.eclipse.ui.IMemento;
27
28
28
import org.eclipse.draw2d.Border;
29
import org.eclipse.draw2d.Border;
Lines 138-145 public abstract class PaletteEditPart extends AbstractGraphicalEditPart Link Here
138
		model.removePropertyChangeListener(this);
139
		model.removePropertyChangeListener(this);
139
		traverseChildren(model, false);
140
		traverseChildren(model, false);
140
		if (image != null) {
141
		if (image != null) {
141
			image.dispose();
142
			ResourceManager resourceManager = getResourceManager();
142
			image = null;
143
144
			if(resourceManager == null) {
145
				image.dispose();
146
				image = null;
147
			} else {
148
				resourceManager.destroyImage(imgDescriptor);
149
				imgDescriptor = null;
150
				image = null;
151
			}
143
		}
152
		}
144
		super.deactivate();
153
		super.deactivate();
145
	}
154
	}
Lines 376-381 public abstract class PaletteEditPart extends AbstractGraphicalEditPart Link Here
376
	}
385
	}
377
386
378
	/**
387
	/**
388
	 * A viewer property that can be used to pass down an instance of {@link ResourceManager}
389
	 */
390
	public static final String PROPERTY_RESOURCE_MANAGER = PaletteEditPart.class.getName() + ".resourceManager";
391
	
392
	/**
379
	 * Set the image for this palette edit part.
393
	 * Set the image for this palette edit part.
380
	 * 
394
	 * 
381
	 * @param desc
395
	 * @param desc
Lines 384-391 public abstract class PaletteEditPart extends AbstractGraphicalEditPart Link Here
384
	protected void setImageDescriptor(ImageDescriptor desc) {
398
	protected void setImageDescriptor(ImageDescriptor desc) {
385
		if (desc == imgDescriptor)
399
		if (desc == imgDescriptor)
386
			return;
400
			return;
387
		imgDescriptor = desc;
401
		
388
		setImageInFigure(getImageCache().getImage(imgDescriptor));
402
		ResourceManager resourceManager = getResourceManager();
403
		if (resourceManager == null) {
404
			imgDescriptor = desc;
405
			setImageInFigure(getImageCache().getImage(imgDescriptor));
406
		} else {
407
			ImageDescriptor oldImageDescriptor = imgDescriptor;
408
			imgDescriptor = desc;
409
			setImageInFigure(resourceManager.createImage(desc));
410
			if(oldImageDescriptor != null)
411
				resourceManager.destroyImage(oldImageDescriptor);
412
		}
413
	}
414
415
	private ResourceManager getResourceManager() {
416
		return (ResourceManager) getViewer().getProperty(PROPERTY_RESOURCE_MANAGER);
389
	}
417
	}
390
418
391
	/**
419
	/**

Return to bug 379512