# HG changeset patch # User e095732 # Date 1359300137 -32400 # Node ID 50d77513d52eb3a654d2861c4087f2698f2077cd # Parent 4930f8daf49d816c9926c3f4841b2ec07f93bb0c Platform runLater must use for handling instance from other thread (Not on FX application thread ) diff -r 4930f8daf49d -r 50d77513d52e src/alice/test/topology/aquarium/fx/AddObject.java --- a/src/alice/test/topology/aquarium/fx/AddObject.java Sat Jan 26 20:34:13 2013 +0900 +++ b/src/alice/test/topology/aquarium/fx/AddObject.java Mon Jan 28 00:22:17 2013 +0900 @@ -1,14 +1,15 @@ package alice.test.topology.aquarium.fx; -import example.SetTranslation; +import java.util.Random; import alice.codesegment.CodeSegment; import alice.datasegment.CommandType; import alice.datasegment.Receiver; +import javafx.application.Platform; import javafx.collections.ObservableList; import javafx.scene.Node; import javafx.scene.paint.Color; -import javafx.scene.shape.Rectangle; +import javafx.scene.shape.RectangleBuilder; public class AddObject extends CodeSegment{ @@ -17,37 +18,37 @@ public AddObject(Aquarium aqua){ list = aqua.getList(); - data.setKey("local", "objlist"); + data.setKey("objCnt"); } @Override public void run() { - ObjectList objlist = data.asClass(ObjectList.class); - list.addAll(objlist.list); - + Platform.runLater(new Runnable() { + public void run() { + int num = data.asInteger(); + double size = 75; + Color color = Color.RED; + Random rnd = new Random(); + ObjectList obj = new ObjectList(); + for (int i = 0;i < num; i++){ + obj.list.add(RectangleBuilder.create() + .width(size).height(size) + .fill(color.deriveColor(0.0, 1.0, 1.0, 1.0)) + .translateX(rnd.nextInt(600)) + .translateY(rnd.nextInt(600)) + .translateZ(0) + .id("FISH"+i) + .build()); + } + for (int i = 0;i < num; i++){ + new SetTranslation(obj.list.get(i), "FISH"+i); + list.add(obj.list.get(i)); + } + System.out.println("Create OBJ " + num); + System.out.println(list); + } + }); } - public void test(Aquarium aqua){ - ObservableList list = aqua.getList(); - final Rectangle rect = new Rectangle(0, 0, 50, 50); - rect.setArcHeight(20); - rect.setArcWidth(20); - rect.setFill(Color.DODGERBLUE); - - final Rectangle rect1 = new Rectangle(0, 0, 50, 50); - rect1.setArcHeight(20); - rect1.setArcWidth(20); - rect1.setFill(Color.GREEN); - - rect1.setTranslateX(500); - rect1.setTranslateY(500); - new SetTranslation(rect, "image2"); // set - ObjectList objlist = new ObjectList(); - objlist.list.add(rect); - objlist.list.add(rect1); - - list.addAll(objlist.list); - System.out.println(list); - } } diff -r 4930f8daf49d -r 50d77513d52e src/alice/test/topology/aquarium/fx/Aquarium.java --- a/src/alice/test/topology/aquarium/fx/Aquarium.java Sat Jan 26 20:34:13 2013 +0900 +++ b/src/alice/test/topology/aquarium/fx/Aquarium.java Mon Jan 28 00:22:17 2013 +0900 @@ -2,7 +2,6 @@ import java.io.IOException; -import example.SetTranslation; import javafx.application.Application; import javafx.collections.ObservableList; @@ -19,23 +18,19 @@ public class Aquarium extends Application { private ObservableList list; + public AnchorPane root; @Override public void start(Stage primaryStage) throws IOException { - FXMLLoader loader = new FXMLLoader(); - AnchorPane root = loader.load(getClass().getResource("aquarium.fxml")); + root = FXMLLoader.load(getClass().getResource("aquarium.fxml")); // AquariumController cont = (AquariumController) loader.getController(); get Controller instance - System.out.println(root.getChildren().get(1).getId()); ImageView iv = (ImageView) root.getChildren().get(3); Image img = new Image("fish.jpg"); iv.setImage(img); list = root.getChildren(); - System.out.println(list.toString()); new SetTranslation(iv, "image1"); Scene scene = new Scene(root); - new AddObject(this); - primaryStage.setScene(scene); primaryStage.setResizable(false); primaryStage.show(); @@ -44,6 +39,8 @@ System.exit(0); } }); + + new AddObject(this); } public static void main(String[] args) { diff -r 4930f8daf49d -r 50d77513d52e src/alice/test/topology/aquarium/fx/AquariumController.java --- a/src/alice/test/topology/aquarium/fx/AquariumController.java Sat Jan 26 20:34:13 2013 +0900 +++ b/src/alice/test/topology/aquarium/fx/AquariumController.java Mon Jan 28 00:22:17 2013 +0900 @@ -1,6 +1,5 @@ package alice.test.topology.aquarium.fx; -import example.UpdateData; import javafx.fxml.FXML; import javafx.scene.control.TextField; import javafx.scene.image.ImageView; @@ -15,18 +14,7 @@ @FXML private ImageView image; public AquariumController(){ - System.out.println("run app"); - - } - - @FXML - public void PressedKey1(KeyEvent ke){ - - } - - @FXML - public void PressedKey2(KeyEvent ke){ - + System.out.println("run JavaFX"); } @FXML @@ -34,23 +22,15 @@ switch (ke.getCode()){ case RIGHT: new UpdateData("image1", new FishData(image.getTranslateX()+10,image.getTranslateY(),image.getTranslateZ())).execute(); - new UpdateData("image2", new FishData(image.getTranslateX()+10,image.getTranslateY(),image.getTranslateZ())).execute(); - // rect1.setTranslateX(rect1.getTranslateX()+10.0); break; case LEFT: new UpdateData("image1", new FishData(image.getTranslateX()-10,image.getTranslateY(),image.getTranslateZ())).execute(); - new UpdateData("image2", new FishData(image.getTranslateX()-10,image.getTranslateY(),image.getTranslateZ())).execute(); - // rect1.setTranslateX(rect1.getTranslateX()-10.0); break; case UP: new UpdateData("image1", new FishData(image.getTranslateX(),image.getTranslateY()-10,image.getTranslateZ())).execute(); - new UpdateData("image2", new FishData(image.getTranslateX(),image.getTranslateY()-10,image.getTranslateZ())).execute(); - // rect1.setTranslateY(rect1.getTranslateY()-10.0); break; case DOWN: new UpdateData("image1", new FishData(image.getTranslateX(),image.getTranslateY()+10,image.getTranslateZ())).execute(); - new UpdateData("image2", new FishData(image.getTranslateX(),image.getTranslateY()+10,image.getTranslateZ())).execute(); - // rect1.setTranslateY(rect1.getTranslateY()+10.0); break; default: break; diff -r 4930f8daf49d -r 50d77513d52e src/alice/test/topology/aquarium/fx/SetTranslation.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/topology/aquarium/fx/SetTranslation.java Mon Jan 28 00:22:17 2013 +0900 @@ -0,0 +1,54 @@ +package alice.test.topology.aquarium.fx; + +import javafx.scene.image.ImageView; +import javafx.scene.shape.Rectangle; +import alice.codesegment.CodeSegment; +import alice.datasegment.CommandType; +import alice.datasegment.Receiver; + +public class SetTranslation extends CodeSegment { + + private Receiver data = ids.create(CommandType.PEEK); + private ImageView image; + private Rectangle rect; + + public SetTranslation(ImageView image, String key){ + this.image = image; + data.setKey(key); + } + + public SetTranslation(ImageView image, String key, int index) { + this.image = image; + data.setKey(key, index); + } + + public SetTranslation(Rectangle rect, String key){ + this.rect = rect; + data.setKey(key); + } + + public SetTranslation(Rectangle rect, String key, int index) { + this.rect = rect; + data.setKey(key, index); + } + + @Override + public void run() { + FishData fd = data.asClass(FishData.class); + if (image!=null){ + image.setTranslateX(fd.x); + image.setTranslateY(fd.y); + image.setTranslateZ(fd.z); + + new SetTranslation(image, data.key, data.index); + } else if (rect != null){ + rect.setTranslateX(fd.x); + rect.setTranslateY(fd.y); + rect.setTranslateZ(fd.z); + + new SetTranslation(rect, data.key, data.index); + } + + } + +} diff -r 4930f8daf49d -r 50d77513d52e src/alice/test/topology/aquarium/fx/UpdateData.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/alice/test/topology/aquarium/fx/UpdateData.java Mon Jan 28 00:22:17 2013 +0900 @@ -0,0 +1,19 @@ +package alice.test.topology.aquarium.fx; + +import alice.codesegment.CodeSegment; + +public class UpdateData extends CodeSegment { + + private String key; + private FishData fd; + + public UpdateData(String key, FishData fd){ + this.key = key; + this.fd = fd; + } + + @Override + public void run() { + ods.update("local", this.key, fd); + } +}