/*******************************************************************************
* Copyright (c) 2011 Wind River Systems, Inc. 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:
* Wind River Systems - initial API and implementation
* William Chen (Wind River)- [345552] Edit the remote files with a proper editor
*******************************************************************************/
package org.eclipse.tm.te.tcf.filesystem.controls;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelDecorator;
import org.eclipse.swt.graphics.Image;
/**
* A subclass of DecoratingLabelProvider provides an FS Tree Viewer
* with a label provider which combines a nested label provider and an optional
* decorator. The decorator decorates the label text, image
* provided by the nested label provider.
*
*/
public class FSTreeDecoratingLabelProvider extends DecoratingLabelProvider implements ITableLabelProvider {
//The label provider for the execution context viewer.
private FSTreeLabelProvider fProvider;
//The label decorator decorating the above label provider.
private ILabelDecorator fDecorator;
/**
* Create a FSTreeDecoratingLabelProvider with an FSTreeLabelProvider and a decorator.
*
* @param provider The label provider to be decorated.
* @param decorator The label decorator.
*/
public FSTreeDecoratingLabelProvider(FSTreeLabelProvider provider, ILabelDecorator decorator) {
super(provider, decorator);
fProvider = provider;
fDecorator = decorator;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
*/
@Override
public Image getColumnImage(Object element, int columnIndex) {
Image image = fProvider.getColumnImage(element, columnIndex);
if (columnIndex == 0 && fDecorator != null) {
if (fDecorator instanceof LabelDecorator) {
LabelDecorator ld2 = (LabelDecorator) fDecorator;
Image decorated = ld2.decorateImage(image, element, getDecorationContext());
if (decorated != null) {
return decorated;
}
} else {
Image decorated = fDecorator.decorateImage(image, element);
if (decorated != null) {
return decorated;
}
}
}
return image;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
*/
@Override
public String getColumnText(Object element, int columnIndex) {
String text = fProvider.getColumnText(element, columnIndex);
if (columnIndex == 0 && fDecorator != null) {
if (fDecorator instanceof LabelDecorator) {
LabelDecorator ld2 = (LabelDecorator) fDecorator;
String decorated = ld2.decorateText(text, element, getDecorationContext());
if (decorated != null) {
return decorated;
}
} else {
String decorated = fDecorator.decorateText(text, element);
if (decorated != null) {
return decorated;
}
}
}
return text;
}
}