Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package assig; import java.text.SimpleDateFormat; import java.util.Date; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.data.gantt.GanttCategoryDataset; import org.jfree.data.gantt.Task; import org.jfree.data.gantt.TaskSeries; import org.jfree.data.gantt.TaskSeriesCollection; import org.jfree.data.time.SimpleTimePeriod; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import java.util.ArrayList; public class Gantt extends ApplicationFrame { // private static final long serialVersionUID = 1L; String tit; private ArrayList<Process> processArr; public Gantt(final String title, ArrayList<Process> p) { super(title); tit = title; processArr = p; final GanttCategoryDataset dataset = createDataset(); final JFreeChart chart = createChart(dataset); // add the chart to a panel... final ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(750, 320)); setContentPane(chartPanel); this.pack(); RefineryUtilities.positionFrameOnScreen(this, 0.0, 0.95); this.setVisible(true); } void createGantt(final String title, ArrayList<Process> p) { setTitle(title); tit = title; processArr = p; final GanttCategoryDataset dataset = createDataset(); final JFreeChart chart = createChart(dataset); // add the chart to a panel... final ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(chartPanel); this.revalidate(); this.repaint(); } public GanttCategoryDataset createDataset() { Task t; TaskSeries s; TaskSeriesCollection collection = new TaskSeriesCollection(); Process tm; if (processArr.size() > 0) if ((FPanel.isFloating == true) || ((((processArr.get(0).getQ()) % 1) != 0) && (tit == "RR Scheduling"))) for (int i = 0; i < processArr.size(); i++) { tm = processArr.get(i); s = new TaskSeries(tm.getName()); t = new Task(tm.getName(), new SimpleTimePeriod((int) (tm.getStart() * 1000), (int) (tm.getEnd() * 1000))); ArrayList<Process> p = tm.getSubProcess(); for (int j = 0; j < p.size(); j++) { // System.out.println("ksdksk"); t.addSubtask(new Task("", new SimpleTimePeriod((int) (p.get(j).getStart() * 1000), (int) (p.get(j).getEnd() * 1000)))); } s.add(t); collection.add(s); } else for (int i = 0; i < processArr.size(); i++) { tm = processArr.get(i); s = new TaskSeries(tm.getName()); t = new Task(tm.getName(), new SimpleTimePeriod((int) (tm.getStart()), (int) (tm.getEnd()))); ArrayList<Process> p = tm.getSubProcess(); for (int j = 0; j < p.size(); j++) { // System.out.println("ksdksk"); t.addSubtask(new Task("", new SimpleTimePeriod((int) (p.get(j).getStart()), (int) (p.get(j).getEnd())))); } s.add(t); collection.add(s); } return collection; } /* private static Date date(final int day, final int month, final int year) { final Calendar calendar = Calendar.getInstance(); calendar.set(year, month, day); final Date result = calendar.getTime(); return result; */ private JFreeChart createChart(final GanttCategoryDataset dataset) { JFreeChart chart; if (FPanel.isFloating == false) { chart = ChartFactory.createGanttChart("Gantt ", // chart title "PRO", // domain axis label "TIME (ms)", // range axis label dataset, // data true, // include legend true, // tooltips false // urls ); } else { chart = ChartFactory.createGanttChart("Gantt ", // chart title "PRO", // domain axis label "TIME (MicroSec)", // range axis label dataset, // data true, // include legend true, // tooltips false // urls ); } CategoryPlot plot = chart.getCategoryPlot(); DateAxis axis = (DateAxis) plot.getRangeAxis(); axis.setDateFormatOverride(new SimpleDateFormat("S")); //axis.setMaximumDate(new Date(70)); return chart; } }