package demoGrafici;

import org.jfree.data.xy.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.data.category.*;
import org.jfree.data.general.*;

import java.io.*;

public class Esempio1
{

  static void creaGrafo1()
  {
    XYSeriesCollection dataSet = caricaDati1();
		
    // creo l'oggetto JFreeChart col metodo statico dedicato
    // per il tipo di grafico in esame
    JFreeChart grafo1 = ChartFactory.createXYLineChart(
                      "Grafo1", 
                      "Giorni di Gennaio", 
                      "Gradi (C°)",
                      dataSet, 
                      PlotOrientation.VERTICAL, 
                      true, 
                      false, 
                      false );


    // modifico il range di valori sull'asse delle ordinate
    /*
    XYPlot plot = grafo1.getXYPlot();
    ValueAxis asseY = plot.getRangeAxis();
    asseY.setRange(-5, 20);
    */

    // creo un oggetto ChartFrame per visualizzare il grafico
    // ChartFrame eredita da java.awt.Frame ed è quindi trattabile 
    // in seguito
    // con le normali primitive grafiche fornite dal package java.awt

    ChartFrame frame1 = new ChartFrame("Esempio1", grafo1);
    // scelgo la dimensione in pixel della finestra
    frame1.setSize(400,350);
    // e la visualizzo
    frame1.setVisible(true);
  }

	
  static XYSeriesCollection caricaDati1()
  {
    String s, a[];
		
    // creo la serie di dati per le temperature massime
    XYSeries serieMax = new XYSeries("Massima");
    // creo la serie di dati per le temperature minime
    XYSeries serieMin = new XYSeries("Minima");
		
    try
    {
      FileReader in = new FileReader("esempio1.dat");
      BufferedReader reader = new BufferedReader(in);
			
      while (reader.ready())
      {
        s = reader.readLine();
        if (s.length() > 0 && s.charAt(0) != '#')
        {
          // la funzione split suddivide la stringa s in
          // sottostringhe riconoscibili da un delimitatore
          // (in questo caso una tabulazione)
          a = s.split("\t");

          serieMin.add(
               Double.parseDouble(a[0]), 
               Double.parseDouble(a[1]));
          
          serieMax.add(
               Double.parseDouble(a[0]), 
               Double.parseDouble(a[2]));
        }
      }

      reader.close();
      in.close();
    }
    catch (IOException ioe)
    {
      System.out.println(ioe.getMessage());
    }

    // creo il dataset (con una o più serie di dati), che rappresenta
    // la collezione dei dati da rappresentare
    XYSeriesCollection dataSet = new XYSeriesCollection();
    dataSet.addSeries(serieMax);
    dataSet.addSeries(serieMin);

    return dataSet;
  }

	
  public static void main (String[] args)
  {
    creaGrafo1();
  }

} /* end of class declaration */

