blob: 2b7fe0742bff2517e4a3722efec9ae60ca7dcd5a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2006 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.ui.externaltools.internal.ui;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.Platform;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationType;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugModelPresentation;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.externaltools.internal.model.ExternalToolsPlugin;
import org.eclipse.ui.externaltools.internal.model.IExternalToolConstants;
import org.eclipse.ui.externaltools.internal.ui.BuilderPropertyPage.ErrorConfig;
class BuilderLabelProvider extends LabelProvider {
private static final String IMG_BUILDER = "icons/full/obj16/builder.gif"; //$NON-NLS-1$;
private static final String IMG_INVALID_BUILD_TOOL = "icons/full/obj16/invalid_build_tool.gif"; //$NON-NLS-1$
IDebugModelPresentation debugModelPresentation= DebugUITools.newDebugModelPresentation();
private Image builderImage = ExternalToolsPlugin.getDefault().getImageDescriptor(IMG_BUILDER).createImage();
private Image invalidBuildToolImage = ExternalToolsPlugin.getDefault().getImageDescriptor(IMG_INVALID_BUILD_TOOL).createImage();
public String getText(Object element) {
if (element instanceof ICommand) {
return getCommandText((ICommand) element);
} else if (element instanceof ILaunchConfiguration || element instanceof ILaunchConfigurationType) {
return getDebugModelText(element);
} else if (element instanceof ErrorConfig) {
return ExternalToolsUIMessages.BuilderPropertyPage_invalidBuildTool;
}
return super.getText(element);
}
public Image getImage(Object element) {
if (element instanceof ICommand) {
return getCommandImage();
} else if (element instanceof ILaunchConfiguration || element instanceof ILaunchConfigurationType) {
return getDebugModelImage(element);
} else if (element instanceof ErrorConfig) {
return invalidBuildToolImage;
}
return super.getImage(element);
}
public String getCommandText(ICommand command) {
String builderID = command.getBuilderName();
return getBuilderName(builderID);
}
private String getBuilderName(String builderID) {
// Get the human-readable name of the builder
IExtension extension = Platform.getExtensionRegistry().getExtension(ResourcesPlugin.PI_RESOURCES, ResourcesPlugin.PT_BUILDERS, builderID);
String builderName;
if (extension != null) {
builderName = extension.getLabel();
} else {
builderName = NLS.bind(ExternalToolsUIMessages.BuilderPropertyPage_missingBuilder, new Object[] { builderID });
}
return builderName;
}
/**
* Returns the image for build commands.
*
* @return the build command image
*/
public Image getCommandImage() {
return builderImage;
}
/**
* Returns a text label for the given object from a debug
* model presentation.
* @param element the element
* @return a text label from a debug model presentation
*/
public String getDebugModelText(Object element) {
if (element instanceof ILaunchConfiguration) {
try {
String disabledBuilderName= ((ILaunchConfiguration) element).getAttribute(IExternalToolConstants.ATTR_DISABLED_BUILDER, (String)null);
if (disabledBuilderName != null) {
//really a disabled builder wrapped as a launch configuration
return getBuilderName(disabledBuilderName);
}
} catch (CoreException e) {
}
}
return debugModelPresentation.getText(element);
}
/**
* Returns an image for the given object from a debug
* model presentation.
* @param element the element
* @return an image from a debug model presentation
*/
public Image getDebugModelImage(Object element) {
if (element instanceof ILaunchConfiguration) {
try {
String disabledBuilderName= ((ILaunchConfiguration) element).getAttribute(IExternalToolConstants.ATTR_DISABLED_BUILDER, (String)null);
if (disabledBuilderName != null) {
//really a disabled builder wrapped as a launch configuration
return builderImage;
}
} catch (CoreException e) {
}
}
return debugModelPresentation.getImage(element);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
public void dispose() {
builderImage.dispose();
invalidBuildToolImage.dispose();
}
}