/*******************************************************************************
* Copyright (c) 2017 Rogue Wave Software 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:
* Rogue Wave Software Inc. - initial implementation
*******************************************************************************/
package org.eclipse.php.internal.debug.ui.views.coverage;
import java.text.MessageFormat;
import org.eclipse.core.resources.IFile;
import org.eclipse.dltk.core.ISourceModule;
import org.eclipse.dltk.ui.viewsupport.AppearanceAwareLabelProvider;
import org.eclipse.jface.resource.JFaceColors;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableFontProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.php.internal.ui.PHPUiPlugin;
import org.eclipse.php.internal.ui.util.PHPPluginImages;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
/**
* Code coverage label provider.
*/
public class CodeCoverageLabelProvider extends AppearanceAwareLabelProvider
implements ITableLabelProvider, ITableColorProvider, ITableFontProvider {
private CodeCoverageContentProvider cProvider;
public CodeCoverageLabelProvider(CodeCoverageContentProvider cProvider) {
super(PHPUiPlugin.getDefault().getPreferenceStore());
this.cProvider = cProvider;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang
* .Object, int)
*/
public Image getColumnImage(Object element, final int columnIndex) {
switch (columnIndex) {
case 0:
if (element instanceof String) {
return PHPUiPlugin.getImageDescriptorRegistry().get(PHPPluginImages.DESC_OBJS_CUNIT);
}
return super.getImage(element);
}
return null;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang
* .Object, int)
*/
public String getColumnText(Object element, final int columnIndex) {
CodeCoverageResult coverageResult = cProvider.getCodeCoverageResult(element);
switch (columnIndex) {
case 0:
if (element instanceof String) {
return (String) element;
}
StringBuffer text = new StringBuffer(super.getText(element));
if (coverageResult.getFiles() > 1 || cProvider.hasChildren(element)) {
text.append(MessageFormat.format(" ({0})", new Object[] { String.valueOf(coverageResult.getFiles()) })); //$NON-NLS-1$
}
return text.toString();
case 1:
float percentage = coverageResult.getPercentage();
if (Float.isNaN(percentage)) {
return null;
}
return MessageFormat.format("{0,number,percent} ({1}/{2}/{3})", new Object[] { //$NON-NLS-1$
new Float(coverageResult.getPercentage()), String.valueOf(coverageResult.getCovered()),
String.valueOf(coverageResult.getSignificant()), String.valueOf(coverageResult.getLines()) });
}
return null;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.ITableColorProvider#getBackground(java.lang
* .Object, int)
*/
public Color getBackground(Object element, int columnIndex) {
return null;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.ITableColorProvider#getForeground(java.lang
* .Object, int)
*/
public Color getForeground(Object element, int columnIndex) {
if (columnIndex == 1) {
if (element instanceof ISourceModule || element instanceof IFile) {
return JFaceColors.getHyperlinkText(Display.getCurrent());
}
}
return null;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.ITableFontProvider#getFont(java.lang.Object,
* int)
*/
public Font getFont(Object element, int columnIndex) {
if (columnIndex == 1) {
if (element instanceof ISourceModule || element instanceof IFile) {
return JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT);
}
}
return JFaceResources.getFontRegistry().get(JFaceResources.DEFAULT_FONT);
}
}