1 33 67 package com.icesoft.icefaces.samples.showcase.components.charts; 68 69 import com.icesoft.faces.component.outputchart.OutputChart; 70 import com.icesoft.faces.context.effects.Effect; 71 import com.icesoft.faces.context.effects.Highlight; 72 import com.icesoft.faces.context.effects.Pulsate; 73 import org.krysalis.jcharts.axisChart.AxisChart; 74 import org.krysalis.jcharts.chartData.AxisChartDataSet; 75 import org.krysalis.jcharts.chartData.DataSeries; 76 import org.krysalis.jcharts.properties.AxisProperties; 77 import org.krysalis.jcharts.properties.BarChartProperties; 78 import org.krysalis.jcharts.properties.ChartProperties; 79 import org.krysalis.jcharts.properties.LegendProperties; 80 import org.krysalis.jcharts.properties.LineChartProperties; 81 import org.krysalis.jcharts.properties.PointChartProperties; 82 import org.krysalis.jcharts.test.TestDataGenerator; 83 import org.krysalis.jcharts.types.ChartType; 84 85 import javax.faces.event.ActionEvent; 86 import java.awt.*; 87 88 92 public class CombinedChartBean { 93 94 private boolean initialzed = false; 96 97 private String clickedValue; 99 100 private Effect effectOutputText = new Highlight("#ffff99");; 102 103 private static AxisChart axisChart; 105 106 public CombinedChartBean() { 107 } 108 109 private void buildAxisChart() { 110 try { 111 String [] xAxisLabels = 112 {"1998", "1999", "2000", "2001", "2002", "2003", "2004"}; 113 String xAxisTitle = "Years"; 114 String yAxisTitle = "Problems"; 115 String title = "Company Software"; 116 DataSeries dataSeries = 117 new DataSeries(xAxisLabels, xAxisTitle, yAxisTitle, title); 118 119 double[][] data = TestDataGenerator.getRandomNumbers(3, 7, 0, 5000); 120 String [] legendLabels = {"Bugs", "Security Holes", "Backdoors"}; 121 Paint[] paints = new Color[]{ 122 new Color(0xCAE1EF), 123 new Color(0xF78208), 124 new Color(0x0D4274) }; 125 126 BarChartProperties barChartProperties = new BarChartProperties(); 127 AxisChartDataSet axisChartDataSet = 128 new AxisChartDataSet(data, 129 legendLabels, 130 paints, 131 ChartType.BAR, 132 barChartProperties); 133 dataSeries.addIAxisPlotDataSet(axisChartDataSet); 134 135 136 data = TestDataGenerator.getRandomNumbers(2, 7, 1000, 5000); 137 legendLabels = new String []{"Patches", "New Patch Bugs"}; 138 paints = new Paint[]{ new Color(0x0D4274), 139 new Color(0xF78208)}; 140 141 Stroke[] strokes = {LineChartProperties.DEFAULT_LINE_STROKE, 142 LineChartProperties.DEFAULT_LINE_STROKE}; 143 Shape[] shapes = {PointChartProperties.SHAPE_CIRCLE, 144 PointChartProperties.SHAPE_TRIANGLE}; 145 LineChartProperties lineChartProperties = 146 new LineChartProperties(strokes, shapes); 147 axisChartDataSet = new AxisChartDataSet(data, legendLabels, paints, 148 ChartType.LINE, 149 lineChartProperties); 150 dataSeries.addIAxisPlotDataSet(axisChartDataSet); 151 152 153 ChartProperties chartProperties = new ChartProperties(); 154 AxisProperties axisProperties = new AxisProperties(); 155 LegendProperties legendProperties = new LegendProperties(); 156 157 axisChart = new AxisChart(dataSeries, chartProperties, 158 axisProperties, 159 legendProperties, 500, 500); 160 161 } catch (Exception e) { 162 e.printStackTrace(); 163 } 164 } 165 166 167 174 public boolean renderOnSubmit(OutputChart component) { 175 if (axisChart == null || component.getChart() == null) 176 buildAxisChart(); 177 component.setChart(axisChart); 178 179 return !initialzed && (initialzed = true); 180 181 } 182 183 184 190 public void action(ActionEvent event) { 191 if (event.getSource() instanceof OutputChart) { 192 OutputChart chart = (OutputChart) event.getSource(); 193 clickedValue = ""; 194 if (chart.getClickedImageMapArea().getXAxisLabel() != null) { 195 setClickedValue(chart.getClickedImageMapArea().getXAxisLabel() + 196 " : " + 197 chart.getClickedImageMapArea().getValue()); 198 effectOutputText.setFired(false); 199 } 200 } 201 } 202 203 204 public String getClickedValue() { 205 return clickedValue; 206 } 207 208 public void setClickedValue(String clickedValue) { 209 this.clickedValue = clickedValue; 210 } 211 212 213 public Effect getEffectOutputText() { 214 return effectOutputText; 215 } 216 217 public void setEffectOutputText(Effect effectOutputText) { 218 this.effectOutputText = effectOutputText; 219 } 220 } 221 | Popular Tags |