/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.workflow.view.console;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import de.rcenvironment.core.component.execution.api.ConsoleRow;
/**
* Used to get colored text.
*
* @author Doreen Seider
*/
public class DecoratedConsoleLabelProvider extends DecoratingLabelProvider implements ITableLabelProvider {
private final Color red = Display.getDefault().getSystemColor(SWT.COLOR_RED);
private final Color yellow = Display.getDefault().getSystemColor(SWT.COLOR_DARK_YELLOW);
private final Color black = Display.getDefault().getSystemColor(SWT.COLOR_BLACK);
private final Color gray = Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
private ITableLabelProvider provider;
private ILabelDecorator decorator;
public DecoratedConsoleLabelProvider(ILabelProvider provider, ILabelDecorator decorator) {
super(provider, decorator);
this.provider = (ITableLabelProvider) provider;
this.decorator = decorator;
}
@Override
public Image getColumnImage(Object element, int columnIndex) {
Image image = provider.getColumnImage(element, columnIndex);
if (decorator != null) {
Image decorated = decorator.decorateImage(image, element);
if (decorated != null) {
return decorated;
}
}
return image;
}
@Override
public String getColumnText(Object element, int columnIndex) {
String text = provider.getColumnText(element, columnIndex);
if (decorator != null) {
String decorated = decorator.decorateText(text, element);
if (decorated != null) {
return decorated;
}
}
return text;
}
@Override
public Color getForeground(Object element) {
Color result = null;
if (element instanceof ConsoleRow) {
ConsoleRow consoleRow = (ConsoleRow) element;
switch (consoleRow.getType()) {
case WORKFLOW_ERROR:
case COMPONENT_ERROR:
case TOOL_ERROR:
result = red;
break;
case COMPONENT_WARN:
result = yellow;
break;
case LIFE_CYCLE_EVENT:
result = gray;
break;
default:
result = black;
break;
}
}
return result;
}
}