001package com.ganteater.ae.desktop.view; 002 003import java.awt.BorderLayout; 004import java.util.Properties; 005 006import org.jfree.chart.ChartFactory; 007import org.jfree.chart.ChartPanel; 008import org.jfree.chart.JFreeChart; 009import org.jfree.data.general.DefaultPieDataset; 010 011import com.ganteater.ae.AEManager; 012import com.ganteater.ae.processor.annotation.CommandDescription; 013 014@CommandDescription("`PieChart` View Type example:\r\n" 015 + "\r\n" 016 + "```xml\r\n" 017 + "<View name=\"pieView\" reuse=\"true\" type=\"PieChart\" title=\"Pie Chart\" /> \r\n" 018 + "<Loop name=\"column\" numbers=\"10\">\r\n" 019 + " <Rnd name=\"value\" symbols=\"3\" type=\"number\" /> \r\n" 020 + " <Out view=\"pieView\" key=\"$var{column}\" level=\"debug\">$var{value}</Out> \r\n" 021 + "</Loop>\r\n" 022 + "```") 023public class PieChart extends View { 024 private static final long serialVersionUID = 1L; 025 026 private DefaultPieDataset dataset; 027 private JFreeChart chart = null; 028 029 public void init(Properties params, AEManager manager) { 030 super.init(params, null); 031 String title = params.getProperty("title"); 032 033 dataset = new DefaultPieDataset(); 034 chart = ChartFactory.createPieChart(title, dataset, true, true, true); 035 036 add(new ChartPanel(chart, false), BorderLayout.CENTER); 037 } 038 039 @Override 040 public synchronized void out(Object data, Properties properties) { 041 if (data instanceof String) { 042 double value = Double.parseDouble((String) data); 043 Comparable<?> key = properties.getProperty("key"); 044 dataset.setValue(key, value); 045 } 046 } 047}