annotate src/main/java/alice/test/topology/aquarium/fx/Aquarium.java @ 395:4d5d7721f78f multicast

dug (NullPointerException) fix.
author sugi
date Wed, 18 Jun 2014 15:31:59 +0900
parents c0cf9fe00d77
children aefbe41fcf12
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
375
e58f5f74748e create foundation
sugi
parents:
diff changeset
1 package alice.test.topology.aquarium.fx;
e58f5f74748e create foundation
sugi
parents:
diff changeset
2
e58f5f74748e create foundation
sugi
parents:
diff changeset
3 import java.io.IOException;
e58f5f74748e create foundation
sugi
parents:
diff changeset
4
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
5 import alice.codesegment.OutputDataSegment;
375
e58f5f74748e create foundation
sugi
parents:
diff changeset
6 import javafx.application.Application;
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
7 import javafx.event.EventHandler;
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
8 import javafx.scene.Group;
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
9 import javafx.scene.Parent;
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
10 import javafx.scene.PerspectiveCamera;
375
e58f5f74748e create foundation
sugi
parents:
diff changeset
11 import javafx.scene.Scene;
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
12 import javafx.scene.SceneAntialiasing;
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
13 import javafx.scene.SubScene;
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
14 import javafx.scene.input.KeyEvent;
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
15 import javafx.scene.paint.Color;
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
16 import javafx.scene.transform.Rotate;
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
17 import javafx.scene.transform.Translate;
375
e58f5f74748e create foundation
sugi
parents:
diff changeset
18 import javafx.stage.Stage;
381
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
19 import javafx.stage.WindowEvent;
375
e58f5f74748e create foundation
sugi
parents:
diff changeset
20
e58f5f74748e create foundation
sugi
parents:
diff changeset
21 public class Aquarium extends Application {
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
22
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
23 private OutputDataSegment ods = new OutputDataSegment();
375
e58f5f74748e create foundation
sugi
parents:
diff changeset
24
e58f5f74748e create foundation
sugi
parents:
diff changeset
25 @Override
e58f5f74748e create foundation
sugi
parents:
diff changeset
26 public void start(Stage primaryStage) throws IOException {
387
1cbac5818dca add scope dataSegment
sugi
parents: 384
diff changeset
27 String myName = getParameters().getRaw().get(0); // name
1cbac5818dca add scope dataSegment
sugi
parents: 384
diff changeset
28 primaryStage.setTitle("Aquarium "+ myName);
375
e58f5f74748e create foundation
sugi
parents:
diff changeset
29 primaryStage.setResizable(false);
381
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
30 primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>(){
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
31 @Override
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
32 public void handle(WindowEvent event) {
384
56d4f93a3921 add RegisterList
sugi
parents: 383
diff changeset
33 // should send finish DataSegment
381
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
34 System.exit(0);
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
35 }
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
36 });
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
37
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
38 Scene scene = new Scene(createContent());
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
39 scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
40 public void handle(KeyEvent t) {
394
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
41 FishInfo info = null;
381
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
42 switch (t.getCode()) {
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
43 case RIGHT:
394
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
44 info = new FishInfo(0.1,0,0);
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
45 info.rolY = -1;
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
46 info.rotate = 90;
381
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
47 break;
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
48 case LEFT:
394
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
49 info = new FishInfo(-0.1,0,0);
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
50 info.rolY = 1;
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
51 info.rotate = 90;
381
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
52 break;
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
53 case UP:
394
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
54 info = new FishInfo(0,-0.1,0);
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
55 info.rolX = -1;
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
56 info.rotate = 90;
381
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
57 break;
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
58 case DOWN:
394
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
59 info = new FishInfo(0,0.1,0);
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
60 info.rolX = 1;
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
61 info.rotate = 90;
387
1cbac5818dca add scope dataSegment
sugi
parents: 384
diff changeset
62 break;
1cbac5818dca add scope dataSegment
sugi
parents: 384
diff changeset
63 case N:
394
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
64 info = new FishInfo(0,0,0.1);
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
65 info.rolX = -1;
387
1cbac5818dca add scope dataSegment
sugi
parents: 384
diff changeset
66 break;
1cbac5818dca add scope dataSegment
sugi
parents: 384
diff changeset
67 case M:
394
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
68 info = new FishInfo(0,0,-0.1);
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
69 info.rotate = 180;
381
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
70 break;
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
71 default: // do nothing
394
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
72 // reset. send median position. after implement
395
4d5d7721f78f dug (NullPointerException) fix.
sugi
parents: 394
diff changeset
73 info = new FishInfo(0,0,0);
381
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
74 break;
6adfb60766f7 add window close event
sugi
parents: 380
diff changeset
75 }
394
c0cf9fe00d77 add direction Information
sugi
parents: 387
diff changeset
76 ods.update(myName+"FishdiffP", info);
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
77 }
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
78 });
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
79 primaryStage.setScene(scene);
375
e58f5f74748e create foundation
sugi
parents:
diff changeset
80 primaryStage.show();
e58f5f74748e create foundation
sugi
parents:
diff changeset
81 }
e58f5f74748e create foundation
sugi
parents:
diff changeset
82
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
83 private Parent createContent(){
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
84 Group root = new Group();
378
ac3cf96f4426 add scooter object with CreateObject and AddObject
sugi
parents: 377
diff changeset
85 ods.put("root", root);
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
86
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
87 // Create and position camera
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
88 PerspectiveCamera camera = new PerspectiveCamera(true);
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
89 camera.getTransforms().addAll(
384
56d4f93a3921 add RegisterList
sugi
parents: 383
diff changeset
90 new Rotate(0, Rotate.Y_AXIS),
56d4f93a3921 add RegisterList
sugi
parents: 383
diff changeset
91 new Rotate(0, Rotate.X_AXIS),
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
92 new Translate(0, 0, -15));
379
b162da6aa0c2 refactor
sugi
parents: 378
diff changeset
93 camera.setId("camera");
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
94
379
b162da6aa0c2 refactor
sugi
parents: 378
diff changeset
95 root.getChildren().add(camera);
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
96
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
97 // Use a SubScene
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
98 SubScene subScene = new SubScene(root, 800, 700, true, SceneAntialiasing.BALANCED);
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
99 subScene.setFill(Color.TRANSPARENT);
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
100 subScene.setCamera(camera);
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
101 Group parent = new Group(subScene);
387
1cbac5818dca add scope dataSegment
sugi
parents: 384
diff changeset
102
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
103 return parent;
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
104 }
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
105
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
106
375
e58f5f74748e create foundation
sugi
parents:
diff changeset
107 public static void main(String[] args) {
e58f5f74748e create foundation
sugi
parents:
diff changeset
108 launch(args);
e58f5f74748e create foundation
sugi
parents:
diff changeset
109 }
377
ca093d55a886 Aquarium for javaFX worked But Only one Node.
sugi
parents: 375
diff changeset
110
375
e58f5f74748e create foundation
sugi
parents:
diff changeset
111 }