/** * Hudson Serenitec plugin * * @author Georges Bossert <gbossert@gmail.com> * @version $Revision: 1.3 $ * @since $Date: 2008/07/16 16:01:24 ${date} * @copyright Universit� de Rennes 1 */ package hudson.plugins.serenitec.util; import hudson.util.StackedAreaRenderer2; import hudson.util.ChartUtil.NumberOnlyBuildLabel; import org.jfree.data.category.CategoryDataset; /** * Renderer that provides direct access to the individual results of a build via * links. The renderer also displays tooltips for each selected build. * <ul> * <li>The tooltip is computed per column (i.e., per build) and row (i.e., priority) and shows the * number of annotations of the selected priority for this build.</li> * <li>The link is also computed per column and links to the results for this * build.</li> * </ul> * * @author Ulli Hafner */ // TODO: the link should be aware of the priorities and filter the selected priority public class PrioritiesAreaRenderer extends StackedAreaRenderer2 { /** Unique identifier of this class. */ private static final long serialVersionUID = -4683951507836348304L; private final String url; /** Tooltip provider for the clickable map. */ private final ToolTipBuilder toolTipBuilder; /** * Creates a new instance of <code>PrioritiesAreaRenderer</code>. * * @param url * base URL of the graph links * @param toolTipProvider * tooltip provider for the clickable map */ public PrioritiesAreaRenderer(final String url, final ToolTipProvider toolTipProvider) { super(); toolTipBuilder = new ToolTipBuilder(toolTipProvider); this.url = "/" + url + "/"; } @Override public final String generateURL(final CategoryDataset dataset, final int row, final int column) { return getLabel(dataset, column).build.getNumber() + url; } /** * Gets the tool tip builder. * * @return the tool tip builder */ public final ToolTipBuilder getToolTipBuilder() { return toolTipBuilder; } /** * Returns the Hudson build label at the specified column. * * @param dataset * data set of values * @param column * the column * @return the label of the column */ private NumberOnlyBuildLabel getLabel(final CategoryDataset dataset, final int column) { return ( NumberOnlyBuildLabel ) dataset.getColumnKey(column); } /** {@inheritDoc} */ @Override public String generateToolTip(final CategoryDataset dataset, final int row, final int column) { StringBuilder tooltip = new StringBuilder(); tooltip.append(getToolTipBuilder().getTooltip(dataset.getValue(row, column).intValue())); tooltip.append(" "); switch(row) { case 1: tooltip.append("Formating"); break; case 2: tooltip.append("Performance"); break; case 3: tooltip.append("Design"); break; case 4: tooltip.append("Low security"); break; default: tooltip.append("High Security"); break; } return tooltip.toString(); } }