001 /*
002 * file FolderLabelProvider.java
003 *
004 * Licensed Materials - Property of IBM
005 * Restricted Materials of IBM - you are allowed to copy, modify and
006 * redistribute this file as part of any program that interfaces with
007 * IBM Rational CM API.
008 *
009 * com.ibm.rational.teamapi.scout.FolderLabelProvider
010 *
011 * © Copyright IBM Corporation 2004, 2008. All Rights Reserved.
012 * Note to U.S. Government Users Restricted Rights: Use, duplication or
013 * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
014 */
015
016 package com.ibm.rational.teamapi.scout;
017
018 import java.util.HashMap;
019 import java.util.Iterator;
020 import java.util.Map;
021
022 import org.eclipse.jface.resource.ImageDescriptor;
023 import org.eclipse.jface.viewers.LabelProvider;
024 import org.eclipse.swt.graphics.Image;
025
026 /**
027 * A LabelProvider for ProxyElememts.
028 */
029 public class FolderLabelProvider extends LabelProvider {
030 private Map<ImageDescriptor, Image> imageCache =
031 new HashMap<ImageDescriptor, Image>(11);
032
033 /*
034 * @see ILabelProvider#getImage(Object)
035 */
036 public Image getImage(Object element) {
037 ImageDescriptor descriptor = null;
038 if (((ProxyElement)element).couldBeFolder()) {
039 descriptor = ScoutPlugin.getImageDescriptor("folder.gif");
040 } else
041 descriptor = ScoutPlugin.getImageDescriptor("resource.gif");
042
043 //obtain the cached image corresponding to the descriptor
044 Image image = (Image)imageCache.get(descriptor);
045 if (image == null) {
046 image = descriptor.createImage();
047 imageCache.put(descriptor, image);
048 }
049 return image;
050 }
051
052 /*
053 * @see ILabelProvider#getText(Object)
054 */
055 public String getText(Object element)
056 {
057 return ((ProxyElement)element).getText();
058 }
059
060 /**
061 * Dispose of the images in the cache.
062 */
063 public void dispose() {
064 for (Iterator i = imageCache.values().iterator(); i.hasNext();) {
065 ((Image) i.next()).dispose();
066 }
067 imageCache.clear();
068 }
069 }