/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.python.pydev.analysis.actions;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.python.pydev.core.log.Log;
import com.aptana.shared_core.string.FastStringBuffer;
import com.python.pydev.analysis.AnalysisPlugin;
import com.python.pydev.analysis.additionalinfo.AdditionalProjectInterpreterInfo;
import com.python.pydev.analysis.additionalinfo.AdditionalSystemInterpreterInfo;
import com.python.pydev.analysis.additionalinfo.IInfo;
/**
* Provides the labels and images for the bottom panel
*
* @author Fabio
*/
public final class ModuleIInfoLabelProvider extends LabelProvider {
@Override
public String getText(Object element) {
if (element instanceof AdditionalInfoAndIInfo) {
AdditionalInfoAndIInfo additional = (AdditionalInfoAndIInfo) element;
element = additional.info;
String suffix = null;
try {
if (additional.additionalInfo instanceof AdditionalProjectInterpreterInfo) {
AdditionalProjectInterpreterInfo projectInterpreterInfo = (AdditionalProjectInterpreterInfo) additional.additionalInfo;
suffix = projectInterpreterInfo.getProject().getName();
} else if (additional.additionalInfo instanceof AdditionalSystemInterpreterInfo) {
AdditionalSystemInterpreterInfo systemInterpreterInfo = (AdditionalSystemInterpreterInfo) additional.additionalInfo;
suffix = systemInterpreterInfo.getManager().getDefaultInterpreterInfo(false).getName();
}
} catch (Throwable e) {
Log.log(e);
}
String iInfoText = getIInfoText((IInfo) element, suffix);
return iInfoText;
}
if (element instanceof String) {
return (String) element;
}
return getIInfoText((IInfo) element, null);
}
private String getIInfoText(IInfo info, String suffix) {
String path = info.getPath();
int pathLen;
if (path != null && (pathLen = path.length()) > 0) {
int suffixLen = suffix != null ? suffix.length() + 5 : 0;
FastStringBuffer buf = new FastStringBuffer(info.getDeclaringModuleName(), pathLen + 5 + suffixLen).append(
"/").append(path);
if (suffix != null) {
return buf.append(" (").append(suffix).append(")").toString();
}
return buf.toString();
}
String declaringModuleName = info.getDeclaringModuleName();
if (suffix != null) {
return new FastStringBuffer(declaringModuleName, suffix.length() + 6).append(" (").append(suffix)
.append(")").toString();
}
return declaringModuleName;
}
@Override
public Image getImage(Object element) {
IInfo info = NameIInfoLabelProvider.getInfo(element);
if (info == null) {
return null;
}
return AnalysisPlugin.getImageForTypeInfo(info);
}
}