/*******************************************************************************
* Copyright 2005-2007, CHISEL Group, University of Victoria, Victoria, BC, Canada
* and IBM Corporation. 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:
* The Chisel Group, University of Victoria
*******************************************************************************/
package net.sourceforge.tagsea.resources.sharing.ui;
import net.sourceforge.tagsea.resources.sharing.ui.ResourceWaypointTree.TreeNode;
import net.sourceforge.tagsea.resources.waypoints.IResourceWaypointDescriptor;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.model.WorkbenchLabelProvider;
/**
* Label provider for ResourceWaypointTrees.
* @author Del Myers
*
*/
public class ResourceWaypointTreeLabelProvider implements ILabelProvider {
WorkbenchLabelProvider labelProvider;
public ResourceWaypointTreeLabelProvider() {
labelProvider = new WorkbenchLabelProvider();
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
*/
public Image getImage(Object element) {
if (element instanceof IResourceWaypointDescriptor)
{
IResourceWaypointDescriptor waypoint = (IResourceWaypointDescriptor) element;
IResource resource = getResource(waypoint.getResource());
if (resource != null) {
Image providerImage = labelProvider.getImage(resource);
if (providerImage != null) {
return providerImage;
}
}
return PlatformUI.
getWorkbench().
getSharedImages().
getImage(org.eclipse.ui.ISharedImages.IMG_OBJ_FILE);
} else if (element instanceof TreeNode) {
TreeNode node = (TreeNode) element;
IResource resource = getResource(node.getName());
if (resource != null) {
return labelProvider.getImage(resource);
} else {
Path path = new Path(node.getName());
if (path.segmentCount() > 1) {
return PlatformUI.
getWorkbench().
getSharedImages().
getImage(org.eclipse.ui.ISharedImages.IMG_OBJ_FILE);
} else {
return PlatformUI.getWorkbench().getSharedImages().getImage(IDE.SharedImages.IMG_OBJ_PROJECT);
}
}
}
return null;
}
/**
* @param resource
* @return
*/
private IResource getResource(String resource) {
return ResourcesPlugin.getWorkspace().getRoot().findMember(new Path(resource));
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
*/
public String getText(Object element) {
if (element instanceof TreeNode) {
Path p = new Path(((TreeNode)element).getName());
if (p.segmentCount() > 1) {
return p.removeFirstSegments(1).toPortableString();
} else {
return p.toPortableString();
}
} else if (element instanceof IResourceWaypointDescriptor) {
return ((IResourceWaypointDescriptor)element).getText();
}
return "";
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
public void addListener(ILabelProviderListener listener) {
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
public void dispose() {
labelProvider.dispose();
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
*/
public boolean isLabelProperty(Object element, String property) {
return true;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
public void removeListener(ILabelProviderListener listener) {
}
}