blob: 1197e67cc98282475e0f21e53baf8699b4935222 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2008 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.pde.internal.ui.views.plugins;
import org.eclipse.core.resources.IStorage;
import org.eclipse.jdt.core.*;
import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.osgi.util.NLS;
import org.eclipse.pde.core.plugin.*;
import org.eclipse.pde.internal.core.*;
import org.eclipse.pde.internal.ui.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
public class PluginsLabelProvider extends LabelProvider {
private PDELabelProvider sharedProvider;
private Image projectImage;
private Image folderImage;
/**
* Constructor for PluginsLabelProvider.
*/
public PluginsLabelProvider() {
super();
sharedProvider = PDEPlugin.getDefault().getLabelProvider();
folderImage = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
projectImage = PlatformUI.getWorkbench().getSharedImages().getImage(IDE.SharedImages.IMG_OBJ_PROJECT);
sharedProvider.connect(this);
}
public void dispose() {
sharedProvider.disconnect(this);
super.dispose();
}
public String getText(Object obj) {
if (obj instanceof IPluginModelBase) {
return getText((IPluginModelBase) obj);
}
if (obj instanceof FileAdapter) {
return getText((FileAdapter) obj);
}
if (obj instanceof IPackageFragmentRoot) {
// use the short name
return ((IPackageFragmentRoot) obj).getPath().lastSegment();
}
if (obj instanceof IJavaElement) {
return ((IJavaElement) obj).getElementName();
}
if (obj instanceof IStorage) {
return ((IStorage) obj).getName();
}
if (obj instanceof IDeferredWorkbenchAdapter) {
return ((IDeferredWorkbenchAdapter) obj).getLabel(obj);
}
return super.getText(obj);
}
public Image getImage(Object obj) {
if (obj instanceof IPluginModelBase) {
return getImage((IPluginModelBase) obj);
}
if (obj instanceof FileAdapter) {
return getImage((FileAdapter) obj);
}
if (obj instanceof IPackageFragmentRoot) {
IPackageFragmentRoot root = (IPackageFragmentRoot) obj;
boolean hasSource = false;
try {
hasSource = root.getSourceAttachmentPath() != null;
} catch (JavaModelException e) {
}
return JavaUI.getSharedImages().getImage(hasSource ? org.eclipse.jdt.ui.ISharedImages.IMG_OBJS_EXTERNAL_ARCHIVE_WITH_SOURCE : org.eclipse.jdt.ui.ISharedImages.IMG_OBJS_EXTERNAL_ARCHIVE);
}
if (obj instanceof IPackageFragment) {
return JavaUI.getSharedImages().getImage(org.eclipse.jdt.ui.ISharedImages.IMG_OBJS_PACKAGE);
}
if (obj instanceof ICompilationUnit) {
return JavaUI.getSharedImages().getImage(org.eclipse.jdt.ui.ISharedImages.IMG_OBJS_CUNIT);
}
if (obj instanceof IClassFile) {
return JavaUI.getSharedImages().getImage(org.eclipse.jdt.ui.ISharedImages.IMG_OBJS_CFILE);
}
if (obj instanceof IStorage) {
if (obj instanceof IJarEntryResource && !((IJarEntryResource) obj).isFile())
return folderImage;
return getFileImage(((IStorage) obj).getName());
}
return null;
}
private String getText(IPluginModelBase model) {
String text = sharedProvider.getText(model);
if (!model.isEnabled())
text = NLS.bind(PDEUIMessages.PluginsView_disabled, text);
return text;
}
private String getText(FileAdapter file) {
return file.getFile().getName();
}
private Image getImage(IPluginModelBase model) {
if (model.getUnderlyingResource() != null)
return projectImage;
if (model instanceof IPluginModel)
return sharedProvider.getObjectImage((IPlugin) model.getPluginBase(), true, isInJavaSearch(model));
return sharedProvider.getObjectImage((IFragment) model.getPluginBase(), true, isInJavaSearch(model));
}
private boolean isInJavaSearch(IPluginModelBase model) {
String id = model.getPluginBase().getId();
SearchablePluginsManager manager = PDECore.getDefault().getSearchablePluginsManager();
return manager.isInJavaSearch(id);
}
private Image getImage(FileAdapter fileAdapter) {
if (fileAdapter.isDirectory()) {
return folderImage;
}
return getFileImage(fileAdapter.getFile().getName());
}
private Image getFileImage(String fileName) {
ImageDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry().getImageDescriptor(fileName);
return sharedProvider.get(desc);
}
}