view src/example/SchedulerViewerTest.java @ 25:0a99effcfd3b

add example for Scheduler
author sugi
date Thu, 31 Oct 2013 01:17:10 +0900
parents
children 46f7a75d9a82
line wrap: on
line source

package example;
/**
 * Copyright (c) 2008, 2012 Oracle and/or its affiliates.
 * All rights reserved. Use is subject to license terms.
 */
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.chart.*;
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.chart.NumberAxis;
import javafx.util.Duration;

/**
 * A sample that displays data in a stacked bar chart.
 *
 * @see javafx.scene.chart.StackedBarChart
 * @see javafx.scene.chart.CategoryAxisBuilder
 * @see javafx.scene.chart.NumberAxis
 * @related charts/bar/BarChart
 *
 */
public class SchedulerViewerTest extends Application {
	private Timeline animation;
	
	private CategoryAxis xAxis;
	private NumberAxis yAxis;
	
	private double hours = 0;
    private double minutes = 0;
    private double timeInHours = 0;

	
    private void init(Stage primaryStage) {
        Group root = new Group();
        primaryStage.setScene(new Scene(root));
        root.getChildren().add(createChart());
        
        animation = new Timeline();
        animation.getKeyFrames().add(new KeyFrame(Duration.millis(1000/60), new EventHandler<ActionEvent>() {
            @Override public void handle(ActionEvent actionEvent) {
                // 6 minutes data per frame
                for(int count=0; count < 6; count++) {
                   // nextTime();
                    plotTime();
                }
            }
        }));
        animation.setCycleCount(Animation.INDEFINITE);
    }
    
    @SuppressWarnings({ "rawtypes", "unchecked" })
	protected StackedBarChart createChart(){
    	String[] years = {"2007", "2008", "2009"};
    	xAxis = new CategoryAxis(FXCollections.<String>observableArrayList(years));
        yAxis = new NumberAxis(0,75,5); // (start, end, interval)
        
        ObservableList<StackedBarChart.Series> barChartData = FXCollections.observableArrayList(
            new StackedBarChart.Series("Region 1", FXCollections.observableArrayList(
               new StackedBarChart.Data(years[0], 10d),
               new StackedBarChart.Data(years[1], 12d),
               new StackedBarChart.Data(years[2], 15d)
            )),
            new StackedBarChart.Series("Region 2", FXCollections.observableArrayList(
               new StackedBarChart.Data(years[0], 20),
               new StackedBarChart.Data(years[1], 16),
               new StackedBarChart.Data(years[2], 25)
            )),
            new StackedBarChart.Series<String ,Number>("Region 3", FXCollections.observableArrayList(
               new StackedBarChart.Data<String, Number>(years[0], 15),
               new StackedBarChart.Data<String, Number>(years[1], 19),
               new StackedBarChart.Data<String, Number>(years[2], 27)
            ))
        );
        StackedBarChart cc = new StackedBarChart(xAxis, yAxis);
        cc.setData(barChartData);
        cc.setCategoryGap(25.0d);
        //hourDataSeries = new XYChart.Series<Number,Number>();
    	//hourDataSeries.setName("Time");
    	//hourDataSeries.getData().add(new XYChart.Data<Number,Number>(timeInHours,prevY));
    	for (double m=0; m<(60); m++) {
    		nextTime();
            plotTime();
        }
    	//cc.getData().add(hourDataSeries);
        return cc;
    }
    private void nextTime() {
        if (minutes == 59) {
            hours ++;
            minutes = 0;
        } else {
            minutes ++;
        }
        timeInHours = hours + ((1d/60d)*minutes);
        System.out.println(this.timeInHours);
    }
    
    public void plotTime(){
    	yAxis.setLowerBound(yAxis.getLowerBound()+1);
        yAxis.setUpperBound(yAxis.getUpperBound()+1);
    }

    public void play() {
        animation.play();
    }

    @Override public void start(Stage primaryStage) throws Exception {
        init(primaryStage);
        primaryStage.show();
        play();
    }
    public static void main(String[] args) { launch(args); }
}