/**
* Copyright 2010 The University of North Carolina at Chapel Hill
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package unc.lib.cdr.workbench.capture;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.model.WorkbenchLabelProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import unc.lib.cdr.workbench.originals.OriginalStub;
import unc.lib.cdr.workbench.views.LabelImageFactory;
import unc.lib.cdr.workbench.views.LabelImageFactory.Icon;
/**
* @author Gregory Jansen
*
*/
public class OriginalsLabelProvider implements ILabelProvider/* , IDelayedLabelDecorator */{
private static final Logger LOG = LoggerFactory.getLogger(OriginalsLabelProvider.class);
private DecoratingLabelProvider provider = (DecoratingLabelProvider) WorkbenchLabelProvider
.getDecoratingWorkbenchLabelProvider();
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse. jface.viewers.ILabelProviderListener)
*/
@Override
public void addListener(ILabelProviderListener listener) {
this.provider.addListener(listener);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
@Override
public void dispose() {
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang .Object, java.lang.String)
*/
@Override
public boolean isLabelProperty(Object element, String property) {
return this.provider.isLabelProperty(element, property);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse
* .jface.viewers.ILabelProviderListener)
*/
@Override
public void removeListener(ILabelProviderListener listener) {
this.provider.removeListener(listener);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ILabelDecorator#decorateImage(org.eclipse.swt .graphics.Image, java.lang.Object)
*/
// @Override
// public Image decorateImage(Image image, Object element) {
// return decorator.decorateImage(image, element);
// }
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ILabelDecorator#decorateText(java.lang.String, java.lang.Object)
*/
// @Override
// public String decorateText(String text, Object element) {
// return decorator.decorateText(text, element);
// }
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IDelayedLabelDecorator#prepareDecoration(java .lang.Object, java.lang.String)
*/
// @Override
// public boolean prepareDecoration(Object element, String originalText) {
// return decorator.prepareDecoration(element, originalText);
// }
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
*/
@Override
public Image getImage(Object element) {
if(element instanceof IFileStore) {
IFileStore fs = (IFileStore)element;
String filename = fs.getName();
int i = filename.lastIndexOf('.');
if(i >= 0) {
return LabelImageFactory.getImageForExtension(filename.substring(i));
} else {
if(fs.fetchInfo().isDirectory()) {
return LabelImageFactory.getImage(Icon.Folder);
} else {
return LabelImageFactory.getImage(Icon.File);
}
}
} else if(element instanceof OriginalStub) {
// distinctive disk type images
OriginalStub stub = (OriginalStub)element;
return LabelImageFactory.getDiskImage(stub.getVolumeType());
}
return provider.getImage(element);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
*/
@Override
public String getText(Object element) {
if(element instanceof OriginalStub) {
OriginalStub o = (OriginalStub)element;
return o.getName();
} else if(element instanceof IFileStore) {
IFileStore fs = (IFileStore)element;
String name = fs.getName();
//System.out.println("got name: |"+name+"|");
if(name == null || name.trim().length() == 0) {
return "(disc root)";
} else {
return name;
}
}
return provider.getText(element);
}
}