| 1 33 34 package com.icesoft.icefaces.samples.showcase.components.charts; 35 36 import com.icesoft.faces.component.outputchart.AbstractChart; 37 import com.icesoft.faces.component.outputchart.OutputChart; 38 39 import javax.faces.event.ActionEvent; 40 import javax.faces.event.ValueChangeEvent; 41 import javax.faces.model.SelectItem; 42 import java.awt.*; 43 import java.util.ArrayList ; 44 import java.util.Iterator ; 45 import java.util.List ; 46 47 53 public class DynamicPieChart { 54 55 public List labels = new ArrayList (); 57 58 public List data = new ArrayList (); 60 61 private List paints = new ArrayList (); 63 64 private String label; 66 67 private float value; 68 69 public boolean is3D = false; 71 72 private boolean pieNeedsRendering = false; 74 75 private Color selectedColor; 77 78 int deletInex = 0; 80 81 private List deleteList = new ArrayList (); 83 84 public static final SelectItem[] availablePaints = new SelectItem[]{ 86 87 new SelectItem("E6EDF2", "Blue 1"), 88 new SelectItem("CAE1EF", "Blue 2"), 89 new SelectItem("C1D3DF", "Blue 3"), 90 new SelectItem("B4C7D4", "Blue 4"), 91 new SelectItem("94B3CB", "Blue 5"), 92 new SelectItem("4C7EA7", "Blue 6"), 93 new SelectItem("4FAADC", "Blue 7"), 94 new SelectItem("4397C5", "Blue 8"), 95 new SelectItem("1A568A", "Blue 9"), 96 new SelectItem("0D4274", "Blue 10"), 97 new SelectItem("CCCCCC", "Grey 1"), 98 new SelectItem("ACACAC", "Grey 2"), 99 new SelectItem("F78208", "Orange"), 100 new SelectItem("000000", "Black")}; 101 102 103 107 public DynamicPieChart() { 108 Iterator it = Sales.getSales().values().iterator(); 109 double price; 110 String label; 111 int r = 3; 112 while (it.hasNext()) { 113 114 Sales[] yearSale = (Sales[]) it.next(); 115 price = 0; 116 label = ""; 117 for (int i = 0; i < yearSale.length; i++) { 118 price += (yearSale[i]).getPrice(); 119 label = (yearSale[i]).getYear(); 120 121 } 122 labels.add(label); 123 data.add(new Double (price)); 124 paints.add(new Color(Integer.parseInt( 126 (String ) availablePaints[r].getValue(), 16))); 127 r++; 128 } 129 130 } 131 132 133 141 public boolean renderOnSubmit(OutputChart component) { 142 if (pieNeedsRendering) { 143 pieNeedsRendering = false; 144 return true; 145 } else { 146 return false; 147 } 148 } 149 150 public void setIs3D(boolean i3D) { 151 this.is3D = i3D; 152 } 153 154 159 public boolean is3D() { 160 return is3D; 161 } 162 163 164 public SelectItem[] getAvailablePaints() { 165 return availablePaints; 166 } 167 168 169 174 public void paintChangeListener(ValueChangeEvent event) { 175 176 if (event.getNewValue() != null) { 177 selectedColor = 178 new Color( 179 Integer.parseInt( 180 event.getNewValue().toString(), 16)); 181 System.out.println("Hex Color: " + 182 Integer.parseInt( 183 event.getNewValue().toString(), 16)); 184 } 185 } 186 187 188 public String getLabel() { 189 return label; 190 } 191 192 public void setLabel(String label) { 193 if (null == label || label.length() < 1) { 194 label = " "; 195 } 196 this.label = label; 197 } 198 199 public float getValue() { 200 return value; 201 } 202 203 public void setValue(float value) { 204 this.value = value; 205 } 206 207 212 public void addToChart(ActionEvent event) { 213 214 215 paints.add(selectedColor); 216 217 labels.add(label); 218 219 data.add(new Double (value)); 220 221 pieNeedsRendering = true; 222 223 } 224 225 226 public List getDeleteList() { 227 deleteList.clear(); 228 deleteList.add(new SelectItem("-1", "Select...")); 229 for (int i = 0; i < labels.size(); i++) { 230 deleteList.add(new SelectItem("" + i, "" + labels.get(i))); 231 } 232 return deleteList; 233 } 234 235 public void setDeleteList(List deleteList) { 236 this.deleteList = deleteList; 237 } 238 239 public boolean isDeleteAllowed() { 240 return labels.size() > 2; 241 } 242 243 244 249 public void deleteListValueChangeListener(ValueChangeEvent event) { 250 if (event.getNewValue() != null) { 251 deletInex = Integer.parseInt(event.getNewValue().toString()); 252 } 253 } 254 255 260 public void deleteChart(ActionEvent event) { 261 if (deletInex >= 0 && labels.size() > 2) { 262 labels.remove(deletInex); 263 data.remove(deletInex); 264 paints.remove(deletInex); 265 pieNeedsRendering = true; 266 } 267 } 268 269 270 public List getData() { 271 return data; 272 } 273 274 public List getLabels() { 275 276 return labels; 277 } 278 279 public List getPaints() { 280 281 return paints; 282 } 283 284 public void setPaints(List paints) { 285 286 287 this.paints = paints; 288 289 } 290 } 291 292 | Popular Tags |