package org.jboss.seam.pdf.ui; import javax.faces.context.FacesContext; import org.jboss.seam.log.*; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.block.BlockBorder; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.Plot; import org.jfree.chart.renderer.category.CategoryItemRenderer; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; public abstract class UICategoryChartBase extends UIChart { private static Log log = Logging.getLog(UICategoryChartBase.class); private String orientation; private String titleBackgroundPaint; private String titlePaint; private String legendBackgroundPaint; private String legendItemPaint; private String legendOutlinePaint; private String domainAxisLabel; private String domainLabelPosition; private String domainAxisPaint; private Boolean domainGridlinesVisible; private String domainGridlinePaint; private String domainGridlineStroke; private String rangeAxisLabel; private String rangeAxisPaint; private Boolean rangeGridlinesVisible; private String rangeGridlinePaint; private String rangeGridlineStroke; public String getDomainAxisLabel() { return (String) valueBinding("domainAxisLabel", domainAxisLabel); } public void setDomainAxisLabel(String categoryAxisLabel) { this.domainAxisLabel = categoryAxisLabel; } public String getRangeAxisLabel() { return (String) valueBinding("rangeAxisLabel", rangeAxisLabel); } public void setRangeAxisLabel(String valueAxisLabel) { this.rangeAxisLabel = valueAxisLabel; } public String getDomainLabelPosition() { return (String) valueBinding("domainLabelPosition", domainLabelPosition); } public void setDomainLabelPosition(String domainLabelPosition) { this.domainLabelPosition = domainLabelPosition; } public void setOrientation(String orientation) { this.orientation = orientation; } public String getOrientation() { return (String) valueBinding("orientation", orientation); } public void setTitleBackgroundPaint(String titleBackgroundPaint) { this.titleBackgroundPaint = titleBackgroundPaint; } public String getTitleBackgroundPaint() { return (String) valueBinding("titleBackgroundPaint", titleBackgroundPaint); } public void setTitlePaint(String titlePaint) { this.titlePaint = titlePaint; } public String getTitlePaint() { return (String) valueBinding("titlePaint", titlePaint); } public String getLegendBackgroundPaint() { return (String) valueBinding("legendBackgroundPaint", legendBackgroundPaint); } public void setLegendBackgroundPaint(String legendBackgroundPaint) { this.legendBackgroundPaint = legendBackgroundPaint; } public String getLegendItemPaint() { return (String) valueBinding("legendItemPaint", legendItemPaint); } public void setLegendItemPaint(String legendItemPaint) { this.legendItemPaint = legendItemPaint; } public String getLegendOutlinePaint() { return (String) valueBinding("legendOutlinePaint", legendOutlinePaint); } public void setLegendOutlinePaint(String legendOutlinePaint) { this.legendOutlinePaint = legendOutlinePaint; } public String getDomainGridlinePaint() { return (String) valueBinding("domainGridlinePaint", domainGridlinePaint); } public void setDomainGridlinePaint(String domainGridlinePaint) { this.domainGridlinePaint = domainGridlinePaint; } public String getDomainGridlineStroke() { return (String) valueBinding("domainGridlineStroke", domainGridlineStroke); } public void setDomainGridlineStroke(String domainGridlineStroke) { this.domainGridlineStroke = domainGridlineStroke; } public Boolean getDomainGridlinesVisible() { return (Boolean) valueBinding("domainGridlinesVisible", domainGridlinesVisible); } public void setDomainGridlinesVisible(Boolean domainGridlinesVisible) { this.domainGridlinesVisible = domainGridlinesVisible; } public String getRangeGridlinePaint() { return (String) valueBinding("rangeGridlinePaint", rangeGridlinePaint); } public void setRangeGridlinePaint(String rangeGridlinePaint) { this.rangeGridlinePaint = rangeGridlinePaint; } public String getRangeGridlineStroke() { return (String) valueBinding("rangeGridlineStroke", rangeGridlineStroke); } public void setRangeGridlineStroke(String rangeGridlineStroke) { this.rangeGridlineStroke = rangeGridlineStroke; } public Boolean getRangeGridlinesVisible() { return (Boolean) valueBinding("rangeGridlinesVisible", rangeGridlinesVisible); } public void setRangeGridlinesVisible(Boolean rangeGridlinesVisible) { this.rangeGridlinesVisible = rangeGridlinesVisible; } public String getDomainAxisPaint() { return (String) valueBinding("domainAxisPaint", domainAxisPaint); } public void setDomainAxisPaint(String domainAxisPaint) { this.domainAxisPaint = domainAxisPaint; } public String getRangeAxisPaint() { return (String) valueBinding("rangeAxisPaint", rangeAxisPaint); } public void setRangeAxisPaint(String rangeAxisPaint) { this.rangeAxisPaint = rangeAxisPaint; } @Override public void restoreState(FacesContext context, Object state) { Object[] values = (Object[]) state; super.restoreState(context, values[0]); orientation = (String) values[1]; //legend = (Boolean) values[2]; //is3D = (Boolean) values[3]; titleBackgroundPaint = (String) values[5]; titlePaint = (String) values[6]; legendBackgroundPaint = (String) values[7]; legendItemPaint = (String) values[8]; legendOutlinePaint = (String) values[9]; domainAxisLabel = (String) values[10]; domainAxisPaint = (String) values[11]; domainGridlinesVisible = (Boolean) values[12]; domainGridlinePaint = (String) values[13]; domainGridlineStroke = (String) values[14]; rangeAxisLabel = (String) values[15]; rangeAxisPaint = (String) values[16]; rangeGridlinesVisible = (Boolean) values[17]; rangeGridlinePaint = (String) values[18]; rangeGridlineStroke = (String) values[19]; domainLabelPosition = (String) values[20]; } @Override public Object saveState(FacesContext context) { Object[] values = new Object[21]; values[0] = super.saveState(context); values[1] = orientation; //values[2] = legend; //values[3] = is3D; //values[4] = title; values[5] = titleBackgroundPaint; values[6] = titlePaint; values[7] = legendBackgroundPaint; values[8] = legendItemPaint; values[9] = legendOutlinePaint; values[10] = domainAxisLabel; values[11] = domainAxisPaint; values[12] = domainGridlinesVisible; values[13] = domainGridlinePaint; values[14] = domainGridlineStroke; values[15] = rangeAxisLabel; values[16] = rangeAxisPaint; values[17] = rangeGridlinesVisible; values[18] = rangeGridlinePaint; values[19] = rangeGridlineStroke; values[20] = domainLabelPosition; return values; } @Override public void configurePlot(Plot plot) { super.configurePlot(plot); if (plot instanceof CategoryPlot) { configurePlot((CategoryPlot) plot); } else { log.error("UICATEGORYCHART --- unknown plot " + plot); } } public void configurePlot(CategoryPlot plot) { // plot.setAxisOffset(RectangleInsets) // plot.setDomainAxisLocation(arg0); // plot.setRangeAxisLocation(arg0); if (getDomainGridlinesVisible() != null) { plot.setDomainGridlinesVisible(getDomainGridlinesVisible()); } if (findColor(getDomainGridlinePaint()) != null) { plot.setDomainGridlinePaint(findColor(getDomainGridlinePaint())); } if (findStroke(getDomainGridlineStroke()) != null) { plot.setDomainGridlineStroke(findStroke(getDomainGridlineStroke())); } if (findColor(getDomainAxisPaint()) != null) { plot.getDomainAxis().setLabelPaint(findColor(getDomainAxisPaint())); } if (getRangeGridlinesVisible() != null) { plot.setRangeGridlinesVisible(getRangeGridlinesVisible()); } if (findColor(getRangeGridlinePaint()) != null) { plot.setRangeGridlinePaint(findColor(getRangeGridlinePaint())); } if (findStroke(getRangeGridlineStroke()) != null) { plot.setRangeGridlineStroke(findStroke(getRangeGridlineStroke())); } if (findColor(getRangeAxisPaint()) != null) { plot.getRangeAxis().setLabelPaint(findColor(getRangeAxisPaint())); } if (getDomainLabelPosition() != null) { CategoryLabelPositions positions = categoryLabelPosition(getDomainLabelPosition()); plot.getDomainAxis().setCategoryLabelPositions(positions); } configureRenderer(plot.getRenderer()); } private CategoryLabelPositions categoryLabelPosition(String position) { if (position == null) { return CategoryLabelPositions.STANDARD; } else if (position.equals("UP_45")) { return CategoryLabelPositions.UP_45; } else if (position.equals("UP_90")) { return CategoryLabelPositions.UP_90; } else if (position.equals("DOWN_45")) { return CategoryLabelPositions.DOWN_45; } else if (position.equals("DOWN_90")) { return CategoryLabelPositions.DOWN_90; } double angle = Double.parseDouble(position); if (angle>0) { return CategoryLabelPositions.createUpRotationLabelPositions(angle); } else { return CategoryLabelPositions.createDownRotationLabelPositions(-angle); } } public void configureRenderer(CategoryItemRenderer renderer) { // renderer.setItemMargin(0.0); // renderer.setBase(arg0); // renderer.setBaseFillPaint(arg0); // renderer.setBaseItemLabelFont(arg0); // renderer.setBaseItemLabelPaint(arg0); // renderer.setBaseItemLabelsVisible(arg0); // renderer.setBaseOutlinePaint(arg0); // renderer.setBaseOutlineStroke(arg0); // renderer.setBaseSeriesVisible(arg0); // renderer.setBaseSeriesVisibleInLegend(arg0); // renderer.setBaseShape(arg0); // renderer.setBaseStroke(); // renderer.setFillPaint(arg0); // renderer.setItemLabelFont(arg0); // renderer.setItemLabelPaint(arg0); // renderer.setItemLabelsVisible(arg0); // renderer.setItemMargin(arg0); // renderer.setOutlinePaint(arg0) // renderer.setOutlineStroke(arg0) // renderer.setPaint(arg0); // renderer.setStroke(arg0); // renderer.setBaseOutlineStroke(new BasicStroke(2f, // BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 10f, // new float[] {10,3}, 0)); } public void configureTitle(TextTitle chartTitle) { if (chartTitle != null) { if (findColor(getTitleBackgroundPaint()) != null) { chartTitle.setBackgroundPaint(findColor(getTitleBackgroundPaint())); } if (findColor(getTitlePaint()) != null) { chartTitle.setPaint(findColor(getTitlePaint())); } } } void configureLegend(LegendTitle chartLegend) { if (chartLegend != null) { if (findColor(getLegendBackgroundPaint()) != null) { chartLegend.setBackgroundPaint(findColor(getLegendBackgroundPaint())); } if (findColor(getLegendOutlinePaint()) != null) { chartLegend.setFrame(new BlockBorder(findColor(getLegendOutlinePaint()))); } if (findColor(getLegendItemPaint()) != null) { chartLegend.setItemPaint(findColor(getLegendItemPaint())); } } } }