view src/alice/test/topology/aquarium/fx/AddObject.java @ 4:50d77513d52e

Platform runLater must use for handling instance from other thread (Not on FX application thread )
author e095732
date Mon, 28 Jan 2013 00:22:17 +0900
parents 4930f8daf49d
children ae0a39622a58
line wrap: on
line source

package alice.test.topology.aquarium.fx;

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.RectangleBuilder;

public class AddObject extends CodeSegment{
	
	private Receiver data = ids.create(CommandType.PEEK);
	private ObservableList<Node> list;
	
	public AddObject(Aquarium aqua){
		list = aqua.getList();
		data.setKey("objCnt");
	}

	@Override
	public void run() {
		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);
			}
		});
	}
	
}