diff -r 1612dbcec451 -r 639991d0808a java/cewolf-1.0/src/main/java/de/laures/cewolf/cpp/RotatedAxisLabels.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/cewolf-1.0/src/main/java/de/laures/cewolf/cpp/RotatedAxisLabels.java Sat Feb 28 21:31:02 2009 +0100 @@ -0,0 +1,70 @@ +package de.laures.cewolf.cpp; + +import java.util.Map; + +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.CategoryAxis; +import org.jfree.chart.axis.CategoryLabelPositions; +import org.jfree.chart.plot.CategoryPlot; +import org.jfree.data.category.CategoryDataset; + +import de.laures.cewolf.ChartPostProcessor; + +/** +* A cewolf post-processor for rotating and/or removing the labels on the X-Axis +* parameters: +* rotate_at: make the labels vertical +* skip_at: print only some of the labels (so they don't overlap) +* remove_at: don't print any labels +* +* Usage: +* +* +* +* +* +* +* +* @author Rich Unger +*/ + +public class RotatedAxisLabels implements ChartPostProcessor { + +public void processChart(Object chart, Map params) { + CategoryPlot plot = (CategoryPlot) ((JFreeChart) chart).getPlot(); + + CategoryAxis axis = plot.getDomainAxis(); + + Number rotateThreshold = (Number) params.get("rotate_at"); + Number skipThreshold = (Number) params.get("skip_at"); + Number removeThreshold = (Number) params.get("remove_at"); + + CategoryDataset dataset = plot.getDataset(); + int iCategoryCount = dataset.getRowCount(); + + if (rotateThreshold != null) + { + if (iCategoryCount >= rotateThreshold.intValue()) + { + axis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); + } + else + { + axis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD); + } + + } + + if (skipThreshold != null) + { + //this method does nothing in jfreechart .9.18 + //axis.setSkipCategoryLabelsToFit(iCategoryCount >= skipThreshold.intValue()); + } + + if (removeThreshold != null) + { + axis.setTickLabelsVisible(iCategoryCount < removeThreshold.intValue()); + } + } + +}