From 73f349ae0b8c61bb0ead7a597006126ba400b588 Mon Sep 17 00:00:00 2001 From: ngaud Date: Tue, 2 May 2017 17:01:02 +0200 Subject: [PATCH] Converting controller from java into sarl --- .../fireworks/gui/FXMLViewerController.java | 176 ---------------- .../fireworks/gui/FXMLViewerController.sarl | 192 ++++++++++++++++++ 2 files changed, 192 insertions(+), 176 deletions(-) delete mode 100644 src/main/sarl/io/sarl/demos/fireworks/gui/FXMLViewerController.java create mode 100644 src/main/sarl/io/sarl/demos/fireworks/gui/FXMLViewerController.sarl diff --git a/src/main/sarl/io/sarl/demos/fireworks/gui/FXMLViewerController.java b/src/main/sarl/io/sarl/demos/fireworks/gui/FXMLViewerController.java deleted file mode 100644 index 19b8ab6..0000000 --- a/src/main/sarl/io/sarl/demos/fireworks/gui/FXMLViewerController.java +++ /dev/null @@ -1,176 +0,0 @@ -package io.sarl.demos.fireworks.gui; - -import java.util.UUID; - -import io.sarl.demos.fireworks.Firework; -import io.sarl.demos.fireworks.Positions; -import io.sarl.demos.fireworks.events.CreateArea; -import io.sarl.demos.fireworks.events.Exit; -import io.sarl.demos.fireworks.events.Freeze; -import io.sarl.demos.fireworks.events.SetupSettings; -import io.sarl.lang.core.Event; -import io.sarl.lang.core.EventListener; -import io.sarl.util.OpenEventSpace; -import javafx.animation.PauseTransition; -import javafx.application.Platform; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; -import javafx.event.ActionEvent; -import javafx.fxml.FXML; -import javafx.scene.canvas.Canvas; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.ScrollBar; -import javafx.util.Duration; - -public class FXMLViewerController implements EventListener { - - private OpenEventSpace space; - private final UUID id = UUID.randomUUID(); - - private boolean launched = false; - private boolean areaCreated = false; - - @FXML private Canvas draw_zone; - - @FXML private Label gravity_display; - @FXML private Label rocket_quantity_display; - @FXML private Label fire_quantity_display; - - @FXML private ScrollBar gravity_input; - @FXML private ScrollBar rocket_quantity_input; - @FXML private ScrollBar fire_quantity_input; - - @FXML private Button setup_button; - @FXML private Button launch_button; - @FXML private Button stop_button; - - public void cleanExit(){ - if (this.space != null) - this.space.emit(new Exit()); - } - - public void setGUISpace(OpenEventSpace space) { - this.space= space; - this.space.register(this); - } - - public double getGravity() { - return gravity_input.getValue(); - } - - public int getRocketQuantity() { - return (int) rocket_quantity_input.getValue(); - } - - public int getFireQuantity() { - return (int) fire_quantity_input.getValue(); - } - - public void listenAndDraw(Positions grid){ - GraphicsContext gc = draw_zone.getGraphicsContext2D(); - PauseTransition wait = new PauseTransition(Duration.seconds(0.03)); - wait.setOnFinished((e) -> { - try { - gc.clearRect(0, 0, draw_zone.getWidth(), draw_zone.getHeight()); - grid.getRockets().values().stream().filter(rocket->!rocket.getHidden()).forEach(rocket->{ - gc.setFill(rocket.getColor()); - gc.fillOval(rocket.getPosition().get(0), rocket.getPosition().get(1), 10, 10); - }); - grid.getFire().values().forEach(fire->{ - gc.setFill(fire.getColor()); - fire.getPositions().forEach(pos->{ - gc.fillOval(pos.get(0), pos.get(1), 5, 5); - }); - }); - } catch (Exception exception) {} - wait.playFromStart(); - }); - wait.play(); - } - - @FXML public void exitApplication(ActionEvent event) { - space.emit(new Exit()); - Platform.exit(); - } - - @FXML protected void actionSetup(){ - SetupSettings event = new SetupSettings( - this.getRocketQuantity(), - this.getFireQuantity(), - this.getGravity(), - this.draw_zone.getWidth()); - if (!launched){ - launch_button.setDisable(false); - Firework.main(this); - launched = true; - areaCreated = false; - } - this.space.emit(event); - } - - @FXML protected void actionLaunch(){ - launch_button.setDisable(true); - stop_button.setDisable(false); - setup_button.setDisable(true); - if (!areaCreated){ - this.space.emit(new CreateArea()); - this.areaCreated = true; - } else { - this.space.emit(new Freeze(false)); - } - } - - @FXML protected void actionStop(){ - stop_button.setDisable(true); - launch_button.setDisable(false); - setup_button.setDisable(false); - this.space.emit(new Freeze(true)); - } - @FXML protected void actionGravityDisplay(){ - gravity_input.valueProperty().addListener(new ChangeListener() { - public void changed(ObservableValue ov, - Number old_val, Number new_val){ - gravity_display.setText(String.format("%.1f", gravity_input.getValue())); - } - }); - } - - @FXML protected void actionRocketQuantityDisplay(){ - rocket_quantity_input.valueProperty().addListener(new ChangeListener() { - public void changed(ObservableValue ov, - Number old_val, Number new_val){ - rocket_quantity_display.setText(String.format("%.0f", rocket_quantity_input.getValue())); - } - }); - - } - - @FXML protected void actionFireQuantityDisplay(){ - fire_quantity_input.valueProperty().addListener(new ChangeListener() { - public void changed(ObservableValue ov, - Number old_val, Number new_val){ - fire_quantity_display.setText(String.format("%.0f", fire_quantity_input.getValue())); - } - }); - - } - - @Override - public UUID getID() { - // TODO Auto-generated method stub - - return this.id; - } - - @Override - public void receiveEvent(Event event) { - /* - if (event instanceof TestEvent){ - System.out.println("Guy recieved an event " + ((TestEvent) event).message); - this.space.emit(new TestEventHack()); - } - */ - } -} diff --git a/src/main/sarl/io/sarl/demos/fireworks/gui/FXMLViewerController.sarl b/src/main/sarl/io/sarl/demos/fireworks/gui/FXMLViewerController.sarl new file mode 100644 index 0000000..edcbb7a --- /dev/null +++ b/src/main/sarl/io/sarl/demos/fireworks/gui/FXMLViewerController.sarl @@ -0,0 +1,192 @@ +package io.sarl.demos.fireworks.gui; + +import java.util.UUID; + +import io.sarl.demos.fireworks.Firework; +import io.sarl.demos.fireworks.Positions; +import io.sarl.demos.fireworks.events.CreateArea; +import io.sarl.demos.fireworks.events.Exit; +import io.sarl.demos.fireworks.events.Freeze; +import io.sarl.demos.fireworks.events.SetupSettings; +import io.sarl.lang.core.Event; +import io.sarl.lang.core.EventListener; +import io.sarl.util.OpenEventSpace; +import javafx.animation.PauseTransition; +import javafx.application.Platform; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.^event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.canvas.Canvas; +import javafx.scene.canvas.GraphicsContext; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.ScrollBar; +import javafx.util.Duration; + +class FXMLViewerController implements EventListener { + + private var ^space : OpenEventSpace; + private val id : UUID = UUID.randomUUID(); + + private var launched : boolean = false; + private var areaCreated : boolean = false; + + @FXML + private var draw_zone : Canvas; + + @FXML + private var gravity_display : Label; + @FXML + private var rocket_quantity_display : Label; + @FXML + private var fire_quantity_display : Label; + + @FXML + private var gravity_input : ScrollBar; + @FXML + private var rocket_quantity_input : ScrollBar; + @FXML + private var fire_quantity_input : ScrollBar; + + @FXML + private var setup_button : Button; + @FXML + private var launch_button : Button; + @FXML + private var stop_button : Button; + + public def cleanExit() { + if (this.^space !== null) + this.^space.emit(new Exit()); + } + + public def setGUISpace(ispace : OpenEventSpace) { + this.^space = ispace; + this.^space.register(this); + } + + public def getGravity() : double { + return gravity_input.getValue(); + } + + public def getRocketQuantity() : int { + return rocket_quantity_input.getValue() as int; + } + + public def getFireQuantity() : int { + return fire_quantity_input.getValue() as int; + } + + public def listenAndDraw(grid : Positions) { + var gc : GraphicsContext = draw_zone.getGraphicsContext2D(); + var wait : PauseTransition = new PauseTransition(Duration.seconds(0.03)); + + wait.setOnFinished [ e | + try { + gc.clearRect(0, 0, draw_zone.getWidth(), draw_zone.getHeight()); + grid.getRockets().values().stream().filter(rocket|!rocket.getHidden()).forEach(rocket | + { + gc.setFill(rocket.getColor()); + gc.fillOval(rocket.getPosition().get(0), rocket.getPosition().get(1), 10, 10); + }); + + grid.getFire().values().forEach(fire | + { + gc.setFill(fire.getColor()); + fire.getPositions().forEach(pos | + { + gc.fillOval(pos.get(0), pos.get(1), 5, 5); + }); + }); + } catch (exception : Exception) { + } + wait.playFromStart(); + ]; + wait.play(); + } + + @FXML + public def exitApplication(ievent : ActionEvent) { + ^space.emit(new Exit()); + Platform.exit(); + } + + @FXML protected def actionSetup() { + var ^event : SetupSettings = new SetupSettings(this.getRocketQuantity(), this.getFireQuantity(), + this.getGravity(), this.draw_zone.getWidth()); + if (!launched) { + launch_button.setDisable(false); + Firework.main(this); + launched = true; + areaCreated = false; + } + this.^space.emit(^event); + } + + @FXML + protected def actionLaunch() { + launch_button.setDisable(true); + stop_button.setDisable(false); + setup_button.setDisable(true); + if (!areaCreated) { + this.^space.emit(new CreateArea()); + this.areaCreated = true; + } else { + this.^space.emit(new Freeze(false)); + } + } + + @FXML + protected def actionStop() { + stop_button.setDisable(true); + launch_button.setDisable(false); + setup_button.setDisable(false); + this.^space.emit(new Freeze(true)); + } + + @FXML + protected def actionGravityDisplay() { + gravity_input.valueProperty().addListener(new ChangeListener() { + public def changed(ov : ObservableValue, old_val : Number, new_val : Number) { + gravity_display.setText(String.format("%.1f", gravity_input.getValue())); + } + }); + } + + @FXML + protected def actionRocketQuantityDisplay() { + rocket_quantity_input.valueProperty().addListener(new ChangeListener() { + public def changed(ov : ObservableValue, old_val : Number, new_val : Number) { + rocket_quantity_display.setText(String.format("%.0f", rocket_quantity_input.getValue())); + } + }); + + } + + @FXML + protected def actionFireQuantityDisplay() { + fire_quantity_input.valueProperty().addListener(new ChangeListener() { + public def changed(ov : ObservableValue, old_val : Number, new_val : Number) { + fire_quantity_display.setText(String.format("%.0f", fire_quantity_input.getValue())); + } + }); + + } + + @Override + public def getID() : UUID { + // TODO Auto-generated method stub + return this.id; + } + + @Override + public def receiveEvent(^event : Event) { + /* + * if (event instanceof TestEvent){ + * System.out.println("Guy recieved an event " + ((TestEvent) event).message); + * this.space.emit(new TestEventHack()); + * } + */ + } +}