package org.jboss.seam.pdf.ui; import javax.faces.context.FacesContext; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.plot.Plot; import org.jfree.data.general.Dataset; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.util.Rotation; public class UIPieChart extends UIChart { private String label; private Double labelLinkMargin; private String labelLinkPaint; private String labelLinkStroke; private Boolean labelLinksVisible; private String labelOutlinePaint; private String labelOutlineStroke; private String labelShadowPaint; private String labelPaint; private Double labelGap; private String labelBackgroundPaint; private Double startAngle; private Boolean circular; private String direction; private String sectionOutlinePaint; private String sectionOutlineStroke; private Boolean sectionOutlinesVisible; private String baseSectionOutlinePaint; private String baseSectionPaint; private String baseSectionOutlineStroke; public void setLabel(String label) { this.label = label; } public String getLabel() { return (String) valueBinding("label", label); } public String getBaseSectionOutlinePaint() { return (String) valueBinding("baseSectionOutlinePaint", baseSectionOutlinePaint); } public void setBaseSectionOutlinePaint(String baseSectionOutlinePaint) { this.baseSectionOutlinePaint = baseSectionOutlinePaint; } public String getBaseSectionOutlineStroke() { return (String) valueBinding("baseSectionOutlineStroke", baseSectionOutlineStroke); } public void setBaseSectionOutlineStroke(String baseSectionOutlineStroke) { this.baseSectionOutlineStroke = baseSectionOutlineStroke; } public String getBaseSectionPaint() { return (String) valueBinding("baseSectionPaint", baseSectionPaint); } public void setBaseSectionPaint(String baseSectionPaint) { this.baseSectionPaint = baseSectionPaint; } public Boolean getCircular() { return (Boolean) valueBinding("isCircular", circular); } public void setCircular(Boolean circular) { this.circular = circular; } public String getLabelBackgroundPaint() { return (String) valueBinding("labelBackgroundPaint", labelBackgroundPaint); } public void setLabelBackgroundPaint(String labelBackgroundPaint) { this.labelBackgroundPaint = labelBackgroundPaint; } public Double getLabelGap() { return (Double) valueBinding("labelGap", labelGap); } public void setLabelGap(Double labelGap) { this.labelGap = labelGap; } public Double getLabelLinkMargin() { return (Double) valueBinding("labelLinkMargin", labelLinkMargin); } public void setLabelLinkMargin(double labelLinkMargin) { this.labelLinkMargin = labelLinkMargin; } public String getLabelLinkPaint() { return (String) valueBinding("labelLinkPaint", labelLinkPaint); } public void setLabelLinkPaint(String labelLinkPaint) { this.labelLinkPaint = labelLinkPaint; } public String getLabelLinkStroke() { return (String) valueBinding("labelLinkStroke", labelLinkStroke); } public void setLabelLinkStroke(String labelLinkStroke) { this.labelLinkStroke = labelLinkStroke; } public Boolean isLabelLinksVisible() { return (Boolean) valueBinding("labelLinksVisible", labelLinksVisible); } public void setLabelLinksVisible(Boolean labelLinksVisible) { this.labelLinksVisible = labelLinksVisible; } public String getLabelOutlinePaint() { return (String) valueBinding("labelOutlinePaint", labelOutlinePaint); } public void setLabelOutlinePaint(String labelOutlinePaint) { this.labelOutlinePaint = labelOutlinePaint; } public String getLabelOutlineStroke() { return (String) valueBinding("labelOutlineStroke", labelOutlineStroke); } public void setLabelOutlineStroke(String labelOutlineStroke) { this.labelOutlineStroke = labelOutlineStroke; } public String getLabelPaint() { return (String) valueBinding("labelPaint", labelPaint); } public void setLabelPaint(String labelPaint) { this.labelPaint = labelPaint; } public String getLabelShadowPaint() { return (String) valueBinding("labelShadowPaint", labelShadowPaint); } public void setLabelShadowPaint(String labelShadowPaint) { this.labelShadowPaint = labelShadowPaint; } public String getDirection() { return (String) valueBinding("rotation", direction); } public void setDirection(String rotation) { this.direction = rotation; } public String getSectionOutlinePaint() { return (String) valueBinding("sectionOutlinePaint", sectionOutlinePaint); } public void setSectionOutlinePaint(String sectionOutlinePaint) { this.sectionOutlinePaint = sectionOutlinePaint; } public String getSectionOutlineStroke() { return (String) valueBinding("sectionOutlineStroke", sectionOutlineStroke); } public void setSectionOutlineStroke(String sectionOutlineStroke) { this.sectionOutlineStroke = sectionOutlineStroke; } public Boolean isSectionOutlinesVisible() { return (Boolean) valueBinding("sectionOutlineVisible", sectionOutlinesVisible); } public void setSectionOutlinesVisible(Boolean sectionOutlinesVisible) { this.sectionOutlinesVisible = sectionOutlinesVisible; } public Double getStartAngle() { return (Double) valueBinding("startAngle", startAngle); } public void setStartAngle(Double startAngle) { this.startAngle = startAngle; } @Override public void restoreState(FacesContext context, Object state) { Object[] values = (Object[]) state; super.restoreState(context, values[0]); // title = (String) values[1]; label = (String) values[2]; //legend = (Boolean) values[3]; //is3D = (Boolean) values[4]; labelLinkMargin = (Double) values[5]; labelLinkPaint = (String) values[6]; labelLinkStroke = (String) values[7]; labelLinksVisible = (Boolean) values[8]; labelOutlinePaint = (String) values[9]; labelOutlineStroke = (String) values[10]; labelShadowPaint = (String) values[11]; labelPaint = (String) values[12]; labelGap = (Double) values[13]; labelBackgroundPaint = (String) values[14]; startAngle = (Double) values[15]; circular = (Boolean) values[16]; direction = (String) values[17]; sectionOutlinePaint = (String) values[18]; sectionOutlineStroke = (String) values[19]; sectionOutlinesVisible = (Boolean) values[20]; baseSectionOutlinePaint = (String) values[21]; baseSectionPaint = (String) values[22]; baseSectionOutlineStroke = (String) values[23]; } @Override public Object saveState(FacesContext context) { Object[] values = new Object[24]; values[0] = super.saveState(context); // values[1] = title; values[2] = label; //values[3] = legend; //values[4] = is3D; values[5] = labelLinkMargin; values[6] = labelLinkPaint; values[7] = labelLinkStroke; values[8] = labelLinksVisible; values[9] = labelOutlinePaint; values[10] = labelOutlineStroke; values[11] = labelShadowPaint; values[12] = labelPaint; values[13] = labelGap; values[14] = labelBackgroundPaint; values[15] = startAngle; values[16] = circular; values[17] = direction; values[18] = sectionOutlinePaint; values[19] = sectionOutlineStroke; values[20] = sectionOutlinesVisible; values[21] = baseSectionOutlinePaint; values[22] = baseSectionPaint; values[23] = baseSectionOutlineStroke; return values; } @Override public Dataset createDataset() { return new DefaultPieDataset(); } public Rotation rotationValue(String value) { if (value == null || value.equalsIgnoreCase("anticlockwise")) { return Rotation.ANTICLOCKWISE; } else { return Rotation.CLOCKWISE; } } @Override public void configurePlot(Plot plot) { super.configurePlot(plot); if (plot instanceof PiePlot) { PiePlot pieplot = (PiePlot) plot; if (label != null) { pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(label)); } if (baseSectionOutlinePaint != null) { pieplot.setBaseSectionOutlinePaint(findColor(baseSectionOutlinePaint)); } if (baseSectionOutlineStroke != null) { pieplot.setBaseSectionOutlineStroke(findStroke(baseSectionOutlineStroke)); } if (baseSectionPaint != null) { pieplot.setBaseSectionPaint(findColor(baseSectionPaint)); } if (circular != null) { pieplot.setCircular(circular); } if (startAngle != null) { pieplot.setStartAngle(startAngle); } if (direction != null) { pieplot.setDirection(rotationValue(direction)); } if (sectionOutlinePaint != null) { pieplot .setBaseSectionOutlinePaint(findColor(sectionOutlinePaint)); } if (sectionOutlineStroke != null) { pieplot .setBaseSectionOutlineStroke(findStroke(sectionOutlineStroke)); } if (sectionOutlinesVisible != null) { pieplot.setSectionOutlinesVisible(sectionOutlinesVisible); } // pieplot.setLabelFont(arg0); if (labelBackgroundPaint != null) { pieplot.setLabelBackgroundPaint(findColor(labelBackgroundPaint)); } if (labelGap != null) { pieplot.setLabelGap(labelGap); } if (labelLinkMargin != null) { pieplot.setLabelLinkMargin(labelLinkMargin); } if (labelLinkPaint != null) { pieplot.setLabelLinkPaint(findColor(labelLinkPaint)); } if (labelLinkStroke != null) { pieplot.setLabelLinkStroke(findStroke(labelLinkStroke)); } if (labelLinksVisible != null) { pieplot.setLabelLinksVisible(labelLinksVisible); } if (labelOutlinePaint != null) { pieplot.setLabelOutlinePaint(findColor(labelOutlinePaint)); } if (labelOutlineStroke != null) { pieplot.setLabelOutlineStroke(findStroke(labelOutlineStroke)); } if (labelPaint != null) { pieplot.setLabelPaint(findColor(labelPaint)); } if (labelShadowPaint != null) { pieplot.setLabelShadowPaint(findColor(labelShadowPaint)); } } } @Override public JFreeChart createChart(FacesContext context) { if (!getIs3D()) { return ChartFactory.createPieChart(getTitle(), (PieDataset) dataset, getLegend(), false, false); } else { return ChartFactory.createPieChart3D(getTitle(), (PieDataset) dataset, getLegend(), false, false); } } }