/*******************************************************************************
* 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;
}
}