From af2ef834be292c871fb1300217a5427fcbf62808 Mon Sep 17 00:00:00 2001
From: BrunoDatoMeneses <bruno.dato.meneses@gmail.com>
Date: Thu, 19 Sep 2019 17:56:05 +0200
Subject: [PATCH] ADD: try fix UI freezing adding RunLaterHelper

---
 .../randomantsMultiUi/AntExampleMutliUI.java    | 10 ++++++++++
 .../AntHillExampleMultiUI.java                  |  6 ++++--
 .../AntsLaunchExampleMultiUI.java               | 17 ++---------------
 .../fr/irit/smac/amak/ui/AmasMultiUIWindow.java |  7 +++----
 AMAKFX/src/fr/irit/smac/amak/ui/VUIMulti.java   |  4 +++-
 AMOEBAonAMAK/src/experiments/AdvancedMain.java  | 11 +++++++++--
 6 files changed, 31 insertions(+), 24 deletions(-)

diff --git a/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntExampleMutliUI.java b/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntExampleMutliUI.java
index a8b731ca..6a020438 100644
--- a/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntExampleMutliUI.java
+++ b/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntExampleMutliUI.java
@@ -1,6 +1,7 @@
 package fr.irit.smac.amak.examples.randomantsMultiUi;
 
 import fr.irit.smac.amak.Agent;
+import fr.irit.smac.amak.tools.RunLaterHelper;
 import fr.irit.smac.amak.ui.AmasMultiUIWindow;
 import fr.irit.smac.amak.ui.VUI;
 import fr.irit.smac.amak.ui.drawables.DrawableImage;
