/******************************************************************************* * Copyright © 2012, 2013 IBM Corporation 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: * IBM Corporation - initial API and implementation * *******************************************************************************/ package org.eclipse.edt.ide.eunit.ui.testresult; import java.util.ArrayList; import java.util.List; import org.eclipse.edt.ide.eunit.ui.testresult.ResultSummaryBlock.Record_ResultSummary; import org.eclipse.edt.ide.eunit.ui.testresult.ResultSummaryBlock.TestResultPkgNode; import org.eclipse.edt.ide.eunit.ui.testresult.ResultSummaryBlock.TestResultRootNode; import org.eclipse.jface.resource.FontRegistry; import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.IFontProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; public class RSTreeLabelProvider extends LabelProvider implements IColorProvider, IFontProvider { private List <Color> colors; private Color red; private Color green; private Color purple; private Color orange; private Font boldFont; public RSTreeLabelProvider(){ red = new Color(Display.getCurrent(), new RGB(255, 0, 0)); green = new Color(Display.getCurrent(), new RGB(0, 128, 0)); purple = new Color(Display.getCurrent(), new RGB(184, 0, 73)); orange = new Color(Display.getCurrent(), new RGB(255, 127, 0)); colors = new ArrayList<Color>(); colors.add(red); colors.add(green); colors.add(purple); colors.add(orange); boldFont = new FontRegistry().getBold( Display.getCurrent().getSystemFont().getFontData()[0].getName() ); } @Override public String getText(Object element) { if(element instanceof Record_ResultSummary){ Record_ResultSummary rs = (Record_ResultSummary)element; return rs.name; } if(element instanceof TestResultRootNode){ return ((TestResultRootNode)element).rootname; } if(element instanceof TestResultPkgNode) return ((TestResultPkgNode)element).pkgName; return element.toString(); } @Override public Color getBackground(Object arg0) { // TODO Auto-generated method stub return null; } @Override public Color getForeground( Object element ) { int resultCode = -1; if ( element instanceof Record_ResultSummary ) { resultCode = ((Record_ResultSummary)element).resultCode; } else if ( element instanceof TestResultPkgNode ) { resultCode = ((TestResultPkgNode)element).statisticCnts.overallResult(); } else if ( element instanceof TestResultRootNode ) { resultCode = ((TestResultRootNode)element).statisticCnts.overallResult(); } switch ( resultCode ) { case ConstantUtil.PASSED: return green; case ConstantUtil.FAILED: return red; case ConstantUtil.EXCEPTION: return purple; case ConstantUtil.NOT_RUN: return orange; default: return null; } } @Override public Font getFont( Object element ) { int resultCode = -1; if ( element instanceof Record_ResultSummary ) { resultCode = ((Record_ResultSummary)element).resultCode; } else if ( element instanceof TestResultPkgNode ) { resultCode = ((TestResultPkgNode)element).statisticCnts.overallResult(); } else if ( element instanceof TestResultRootNode ) { resultCode = ((TestResultRootNode)element).statisticCnts.overallResult(); } if ( resultCode == ConstantUtil.FAILED || resultCode == ConstantUtil.EXCEPTION ) { return boldFont; } else { return null; } } public void dispose() { super.dispose(); //dispose color resources if(colors != null && !colors.isEmpty()){ for (Color color : colors) { color.dispose(); } } colors.clear(); colors = null; } }