/*
Copyright 2006 by Sean Paus
Licensed under the Academic Free License version 3.0
See the file "LICENSE" for more information
*/
/*
* Created on Apr 17, 2005 11:20:52 AM
*
* By: spaus
*/
package ec.display;
import java.awt.Color;
import javax.swing.JTabbedPane;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import ec.EvolutionState;
import ec.Setup;
import ec.Statistics;
import ec.display.chart.ChartableStatistics;
import ec.display.chart.StatisticsChartPaneTab;
import ec.util.Parameter;
/**
* @author spaus
*/
public class StatisticsChartPane
extends JTabbedPane
implements Setup
{
public int numCharts;
/**
*
*/
public StatisticsChartPane()
{
super();
initialize();
}
/**
* @param tabPlacement
*/
public StatisticsChartPane(int tabPlacement)
{
super(tabPlacement);
initialize();
}
/**
* @param tabPlacement
* @param tabLayoutPolicy
*/
public StatisticsChartPane(int tabPlacement, int tabLayoutPolicy)
{
super(tabPlacement, tabLayoutPolicy);
initialize();
}
private void createCharts(Statistics statistics)
{
if (statistics instanceof ChartableStatistics)
{
ChartableStatistics chartStats = (ChartableStatistics)statistics;
JFreeChart chart = chartStats.makeChart();
chart.setBackgroundPaint(Color.white);
ChartPanel chartPanel = new ChartPanel(chart);
StatisticsChartPaneTab chartPaneTab = new StatisticsChartPaneTab(chartPanel);
this.addTab("Chart "+(numCharts++),chartPaneTab);
}
if (statistics.children != null)
{
for (int i = 0; i < statistics.children.length; ++i)
createCharts(statistics.children[i]);
}
}
/* (non-Javadoc)
* @see ec.Setup#setup(ec.EvolutionState, ec.util.Parameter)
*/
public void setup(EvolutionState state, Parameter base)
{
numCharts = 0;
createCharts(state.statistics);
}
/**
* This method initializes this
*
* @return void
*/
private void initialize()
{
this.setSize(300,200);
this.addContainerListener(new java.awt.event.ContainerAdapter()
{
public void componentRemoved(java.awt.event.ContainerEvent e)
{
StatisticsChartPane pane = (StatisticsChartPane)e.getSource();
if (pane.getTabCount() < 1)
{
pane.getParent().remove(pane);
}
}
});
}
}
Ads help maintain this website.