package org.erlide.cover.ui.views.helpers; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; import org.erlide.cover.ui.Activator; import org.erlide.cover.ui.Images; import org.erlide.cover.views.model.ICoverageObject; import org.erlide.cover.views.model.ObjectType; import org.erlide.engine.ErlangEngine; import org.erlide.engine.model.ErlModelException; import org.erlide.engine.model.root.IErlModule; import org.erlide.ui.editors.erl.outline.ErlangElementImageProvider; import org.erlide.util.ErlLogger; /** * Label provider for statistics view * * @author Aleksandra Lipiec <aleksandra.lipiec@erlang.solutions.com> * */ public class StatsViewLabelProvider extends LabelProvider implements ITableLabelProvider { @Override public Image getColumnImage(final Object element, final int columnIndex) { Image img = null; final ICoverageObject statsEl = (ICoverageObject) element; switch (columnIndex) { case 0: final ObjectType type = statsEl.getType(); switch (type) { case FUNCTION: img = Activator.getImageDescriptor(Images.FUNCTION).createImage(); break; case MODULE: IErlModule m; try { m = ErlangEngine.getInstance().getModel() .findModule(statsEl.getLabel()); } catch (final ErlModelException e) { ErlLogger.error(e); return null; } img = ErlangElementImageProvider .getErlImageDescriptor(m, ErlangElementImageProvider.SMALL_ICONS) .createImage(); break; case FOLDER: img = PlatformUI.getWorkbench().getSharedImages() .getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER).createImage(); break; case PROJECT: img = PlatformUI.getWorkbench().getSharedImages() .getImageDescriptor(IDE.SharedImages.IMG_OBJ_PROJECT) .createImage(); break; } break; case 3: img = drawPercentage(statsEl.getPercentage()); break; default: } return img; } @Override public String getColumnText(final Object element, final int columnIndex) { final ICoverageObject statsEl = (ICoverageObject) element; String text = ""; switch (columnIndex) { case 0: text = statsEl.getLabel(); break; case 1: text = Integer.toString(statsEl.getLinesCount()); break; case 2: text = Integer.toString(statsEl.getCoverCount()); break; case 3: text = String.format("%.2f ", statsEl.getPercentage()) + "%"; break; } return text; } private Image drawPercentage(final double percentage) { final Image img = new Image(Display.getCurrent(), new Rectangle(2, 3, 20, 8)); final GC graphic = new GC(img); graphic.setForeground(new Color(Display.getCurrent(), 60, 140, 10)); graphic.setBackground(new Color(Display.getCurrent(), 60, 140, 10)); graphic.drawRectangle(0, 0, 18, 6); graphic.fillRectangle(1, 1, (int) (17 * percentage / 100), 5); return img; } }