package org.jboss.seam.example.pdf; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.jboss.seam.annotations.*; import org.jboss.seam.*; @Name("chart") @Scope(ScopeType.SESSION) public class DynamicChart { private static final int CHART_RANGE = 50; private List<String> categories = new ArrayList<String>(); private int nextSeries = 1; private int nextCategory = 1; Random random = new Random(); List<Data> data = new ArrayList<Data>(); boolean is3d = false; boolean legend = true; String title = "Dynamic Chart"; String domainAxisLabel = "Domain Label"; String domainAxisPaint; boolean domainGridlinesVisible = false; String domainGridlinePaint; String domainGridlineStroke; String rangeAxisLabel = "Range Label"; String rangeAxisPaint; boolean rangeGridlinesVisible = true; String rangeGridlinePaint; String rangeGridlineStroke; String orientation = "vertical"; String plotBackgroundPaint = "white"; String plotOutlinePaint = "black"; String plotOutlineStroke = "solid-thin"; String borderPaint = "black"; String borderBackgroundPaint = "white"; String borderStroke = "solid-thick"; String titlePaint; String titleBackgroundPaint; String legendBackgroundPaint; String legendItemPaint; Float plotBackgroundAlpha = .7f; Float plotForegroundAlpha = 1f; float height = 300; float width = 400; boolean borderVisible = true; public boolean getIs3d() { return is3d; } public void setIs3d(boolean is3d) { this.is3d = is3d; } public String getDomainAxisLabel() { return domainAxisLabel; } public void setDomainAxisLabel(String categoryAxisLabel) { this.domainAxisLabel = categoryAxisLabel; } public String getRangeAxisLabel() { return rangeAxisLabel; } public void setRangeAxisLabel(String valueAxisLabel) { this.rangeAxisLabel = valueAxisLabel; } public boolean isBorderVisible() { return borderVisible; } public void setBorderVisible(boolean borderVisible) { this.borderVisible = borderVisible; } public float getHeight() { return height; } public void setHeight(float height) { this.height = height; } public float getWidth() { return width; } public void setWidth(float width) { this.width = width; } public boolean isLegend() { return legend; } public void setLegend(boolean legend) { this.legend = legend; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getOrientation() { return orientation; } public void setOrientation(String orientation) { this.orientation = orientation; } public String getBorderBackgroundPaint() { return borderBackgroundPaint; } public void setBorderBackgroundPaint(String borderBackgroundPaint) { this.borderBackgroundPaint = borderBackgroundPaint; } public String getBorderPaint() { return borderPaint; } public void setBorderPaint(String borderPaint) { this.borderPaint = borderPaint; } public String getPlotBackgroundPaint() { return plotBackgroundPaint; } public void setPlotBackgroundPaint(String plotBackgroundPaint) { this.plotBackgroundPaint = plotBackgroundPaint; } public String getPlotOutlinePaint() { return plotOutlinePaint; } public void setPlotOutlinePaint(String plotOutlinePaint) { this.plotOutlinePaint = plotOutlinePaint; } public String getBorderStroke() { return borderStroke; } public void setBorderStroke(String borderStroke) { this.borderStroke = borderStroke; } public String getPlotOutlineStroke() { return plotOutlineStroke; } public void setPlotOutlineStroke(String plotOutlineStroke) { this.plotOutlineStroke = plotOutlineStroke; } public Float getPlotBackgroundAlpha() { return plotBackgroundAlpha; } public void setPlotBackgroundAlpha(Float plotBackgroundAlpha) { this.plotBackgroundAlpha = plotBackgroundAlpha; } public Float getPlotForegroundAlpha() { return plotForegroundAlpha; } public void setPlotForegroundAlpha(Float plotForegroundAlpha) { this.plotForegroundAlpha = plotForegroundAlpha; } public String getTitleBackgroundPaint() { return titleBackgroundPaint; } public void setTitleBackgroundPaint(String titleBackgroundPaint) { this.titleBackgroundPaint = titleBackgroundPaint; } public String getTitlePaint() { return titlePaint; } public void setTitlePaint(String titlePaint) { this.titlePaint = titlePaint; } public String getLegendBackgroundPaint() { return legendBackgroundPaint; } public void setLegendBackgroundPaint(String legendBackgroundPaint) { this.legendBackgroundPaint = legendBackgroundPaint; } public String getLegendItemPaint() { return legendItemPaint; } public void setLegendItemPaint(String legendItemPaint) { this.legendItemPaint = legendItemPaint; } public String getDomainAxisPaint() { return domainAxisPaint; } public void setDomainAxisPaint(String domainAxisPaint) { this.domainAxisPaint = domainAxisPaint; } public String getDomainGridlinePaint() { return domainGridlinePaint; } public void setDomainGridlinePaint(String domainGridlinePaint) { this.domainGridlinePaint = domainGridlinePaint; } public String getDomainGridlineStroke() { return domainGridlineStroke; } public void setDomainGridlineStroke(String domainGridlineStroke) { this.domainGridlineStroke = domainGridlineStroke; } public boolean isDomainGridlinesVisible() { return domainGridlinesVisible; } public void setDomainGridlinesVisible(boolean domainGridlineVisible) { this.domainGridlinesVisible = domainGridlineVisible; } public String getRangeAxisPaint() { return rangeAxisPaint; } public void setRangeAxisPaint(String rangeAxisPaint) { this.rangeAxisPaint = rangeAxisPaint; } public String getRangeGridlinePaint() { return rangeGridlinePaint; } public void setRangeGridlinePaint(String rangeGridlinePaint) { this.rangeGridlinePaint = rangeGridlinePaint; } public String getRangeGridlineStroke() { return rangeGridlineStroke; } public void setRangeGridlineStroke(String rangeGridlineStroke) { this.rangeGridlineStroke = rangeGridlineStroke; } public boolean isRangeGridlinesVisible() { return rangeGridlinesVisible; } public void setRangeGridlinesVisible(boolean rangeGridlineVisible) { this.rangeGridlinesVisible = rangeGridlineVisible; } @Create public void initData() { newCategory(); newCategory(); newCategory(); newSeries(); newSeries(); } public List<Data> getData() { return data; } public List<String> getCategories() { return categories; } public void removeSeries(String id) { // System.out.println("REMOVE: " + id); } public void newSeries() { String newId = findUniqueSeriesId(); Data set = new Data(); set.setId(newId); for (String category: categories) { set.addValue(category, random.nextInt(CHART_RANGE)); } data.add(set); } public void newCategory() { String newId = findUniqueCategoryId(); categories.add(newId); for (Data set: data) { set.addValue(newId, random.nextInt(CHART_RANGE)); } } private String findUniqueSeriesId() { while (true) { String id = "Series " + nextSeries++; if (isUniqueSeriesId(id)) { return id; } } } private boolean isUniqueSeriesId(String id) { for (Data item: data) { if (item.getId().equals(id)) { return false; } } return true; } private String findUniqueCategoryId() { while (true) { String id = "Category " + nextCategory++; if (!categories.contains(id)) { return id; } } } }