+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package net.sourceforge.phpdt.internal.ui.viewsupport;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IFileEditorMapping;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Standard label provider for IStorage objects. Use this class when you want to
- * present IStorage objects in a viewer.
- */
-public class StorageLabelProvider extends LabelProvider {
-
- private IEditorRegistry fEditorRegistry = PlatformUI.getWorkbench()
- .getEditorRegistry();
-
- private Map fJarImageMap = new HashMap(10);
-
- private Image fDefaultImage;
-
- /*
- * (non-Javadoc)
- *
- * @see ILabelProvider#getImage
- */
- public Image getImage(Object element) {
- if (element instanceof IStorage)
- return getImageForJarEntry((IStorage) element);
-
- return super.getImage(element);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see ILabelProvider#getText
- */
- public String getText(Object element) {
- if (element instanceof IStorage)
- return ((IStorage) element).getName();
-
- return super.getText(element);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see IBaseLabelProvider#dispose
- */
- public void dispose() {
- if (fJarImageMap != null) {
- Iterator each = fJarImageMap.values().iterator();
- while (each.hasNext()) {
- Image image = (Image) each.next();
- image.dispose();
- }
- fJarImageMap = null;
- }
- if (fDefaultImage != null)
- fDefaultImage.dispose();
- fDefaultImage = null;
- }
-
- /*
- * Gets and caches an image for a JarEntryFile. The image for a JarEntryFile
- * is retrieved from the EditorRegistry.
- */
- private Image getImageForJarEntry(IStorage element) {
- if (fJarImageMap == null)
- return getDefaultImage();
-
- if (element == null || element.getName() == null)
- return getDefaultImage();
-
- // Try to find icon for full name
- String name = element.getName();
- Image image = (Image) fJarImageMap.get(name);
- if (image != null)
- return image;
- IFileEditorMapping[] mappings = fEditorRegistry.getFileEditorMappings();
- int i = 0;
- while (i < mappings.length) {
- if (mappings[i].getLabel().equals(name))
- break;
- i++;
- }
- String key = name;
- if (i == mappings.length) {
- // Try to find icon for extension
- IPath path = element.getFullPath();
- if (path == null)
- return getDefaultImage();
- key = path.getFileExtension();
- if (key == null)
- return getDefaultImage();
- image = (Image) fJarImageMap.get(key);
- if (image != null)
- return image;
- }
-
- // Get the image from the editor registry
- ImageDescriptor desc = fEditorRegistry.getImageDescriptor(name);
- image = desc.createImage();
-
- fJarImageMap.put(key, image);
-
- return image;
- }
-
- private Image getDefaultImage() {
- if (fDefaultImage == null)
- fDefaultImage = fEditorRegistry.getImageDescriptor((String) null)
- .createImage();
- return fDefaultImage;
- }
-}