/*
* Copyright 2015 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.preferences;
import java.util.Arrays;
import org.eclipse.jface.resource.FontDescriptor;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.rf.ide.core.executor.RobotRuntimeEnvironment;
import org.robotframework.ide.eclipse.main.plugin.RedImages;
import org.robotframework.red.graphics.ImagesManager;
public abstract class InstalledRobotsEnvironmentsLabelProvider extends ColumnLabelProvider {
private final CheckboxTableViewer viewer;
private InstalledRobotsEnvironmentsLabelProvider(final CheckboxTableViewer viewer) {
this.viewer = viewer;
}
@Override
public Color getForeground(final Object element) {
final RobotRuntimeEnvironment env = (RobotRuntimeEnvironment) element;
if (!env.isValidPythonInstallation()) {
return viewer.getTable().getDisplay().getSystemColor(SWT.COLOR_RED);
} else if (!env.hasRobotInstalled()) {
return viewer.getTable().getDisplay().getSystemColor(SWT.COLOR_DARK_YELLOW);
}
return null;
}
@Override
public Font getFont(final Object element) {
if (Arrays.asList(viewer.getCheckedElements()).contains(element)) {
Font font = viewer.getTable().getFont();
final Font currentFont = font == null ? Display.getCurrent().getSystemFont() : font;
final FontDescriptor fontDescriptor = FontDescriptor.createFrom(currentFont).setStyle(SWT.BOLD);
font = fontDescriptor.createFont(currentFont.getDevice());
return font;
}
return super.getFont(element);
}
@Override
public String getToolTipText(final Object element) {
final RobotRuntimeEnvironment env = (RobotRuntimeEnvironment) element;
if (!env.isValidPythonInstallation()) {
return "The location " + env.getFile().getAbsolutePath() + " does not seem to be a valid python directory.";
} else if (!env.hasRobotInstalled()) {
return "The python installation " + env.getFile().getAbsolutePath()
+ " does not seem to have robot framework installed.";
}
return "Python installation in " + env.getFile().getAbsolutePath() + " has " + env.getVersion();
}
@Override
public Image getToolTipImage(final Object element) {
final RobotRuntimeEnvironment env = (RobotRuntimeEnvironment) element;
if (!env.isValidPythonInstallation()) {
return ImagesManager.getImage(RedImages.getTooltipProhibitedImage());
} else if (!env.hasRobotInstalled()) {
return ImagesManager.getImage(RedImages.getTooltipWarnImage());
}
return ImagesManager.getImage(RedImages.getTooltipImage());
}
public static class InstalledRobotsNamesLabelProvider extends InstalledRobotsEnvironmentsLabelProvider {
public InstalledRobotsNamesLabelProvider(final CheckboxTableViewer viewer) {
super(viewer);
}
@Override
public String getText(final Object element) {
final String version = ((RobotRuntimeEnvironment) element).getVersion();
return version == null ? "<unknown>" : version;
}
}
public static class InstalledRobotsPathsLabelProvider extends InstalledRobotsEnvironmentsLabelProvider {
public InstalledRobotsPathsLabelProvider(final CheckboxTableViewer viewer) {
super(viewer);
}
@Override
public String getText(final Object element) {
return ((RobotRuntimeEnvironment) element).getFile().getAbsolutePath();
}
}
}