--
PedroRio - 26 Mar 2010
Código Java Associado a um PieChart
Os componentes de gráficos XVW possuem propriedades que são alimentadas por uma Bean e algumas das sua propriedades representam invocações de métodos do lado da Bean que têm de devolver objectos Java que implementem determinadas interfaces. No caso do Pie Chart há a necessidade de pelo menos a propriedade
dataSet ser preenchida e, opcionalmente, a propriedade
configOptions.
Assumindo uma definição em XML do componente Pie Chart como a seguinte:
<xvw:pieChart
label="Chart Label"
dataSet="#{viewBean.dataSet}"
width="500"
height="400"
type="IMG"
configOptions="#{viewBean.configOptions}"
>
</xvw:pieChart>
A bean a utilizar para um pieChart pode ser algo assim (pode estender a XEO Bean que se entender, não é obrigatório estender a
XEOEditBean):
public class PieBean extends XEOEditBean
{
private PieDataSet dataSet;
private IPieChartConfiguration configOptions;
public PieBean()
{
super();
this.dataSet = new PieDataSetImpl();
this.configOptions = new IPieChartConfigImpl();
}
public PieDataSet dataSet()
{
return this.dataSet;
}
public IPieChartConfiguration configOptions()
{
return this.configOptions;
}
}
A class
PieDataSetImpl é uma implementação da interface
PieDataSet para este exemplo, assim como a class
IPieChartConfigImpl é uma implementação da interface
IPieChartConfiguration.
A definição da classe
PieDataSetImpl é muito simples e dado que um
PieDataSet é essencialmente um conjunto de pares chave/valor. Os valores podem ser guardados num
HashMap<String,Integer> e para motivos de exemplo teremos a preferência (em número) das pessoas entre três estações do ano (Verão, Outono e Inverno), onde respectivamente há 190, 200 e 20 pessoas a preferirem.
public class PieDataSetImpl implements PieDataSet {
private HashMap<String,Integer> dataSet;
public PieDataSetImpl() //Cria-se o Mapa e preenche-se com valores
{
this.dataSet = new HashMap<String, Integer>();
this.dataSet.put("Summer", 190);
this.dataSet.put("Fall", 200);
this.dataSet.put("Winter", 20);
}
@Override //Devolve um nome para identificar as categorias
public String getCategoryLabel()
{
return "Seasons";
}
@Override
public Number getValue(Comparable<String> key) //Vai buscar um valor dado a categoria
{
return this.dataSet.get(key);
}
@Override
public String getValueLabel() //Devolve um nome para identificar os valores para as categorias
{
return "Values";
}
@Override
public List<String> getCategories() //Devolve a lista de categorias, Summer, Fall, Winter
{
return new Vector<String>(dataSet.keySet());
}
}
A classe
IPieChartConfigImpl é uma implementação muito simples da interface das configurações apenas para mostrar a utilização da mesma.
public class IPieChartConfigImpl implements IPieChartConfiguration
{
public IPieChartConfigImpl()
{}
@Override //Determina a cor de fundo do gráfico.
public Color getBackgroundColour()
{
return Color.gray;
}
@Override //Mapeia as categorias em cores, de tal modo que as fatias da tarte fiquem cada uma com sua cor
public HashMap<String, Color> getColours()
{
HashMap<String, Color> maps = new HashMap<String, Color>();
maps.put("Winter", Color.black);
maps.put("Fall", Color.blue);
maps.put("Summer", Color.magenta);
return maps;
}
@Override //Se o titulo do gráfico deve ser mostrado ou não
public boolean showChartTitle()
{
return true;
}
@Override //Se as labels do gráfico devem ser mostradas ou não.
public boolean showLabels()
{
return true;
}
@Override //Devolve uma expressão que pode é usada para mostrar as tooltips, pode conter variáveis
//especiais de forma a mostrar valores (consultar a documentação da interface)
public String getTooltipString()
{
return "$key has value $val which is $percent of total";
}
}