DialBackground db = new DialBackground(ChartThemesConstants.TRANSPARENT_PAINT);
dialPlot.setBackground(db);
ScaledDialScale scale = null;
int dialUnitScale = 1;
Range range = convertRange(jrPlot.getDataRange());
if(range != null)
{
double bound = Math.max(Math.abs(range.getUpperBound()), Math.abs(range.getLowerBound()));
dialUnitScale = ChartThemesUtilities.getScale(bound);
double lowerBound = ChartThemesUtilities.getTruncatedValue(range.getLowerBound(), dialUnitScale);
double upperBound = ChartThemesUtilities.getTruncatedValue(range.getUpperBound(), dialUnitScale);
scale =
new ScaledDialScale(
lowerBound,
upperBound,
210,
-240,
(upperBound - lowerBound)/6,
1
);
if((lowerBound == (int)lowerBound &&
upperBound == (int)upperBound &&
scale.getMajorTickIncrement() == (int)scale.getMajorTickIncrement()) ||
dialUnitScale > 1
)
{
scale.setTickLabelFormatter(new DecimalFormat("#,##0"));
}
else if(dialUnitScale == 1)
{
scale.setTickLabelFormatter(new DecimalFormat("#,##0.0"));
}
else if(dialUnitScale <= 0)
{
scale.setTickLabelFormatter(new DecimalFormat("#,##0.00"));
}
}
else
{
scale = new ScaledDialScale();
}
scale.setTickRadius(0.9);
scale.setTickLabelOffset(0.16);
JRFont tickLabelFont = jrPlot.getTickLabelFont();
Integer defaultBaseFontSize = (Integer)getDefaultValue(defaultChartPropertiesMap, ChartThemesConstants.BASEFONT_SIZE);
Font themeTickLabelFont = getFont((JRFont)getDefaultValue(defaultPlotPropertiesMap, ChartThemesConstants.PLOT_TICK_LABEL_FONT), tickLabelFont, defaultBaseFontSize);
scale.setTickLabelFont(themeTickLabelFont);
scale.setMajorTickStroke(new BasicStroke(1f));
scale.setMinorTickStroke(new BasicStroke(0.7f));
scale.setMajorTickPaint(Color.BLACK);
scale.setMinorTickPaint(Color.BLACK);
scale.setTickLabelsVisible(true);
scale.setFirstTickLabelVisible(true);
dialPlot.addScale(0, scale);
List intervals = jrPlot.getIntervals();
if (intervals != null && intervals.size() > 0)
{
int size = Math.min(3, intervals.size());
int colorStep = 0;
if(size > 3)
colorStep = 255 / (size - 3);
for(int i = 0; i < size; i++)
{
JRMeterInterval interval = (JRMeterInterval)intervals.get(i);
Range intervalRange = convertRange(interval.getDataRange());
double intervalLowerBound = ChartThemesUtilities.getTruncatedValue(intervalRange.getLowerBound(), dialUnitScale);
double intervalUpperBound = ChartThemesUtilities.getTruncatedValue(intervalRange.getUpperBound(), dialUnitScale);
Color color = i < 3
? (Color)ChartThemesConstants.AEGEAN_INTERVAL_COLORS.get(i)
: new Color(255 - colorStep * (i - 3), 0 + colorStep * (i - 3), 0);
ScaledDialRange dialRange =