Logo
Distributed Genetic Programming Framework
print print

File org.dgpf.gui.charts.Pie3DChart.java

Here you can find all the information about the file org.dgpf.gui.charts.Pie3DChart.java. You may explore it here or download it onto your local disk.
/*
 * Copyright (c) 2006 Alexander Podlich
 * 
 * E-Mail           : podlich@student.uni-kassel.de
 * Creation Date    : 05.08.2006 11:26:51
 * Original Filename: org.dgpf.gui.charts.DGPFPieChart.java
 * Version          : 1.0
 * Last modification: 05.08.2006
 * Last modified by : Alexander Podlich
 * 
 * License          : GNU LESSER GENERAL PUBLIC LICENSE
 *                    Version 2.1, February 1999
 *                    You should have received a copy of this license along
 *                    with this library; if not, write to the Free Software
 *                    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *                    MA 02111-1307, USA or download the license under
 *                    http://www.gnu.org/copyleft/lesser.html.
 *                    
 * Warranty         : This software is provided "as is" without any
 *                    warranty; without even the implied warranty of
 *                    merchantability or fitness for a particular purpose.
 *                    See the Gnu Lesser General Public License for more
 *                    details.
 */


package org.dgpf.gui.charts;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.Timer;

import org.dgpf.gui.charts.descriptors.PortDescriptorBase;
import org.dgpf.gui.utils.LanguageSwitcher;
import org.dgpf.search.api.SearchState;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.util.Rotation;

/**
 * This class represents a 3d pie chart.
 * 
 * @author Alexander Podlich
 */