@@ -46,8 +47,10 @@ public class AntExampleMutliUI extends Agent<AntHillExampleMultiUI, WorldExample
 
 	@Override
 	protected void onRenderingInitialization() {
+		RunLaterHelper.runLater(() -> {
 		image =  getAmas().getVUIMulti().createAndAddImage(dx, dy, "file:resources/ant.png");
 		image.setName("Ant "+getId());
+		});
 	}
 
 	/**
@@ -81,6 +84,7 @@ public class AntExampleMutliUI extends Agent<AntHillExampleMultiUI, WorldExample
 
 	@Override
 	public void onUpdateRender() {
+		RunLaterHelper.runLater(() -> {
 		image.move(dx, dy);
 		image.setAngle(angle);
 		image.setInfo("Ant "+getId()+"\nPosition "+dx+" "+dy+"\nAngle "+angle);
@@ -88,5 +92,11 @@ public class AntExampleMutliUI extends Agent<AntHillExampleMultiUI, WorldExample
 			image.setFilename("file:Resources/ant_dead.png");
 			image.setInfo("Ant "+getId()+"\nPosition "+dx+" "+dy+"\nAngle "+angle+"\nDead");
 		}
+		
+		
+		});
 	}
 }
+
+
+
diff --git a/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntHillExampleMultiUI.java b/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntHillExampleMultiUI.java
index 344561af..7ecf3dc8 100644
--- a/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntHillExampleMultiUI.java
+++ b/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntHillExampleMultiUI.java
@@ -18,8 +18,10 @@ public class AntHillExampleMultiUI extends Amas<WorldExampleMultiUI> {
 
 	@Override
 	protected void onRenderingInitialization() {
-		vuiMulti.createAndAddImage(20, 20, "file:Resources/ant.png").setFixed().setLayer(10).setShowInExplorer(false);
-		antsCountLabel = (DrawableString) vuiMulti.createAndAddString(45, 25, "Ants count").setFixed().setLayer(10).setShowInExplorer(false);
+		RunLaterHelper.runLater(() -> {
+			vuiMulti.createAndAddImage(20, 20, "file:Resources/ant.png").setFixed().setLayer(10).setShowInExplorer(false);
+			antsCountLabel = (DrawableString) vuiMulti.createAndAddString(45, 25, "Ants count").setFixed().setLayer(10).setShowInExplorer(false);
+		});
 	}
 
 	@Override
diff --git a/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntsLaunchExampleMultiUI.java b/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntsLaunchExampleMultiUI.java
index 600fdcd0..9998aed5 100644
--- a/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntsLaunchExampleMultiUI.java
+++ b/AMAKFX/src/fr/irit/smac/amak/examples/randomantsMultiUi/AntsLaunchExampleMultiUI.java
@@ -44,27 +44,14 @@ public class AntsLaunchExampleMultiUI extends Application{
 		AntHillExampleMultiUI ants = new AntHillExampleMultiUI(window, new VUIMulti("Ants VUI 1"), env);
 		//new AntHillExampleMultiUI(window2, VUIMulti.get("Ants VUI 2"), env2);
 		
-		Button btn = new Button();
-        btn.setText("GO");
-        btn.setOnAction(new EventHandler<ActionEvent>() {
-            @Override
-            public void handle(ActionEvent event) {
-            	for(int i=0;i<10000;i++) {
-        			System.out.println(i);
-        			ants.cycle();
-        		}
-            }
-        });
-        
-        window.addToolbar(btn);
+		
 		
 		
         for(int i=0;i<10000;i++) {
 			System.out.println(i);
-			ants.getScheduler().step();
+			ants.cycle();
 		}
 		
-		
 			
 	}
 	
diff --git a/AMAKFX/src/fr/irit/smac/amak/ui/AmasMultiUIWindow.java b/AMAKFX/src/fr/irit/smac/amak/ui/AmasMultiUIWindow.java
index b96f4c45..c9519a5c 100644
--- a/AMAKFX/src/fr/irit/smac/amak/ui/AmasMultiUIWindow.java
+++ b/AMAKFX/src/fr/irit/smac/amak/ui/AmasMultiUIWindow.java
@@ -75,7 +75,7 @@ public class AmasMultiUIWindow extends Stage{
 	 */
 	public AmasMultiUIWindow(String title) {
 
-			
+		RunLaterHelper.runLater(() -> {	
 			
 		VBox root = new VBox();
 		
@@ -123,7 +123,7 @@ public class AmasMultiUIWindow extends Stage{
 
 		this.show();
 			
-
+		});	
 
 	}
 
@@ -232,8 +232,7 @@ public class AmasMultiUIWindow extends Stage{
 	 */
 	public void addTabbedPanel(String title, Node panel) {
 		Tab t = new DraggableTab(title, panel);
-		tabbedPanel.getTabs().add(t);
-		//RunLaterHelper.runLater(() -> tabbedPanel.getTabs().add(t));
+		RunLaterHelper.runLater(() -> tabbedPanel.getTabs().add(t));
 	}
 	
 	/**
diff --git a/AMAKFX/src/fr/irit/smac/amak/ui/VUIMulti.java b/AMAKFX/src/fr/irit/smac/amak/ui/VUIMulti.java
index 5d3a387a..eeeb4862 100644
--- a/AMAKFX/src/fr/irit/smac/amak/ui/VUIMulti.java
+++ b/AMAKFX/src/fr/irit/smac/amak/ui/VUIMulti.java
@@ -146,6 +146,8 @@ public class VUIMulti {
 	 */
 	public VUIMulti(String titleValue) {
 		
+		RunLaterHelper.runLater(() -> {
+		
 		this.title = titleValue;
 		panel = new BorderPane();
 
@@ -241,7 +243,7 @@ public class VUIMulti {
 		toolbar.getItems().add(veButton);
 			
 
-			
+		});	
 		
 	}
 
diff --git a/AMOEBAonAMAK/src/experiments/AdvancedMain.java b/AMOEBAonAMAK/src/experiments/AdvancedMain.java
index b02ccdbd..39be228a 100644
--- a/AMOEBAonAMAK/src/experiments/AdvancedMain.java
+++ b/AMOEBAonAMAK/src/experiments/AdvancedMain.java
@@ -55,7 +55,7 @@ public class AdvancedMain extends Application{
 		Configuration.multiUI = true;
 
 		
-		VUIMulti amoebaVUI = VUIMulti.get("2D");
+		VUIMulti amoebaVUI = new VUIMulti("2D");
 		AmoebaMultiUIWindow amoebaUI = new AmoebaMultiUIWindow("ELLSA", amoebaVUI);
 		
 		// Create an AMOEBA
@@ -93,8 +93,9 @@ public class AdvancedMain extends Application{
 		amoeba.setRenderUpdate(true);
 		long start = System.currentTimeMillis();
 		// We run some learning cycles
-		int nbCycle = 1000;
+		int nbCycle = 100;
 		for (int i = 0; i < nbCycle; ++i) {
+			System.out.println(i);
 			studiedSystem.playOneStep();
 			amoeba.learn(studiedSystem.getOutput());
 		}
@@ -140,6 +141,12 @@ public class AdvancedMain extends Application{
 
 		System.out.println("End main");
 	}
+	
+	@Override
+	public void stop() throws Exception {
+		super.stop();
+		System.exit(0);
+	}
 
 	
 }
-- 
GitLab