blob: f7b488eed36821139ce4c90aa8f1f238debc057c [file] [log] [blame]
package org.eclipse.dltk.tcl.internal.ui.navigation;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.dltk.core.IScriptFolder;
import org.eclipse.dltk.core.environment.EnvironmentManager;
import org.eclipse.dltk.core.environment.EnvironmentPathUtils;
import org.eclipse.dltk.core.environment.IEnvironment;
import org.eclipse.dltk.core.environment.IFileHandle;
import org.eclipse.dltk.tcl.internal.core.packages.TclPackageElement;
import org.eclipse.dltk.tcl.internal.core.packages.TclPackageFragment;
import org.eclipse.dltk.tcl.internal.core.packages.TclPackageSourceModule;
import org.eclipse.dltk.tcl.internal.core.sources.TclSourcesFragment;
import org.eclipse.dltk.tcl.internal.core.sources.TclSourcesSourceModule;
import org.eclipse.dltk.tcl.internal.ui.TclImages;
import org.eclipse.dltk.ui.DLTKPluginImages;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
public class TclModelLabelProvider extends LabelProvider {
@Override
public String getText(Object element) {
if (element instanceof TclPackageFragment) {
return ((TclPackageFragment) element).getPackageName();
} else if (element instanceof TclSourcesFragment) {
return "Sources";
} else if (element instanceof TclPackageElement) {
TclPackageElement pkg = (TclPackageElement) element;
String result = pkg.getPackageName();
if (pkg.getVersion() != null) {
result += " " + pkg.getVersion();
}
return result;
} else if (element instanceof TclPackageSourceModule) {
final TclPackageSourceModule module = (TclPackageSourceModule) element;
return module.getElementName() + " ("
+ module.getStorage().getFullPath().toString() + ")";
} else if (element instanceof TclSourcesSourceModule) {
TclSourcesSourceModule module = (TclSourcesSourceModule) element;
IEnvironment environment = EnvironmentManager
.getEnvironment(module.getScriptProject());
String originalName = module.getOriginalName();
String convertedPath = environment
.convertPathToString(module.getFullPath());
IFileHandle file = EnvironmentPathUtils.getFile(module);
boolean exists = file != null && file.exists();
String postFix = exists ? "" : " [Not available]";
if (originalName != null && !originalName.equals(convertedPath)) {
return originalName + " (" + convertedPath + ")" + postFix;
}
return convertedPath + postFix;
}
return null;
}
@Override
public Image getImage(Object element) {
if (element instanceof TclSourcesFragment) {
return DLTKPluginImages.get(DLTKPluginImages.IMG_OBJS_LIBRARY_SRC);
} else if (element instanceof IScriptFolder) {
if (element instanceof TclPackageElement
|| element instanceof TclSourcesFragment) {
return null;
}
return getScriptFolderIcon();
}
return null;
}
/**
* @return
*/
private Image getScriptFolderIcon() {
return getImageFor(TclImages.DESC_OBJS_FOLDER);
// return PlatformUI.getWorkbench().getSharedImages().getImage(
// ISharedImages.IMG_OBJ_FOLDER);
}
private Image getImageFor(ImageDescriptor descriptor) {
Image image = registry.get(descriptor);
if (image == null) {
image = descriptor.createImage();
registry.put(descriptor, image);
}
return image;
}
private Map<ImageDescriptor, Image> registry = new HashMap<>();
}