package com.gorillalogic.monkeyconsole.componentview.ui; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import com.gorillalogic.monkeyconsole.componentview.model.UIComponent; import com.gorillalogic.monkeyconsole.componentview.model.UIContainer; import com.gorillalogic.monkeyconsole.editors.utils.MonkeyTalkImagesEnum; public class UIContainerLabelProvider extends LabelProvider { private Map imageCache = new HashMap(11); /* * @see ILabelProvider#getImage(Object) */ public Image getImage(Object element) { ImageDescriptor descriptor = null; if (element instanceof UIContainer) { descriptor = MonkeyTalkImagesEnum.MOVINGBOX.image; } else if (element instanceof UIComponent) { descriptor = MonkeyTalkImagesEnum.BOOK.image; } else { throw unknownElement(element); } //obtain the cached image corresponding to the descriptor Image image = (Image)imageCache.get(descriptor); if (image == null) { image = descriptor.createImage(); imageCache.put(descriptor, image); } return image; } /* * @see ILabelProvider#getText(Object) */ public String getText(Object element) { String result; if (element instanceof UIComponent) { UIComponent component = ((UIComponent)element); if (component.getLabelString() == null) { result="root"; } else { result=component.getLabelString(); } } else { throw unknownElement(element); } return result; } public void dispose() { for (Iterator i = imageCache.values().iterator(); i.hasNext();) { ((Image) i.next()).dispose(); } imageCache.clear(); } protected RuntimeException unknownElement(Object element) { return new RuntimeException("Unknown type of element in tree of type " + element.getClass().getName()); } }