package hudson.plugins.mibsr;
import hudson.util.ChartUtil;
import hudson.util.ShiftedCategoryAxis;
import hudson.util.StackedAreaRenderer2;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.LegendTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.ui.RectangleEdge;
import org.jfree.ui.RectangleInsets;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import java.awt.*;
import java.io.IOException;
/**
* TODO javadoc.
*
* @author Stephen Connolly
* @since 09-Jan-2008 21:30:15
*/
public class GraphHelper
{
/**
* Do not instantiate GraphHelper.
*/
private GraphHelper()
{
}
/**
* Getter for property 'graphUnsupported'.
*
* @return Value for property 'graphUnsupported'.
*/
public static boolean isGraphUnsupported()
{
return ChartUtil.awtProblemCause != null;
}
public static void redirectWhenGraphUnsupported( StaplerResponse rsp, StaplerRequest req )
throws IOException
{
// not available. send out error message
rsp.sendRedirect2( req.getContextPath() + "/images/headless.png" );
}
public static JFreeChart buildChart( CategoryDataset dataset, String yAxisLabel )
{
final JFreeChart chart = ChartFactory.createLineChart( null, // chart title
null, // unused
yAxisLabel, // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips
false // urls
);
// NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
final LegendTitle legend = chart.getLegend();
legend.setPosition( RectangleEdge.RIGHT );
chart.setBackgroundPaint( Color.white );
final CategoryPlot plot = chart.getCategoryPlot();
// plot.setAxisOffset(new Spacer(Spacer.ABSOLUTE, 5.0, 5.0, 5.0, 5.0));
plot.setBackgroundPaint( Color.WHITE );
plot.setOutlinePaint( null );
plot.setRangeGridlinesVisible( true );
plot.setRangeGridlinePaint( Color.black );
CategoryAxis domainAxis = new ShiftedCategoryAxis( null );
plot.setDomainAxis( domainAxis );
domainAxis.setCategoryLabelPositions( CategoryLabelPositions.UP_90 );
domainAxis.setLowerMargin( 0.0 );
domainAxis.setUpperMargin( 0.0 );
domainAxis.setCategoryMargin( 0.0 );
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits( NumberAxis.createIntegerTickUnits() );
// rangeAxis.setUpperBound(100);
// rangeAxis.setLowerBound(0);
plot.setRenderer( new StackedAreaRenderer2() );
//// final LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
//// renderer.setStroke(new BasicStroke(2.0f));
// ColorPalette.apply(renderer);
// crop extra space around the graph
plot.setInsets( new RectangleInsets( 5.0, 0, 0, 5.0 ) );
return chart;
}
}