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 }