# HG changeset patch # User sugi # Date 1383149830 -32400 # Node ID 0a99effcfd3b1ebc9a7073618763cea7d7359ee9 # Parent 712fee3b7090834dd9abce6ba80e4beddec5e9c7 add example for Scheduler diff -r 712fee3b7090 -r 0a99effcfd3b src/example/AdvancedStockLineChartSample.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/example/AdvancedStockLineChartSample.java Thu Oct 31 01:17:10 2013 +0900 @@ -0,0 +1,139 @@ +package example; + +/** + * Copyright (c) 2008, 2012 Oracle and/or its affiliates. + * All rights reserved. Use is subject to license terms. + */ +import javafx.application.Application; +import javafx.scene.Group; +import javafx.scene.Scene; +import javafx.stage.Stage; +import javafx.animation.Animation; +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.chart.LineChart; +import javafx.scene.chart.NumberAxis; +import javafx.scene.chart.XYChart; +import javafx.util.Duration; + +/** + * A simulated stock line chart. + * + * @see javafx.scene.chart.Chart + * @see javafx.scene.chart.LineChart + * @see javafx.scene.chart.NumberAxis + * @see javafx.scene.chart.XYChart + */ +public class AdvancedStockLineChartSample extends Application { + + private XYChart.Series hourDataSeries; + private XYChart.Series minuteDataSeries; + private NumberAxis xAxis; + private Timeline animation; + + private double hours = 0; + private double minutes = 0; + private double timeInHours = 0; + private double prevY = 10; + private double y = 10; + + private void init(Stage primaryStage) { + Group root = new Group(); + primaryStage.setScene(new Scene(root)); + root.getChildren().add(createChart()); + // create timeline to add new data every 60th of second + animation = new Timeline(); + animation.getKeyFrames().add(new KeyFrame(Duration.millis(1000/60), new EventHandler() { + @Override public void handle(ActionEvent actionEvent) { + // 6 minutes data per frame + for(int count=0; count < 6; count++) { + nextTime(); + plotTime(); + } + } + })); + animation.setCycleCount(Animation.INDEFINITE); + } + + protected LineChart createChart() { + xAxis = new NumberAxis(0,25,5); + final NumberAxis yAxis = new NumberAxis(0,100,10); + final LineChart lc = new LineChart(xAxis,yAxis); + // setup chart + lc.setId("lineStockDemo"); + lc.setCreateSymbols(false); + lc.setAnimated(false); + lc.setLegendVisible(false); + lc.setTitle("Task Viewer"); + xAxis.setLabel("Time"); + xAxis.setForceZeroInRange(false); + yAxis.setLabel("Task Name"); + yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis,"$",null)); + // add starting data + hourDataSeries = new XYChart.Series(); + minuteDataSeries = new XYChart.Series(); + // create some starting data + + minuteDataSeries.getData().add(new XYChart.Data(timeInHours,prevY)); + for (double m=0; m<(60); m++) { + nextTime(); + plotTime(); + } + lc.getData().add(minuteDataSeries); + lc.getData().add(hourDataSeries); + return lc; + } + + private void nextTime() { + if (minutes == 59) { + hours ++; + minutes = 0; + } else { + minutes ++; + } + timeInHours = hours + ((1d/60d)*minutes); + } + + private void plotTime() { + if ((timeInHours % 1) == 0) { + // change of hour + double oldY = y; + y = prevY - 10 + (Math.random()*20); + prevY = oldY; + while (y < 10 || y > 90) y = y - 10 + (Math.random()*20); + if (timeInHours % 30 > 15){ + hourDataSeries.getData().add(new XYChart.Data(timeInHours, 10)); + }else { + hourDataSeries.getData().add(new XYChart.Data(timeInHours, 20)); + } + // after 25hours delete old data + if (timeInHours > 25) hourDataSeries.getData().remove(0); + // every hour after 24 move range 1 hour + if (timeInHours > 24) { + xAxis.setLowerBound(xAxis.getLowerBound()+1); + xAxis.setUpperBound(xAxis.getUpperBound()+1); + } + } + //double min = (timeInHours % 1); + //double randomPickVariance = Math.random(); + + //if (timeInHours > 25) minuteDataSeries.getData().remove(0); + } + + public void play() { + animation.play(); + } + + @Override public void stop() { + animation.pause(); + } + + @Override public void start(Stage primaryStage) throws Exception { + init(primaryStage); + primaryStage.show(); + play(); + } + public static void main(String[] args) { launch(args); } +} diff -r 712fee3b7090 -r 0a99effcfd3b src/example/SchedulerViewerTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/example/SchedulerViewerTest.java Thu Oct 31 01:17:10 2013 +0900 @@ -0,0 +1,121 @@ +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() { + @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.observableArrayList(years)); + yAxis = new NumberAxis(0,75,5); // (start, end, interval) + + ObservableList 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("Region 3", FXCollections.observableArrayList( + new StackedBarChart.Data(years[0], 15), + new StackedBarChart.Data(years[1], 19), + new StackedBarChart.Data(years[2], 27) + )) + ); + StackedBarChart cc = new StackedBarChart(xAxis, yAxis); + cc.setData(barChartData); + cc.setCategoryGap(25.0d); + //hourDataSeries = new XYChart.Series(); + //hourDataSeries.setName("Time"); + //hourDataSeries.getData().add(new XYChart.Data(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); } +}