/******************************************************************************* * Copyright (c) 2000, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.internal.util; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; /** * SWTResourceUtil is a class that holds onto Colors, Fonts and Images and * disposes them on shutdown. */ public class SWTResourceUtil { /** * The cache of images that have been dispensed by this provider. Maps * ImageDescriptor->Image. Caches are all static to avoid creating extra * system resources for very common images, font and colors. */ private static Map imageTable = new Hashtable(40); /** * The cache of colors that have been dispensed by this provider. Maps * RGB->Color. */ private static Map colorTable = new Hashtable(7); /** * The cache of fonts that have been dispensed by this provider. Maps * FontData->Font. */ private static Map fontTable = new Hashtable(7); /** * Disposes of all allocated images, colors and fonts when shutting down the * plug-in. */ public static final void shutdown() { if (imageTable != null) { for (Iterator i = imageTable.values().iterator(); i.hasNext();) { ((Image) i.next()).dispose(); } imageTable = null; } if (colorTable != null) { for (Iterator i = colorTable.values().iterator(); i.hasNext();) { ((Color) i.next()).dispose(); } colorTable = null; } if (fontTable != null) { for (Iterator i = fontTable.values().iterator(); i.hasNext();) { ((Font) i.next()).dispose(); } fontTable = null; } } /** * Get the Map of RGBs to Colors. * @return Returns the colorTable. */ public static Map getColorTable() { return colorTable; } /** * Return the map of FontDatas to Fonts. * @return Returns the fontTable. */ public static Map getFontTable() { return fontTable; } /** * Return the map of ImageDescriptors to Images. * @return Returns the imageTable. */ public static Map getImageTable() { return imageTable; } }