public class Pie3DChart implements IChart
  {

  /**
   * The name of the 3d pie chart.
   */

  private String                   m_name;

  /**
   * The status for showing the legend.
   */

  private boolean                  m_showLegend  = true;

  /**
   * The port descriptors.
   */

  private List<PortDescriptorBase> m_values;

  /**
   * The rotate status of the chart.
   */

  private boolean                  m_rotateChart = true;

  /**
   * The pie dataset.
   */

  private DefaultPieDataset        m_dataSet;

  /**
   * The pie plot.
   */

  private PiePlot3D                m_cPlot;

  /**
   * Constructor.
   * 
   * @param p_name
   *          The name of the 3d pie chart.
   */

  public Pie3DChart(String p_name)
    {
    this.m_name = p_name;
    }

  /**
   * Updates the 3d pie chart.
   * 
   * @param p_searchState
   *          The search state.
   */

  public void update(SearchState<?> p_searchState)
    {
    EventQueue.invokeLater(new ChartRunner(p_searchState, this));
    }

  /**
   * Updates the 3d pie chart. This method has to be called from the
   * ChartRunner.
   * 
   * @param p_searchState
   *          The search state.
   */

  public void doUpdate(SearchState<?> p_searchState)
    {

    /*
     * IMPORTANT: There is no clear() method for the dataset, so for now
     * i'll have to go with the option of creating a new dataset and
     * replacing the old one. The clear() method should be in the next
     * release (1.0.2). JFreeChart is NOT THREAD SAFE
     */


    double l_val;
    this.m_dataSet = new DefaultPieDataset();

    for(int l_i = 0; l_i < this.m_values.size(); ++l_i)
      {
      l_val = this.m_values.get(l_i).get(p_searchState);
      this.m_dataSet.setValue(this.m_values.get(l_i).toString(), l_val);
      }

    this.m_cPlot.setDataset(this.m_dataSet);

    }

  /**
   * Creates the 3d pie chart.
   * 
   * @return The 3d pie chart.
   */

  public JFreeChart createChart()
    {

    this.m_dataSet = new DefaultPieDataset();

    for(int l_i = 0; l_i < this.m_values.size(); ++l_i)
      {
      this.m_dataSet.setValue(this.m_values.get(l_i).toString(), 0.0);
      }

    JFreeChart l_chart = ChartFactory.createPieChart3D(this.m_name,
        this.m_dataSet, this.m_showLegend, true, false);

    this.m_cPlot = (PiePlot3D) l_chart.getPlot();
    this.m_cPlot.setStartAngle(270);
    this.m_cPlot.setDirection(Rotation.ANTICLOCKWISE);
    this.m_cPlot.setForegroundAlpha(0.60f);
    this.m_cPlot.setInteriorGap(0.33);

    if(this.m_rotateChart)
      {
      Rotator l_rotator = new Rotator(this.m_cPlot);
      l_rotator.start();
      }

    return l_chart;

    }

  /**
   * Returns a 3d sample pie chart for a preview.
   * 
   * @return The sample chart.
   */

  public JFreeChart getSampleChart()
    {

    DefaultPieDataset l_data = new DefaultPieDataset();
    l_data.setValue(LanguageSwitcher.getString("chrt_1_dataset"),
        new Double(16.0));
    l_data.setValue(LanguageSwitcher.getString("chrt_2_dataset"),
        new Double(53.8));
    l_data.setValue(LanguageSwitcher.getString("chrt_3_dataset"),
        new Double(31.2));

    JFreeChart l_chart = ChartFactory.createPieChart3D(LanguageSwitcher
        .getString("piec_caption"), l_data, true, true, false);

    PiePlot3D l_plot = (PiePlot3D) l_chart.getPlot();
    l_plot.setStartAngle(270);
    l_plot.setDirection(Rotation.ANTICLOCKWISE);
    l_plot.setForegroundAlpha(0.60f);
    l_plot.setInteriorGap(0.33);

    Rotator l_rotator = new Rotator(l_plot);
    l_rotator.start();

    return l_chart;

    }

  /**
   * Returns the description of this chart.
   * 
   * @return The description of this chart.
   */

  public String getDescription()
    {
    return LanguageSwitcher.getString("piec_description");
    }

  /**
   * Returns the string representation of the chart.
   * 
   * @return The name of the line chart.
   */

  @Override
  public String toString()
    {
    return this.m_name;
    }

  /**
   * @param p_name
   *          The new name of the chart.
   */

  public void setName(String p_name)
    {
    this.m_name = p_name;
    }

  /**
   * @param p_values
   *          The list of port descriptors as values.
   */

  public void setValues(List<PortDescriptorBase> p_values)
    {
    this.m_values = p_values;
    }

  /**
   * @param p_rotateChart
   *          The rotate status of the chart.
   */

  public void setRotateChart(boolean p_rotateChart)
    {
    this.m_rotateChart = p_rotateChart;
    }

  /**
   * @param p_showLegend
   *          The status for showing the legend.
   */

  public void setShowLegend(boolean p_showLegend)
    {
    this.m_showLegend = p_showLegend;
    }

  /**
   * The rotator.
   */

  private class Rotator extends Timer implements ActionListener
    {

    /**
     * The serial version UID.
     */

    private static final long serialVersionUID = 1L;

    /**
     * The plot.
     */

    private PiePlot3D         m_plot;

    /**
     * The angle.
     */

    private int               m_angle          = 270;

    /**
     * The Constructor.
     * 
     * @param p
     *          The plot.
     */

    Rotator(final PiePlot3D p)
      {
      super(100, null);
      this.m_plot = p;
      addActionListener(this);
      }

    /**
     * Modifies the starting angle.
     * 
     * @param event
     *          the action event.
     */

    public void actionPerformed(ActionEvent event)
      {
      this.m_plot.setStartAngle(this.m_angle);
      this.m_angle = this.m_angle + 1;
      if(this.m_angle == 360)
        {
        this.m_angle = 0;
        }
      }
    }

  }

File Information:

file name:Pie3DChart.java
package:org.dgpf.gui.charts
qualified name:org.dgpf.gui.charts.Pie3DChart.java
file type:Java Source File
download location:download http://dgpf.sourceforge.net/source/org/dgpf/gui/charts/Pie3DChart.java
size:7.155 KB (7327 B)
uploaded: 2015-07-22 04:10:58 GMT+0000
last update: 2006-09-24 23:47:04 GMT+0000
last access: 2017-11-19 03:05:34 GMT+0000

statistics online since 2006-01-02.   RSS Feed
Contact us by sending an email to tweise@gmx.de to receive further information, to report errors, or to join our project.
All content on this site (http://dgpf.sourceforge.net/) is LGPL-licensed.
http://dgpf.sourceforge.net/scripts/source/source.php last modified at 2015-07-22 04:10:53 GMT+0000 served at 2017-11-19 03:05:34 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo