blob: 4c1ad2485ef1a292fafd279896790754392f7b2a [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2009, 2012 SpringSource, a division of VMware, Inc.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.virgo.ide.runtime.internal.ui.providers;
import org.eclipse.core.resources.IFile;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.JavaPluginImages;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.pde.internal.ui.PDEPlugin;
import org.eclipse.pde.internal.ui.PDEPluginImages;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.virgo.ide.runtime.core.artefacts.ArtefactSet;
import org.eclipse.virgo.ide.runtime.core.artefacts.ArtefactType;
import org.eclipse.virgo.ide.runtime.core.artefacts.IArtefact;
import org.eclipse.virgo.ide.runtime.core.artefacts.IArtefactTyped;
import org.eclipse.virgo.ide.runtime.core.artefacts.LocalArtefactSet;
import org.eclipse.virgo.ide.runtime.core.artefacts.LocalBundleArtefact;
import org.eclipse.virgo.ide.runtime.internal.ui.ServerUiImages;
import org.eclipse.virgo.ide.runtime.internal.ui.editor.Messages;
import org.eclipse.virgo.ide.runtime.internal.ui.projects.IServerProjectArtefact;
import org.eclipse.virgo.ide.runtime.internal.ui.projects.IServerProjectContainer;
import org.eclipse.virgo.ide.runtime.internal.ui.projects.ProjectFileReference;
/**
* @author Miles Parker
* @author Christian Dupuis
*/
public class RuntimeLabelProvider extends LabelProvider {
@Override
public Image getImage(Object element) {
if (element instanceof IServerProjectArtefact) {
return getImage(((IServerProjectArtefact) element).getArtefact());
}
if (element instanceof IServerProjectContainer) {
return getImage(((IServerProjectContainer) element).getArtefactSet());
}
if (element instanceof ProjectFileReference) {
return ServerUiImages.getImage(ServerUiImages.IMG_OBJ_VIRGO);
}
if (element instanceof ArtefactSet) {
ArtefactType artefactType = ((IArtefactTyped) element).getArtefactType();
if (artefactType == ArtefactType.BUNDLE) {
return PDEPlugin.getDefault().getLabelProvider().get(PDEPluginImages.DESC_JAR_LIB_OBJ);
} else if (artefactType == ArtefactType.LIBRARY) {
return ServerUiImages.getImage(ServerUiImages.IMG_OBJ_VIRGO_LIB);
}
}
if (element instanceof IFile) {
return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
}
if (element instanceof IArtefactTyped) {
ArtefactType artefactType = ((IArtefactTyped) element).getArtefactType();
if (artefactType == ArtefactType.BUNDLE) {
if (element instanceof LocalBundleArtefact && ((LocalBundleArtefact) element).isSourceDownloaded()) {
return JavaPlugin.getImageDescriptorRegistry().get(JavaPluginImages.DESC_OBJS_EXTJAR_WSRC);
}
return JavaPlugin.getImageDescriptorRegistry().get(JavaPluginImages.DESC_OBJS_EXTJAR);
} else if (artefactType == ArtefactType.LIBRARY) {
return ServerUiImages.getImage(ServerUiImages.IMG_OBJ_VIRGO_FILE);
}
}
if (element instanceof LibrariesNode) {
return ServerUiImages.getImage(ServerUiImages.IMG_OBJ_LIB);
}
return super.getImage(element);
}
@Override
public String getText(Object element) {
if (element instanceof IServerProjectArtefact) {
return getText(((IServerProjectArtefact) element).getArtefact());
}
if (element instanceof IServerProjectContainer) {
return getText(((IServerProjectContainer) element).getArtefactSet());
}
if (element instanceof LibrariesNode) {
return Messages.RepositoryBrowserEditorPage_BundlesAndLibraries;
}
if (element instanceof IFile) {
return ((IFile) element).getName();
}
if (element instanceof ArtefactSet) {
ArtefactSet set = (ArtefactSet) element;
String label = set.getArtefactType().getPluralLabel();
if (element instanceof LocalArtefactSet) {
label = ((LocalArtefactSet) element).getRelativePath() + " [" + label + "]";
}
return label;
} else if (element instanceof IArtefact) {
IArtefact version = (IArtefact) element;
StringBuilder l = new StringBuilder();
if (version.getName() != null) {
l.append(version.getName());
l.append(" - ");
}
l.append(version.getSymbolicName());
l.append(" (");
l.append(version.getVersion());
l.append(")");
return l.toString();
}
return super.getText(element);
}
}