From d56468e4aa54866e98c05ece90099d8f4b996a47 Mon Sep 17 00:00:00 2001 From: Zhi You Tan Date: Wed, 27 Sep 2017 00:38:42 +1300 Subject: [PATCH] - Fixed snackbar not showing on race view - Added close label on server creation dialog #story[1273] --- .../controllers/ServerListController.java | 32 +++++++++++++++++-- .../visualiser/controllers/ViewManager.java | 3 +- .../dialogs/KeyBindingDialogController.java | 1 + .../dialogs/ServerCreationController.java | 18 ++++++++++- .../resources/css/dialogs/ServerCreation.css | 10 ++++++ .../views/dialogs/ServerCreationDialog.fxml | 14 +++++--- 6 files changed, 69 insertions(+), 9 deletions(-) diff --git a/src/main/java/seng302/visualiser/controllers/ServerListController.java b/src/main/java/seng302/visualiser/controllers/ServerListController.java index c6dc4325..db2de0da 100644 --- a/src/main/java/seng302/visualiser/controllers/ServerListController.java +++ b/src/main/java/seng302/visualiser/controllers/ServerListController.java @@ -7,6 +7,7 @@ import com.jfoenix.controls.JFXTextField; import com.jfoenix.validation.RequiredFieldValidator; import java.io.IOException; import java.net.URL; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.ResourceBundle; @@ -27,6 +28,7 @@ import seng302.utilities.Sounds; import seng302.visualiser.ServerListener; import seng302.visualiser.ServerListenerDelegate; import seng302.visualiser.controllers.cells.ServerCell; +import seng302.visualiser.controllers.dialogs.ServerCreationController; import seng302.visualiser.validators.HostNameFieldValidator; import seng302.visualiser.validators.NumberRangeValidator; import seng302.visualiser.validators.ValidationTools; @@ -55,6 +57,14 @@ public class ServerListController implements Initializable, ServerListenerDelega private Label noServersFound; private Logger logger = LoggerFactory.getLogger(ServerListController.class); + private JFXDialog serverCreationDialog; + private List serverCreationDialogListeners = new ArrayList<>(); + + @FunctionalInterface + public interface ServerCreationDialogListener { + + void notifyClosure(); + } // TODO: 12/09/17 ajm412: break this method down, its way too long. @Override @@ -115,6 +125,8 @@ public class ServerListController implements Initializable, ServerListenerDelega serverListHostButton.setOnAction(action -> { showServerCreationDialog(); }); + + addServerCreationDialogListener(this::closeServerCreationDialog); } /** @@ -125,9 +137,11 @@ public class ServerListController implements Initializable, ServerListenerDelega FXMLLoader dialogContent = new FXMLLoader(getClass().getResource( "/views/dialogs/ServerCreationDialog.fxml")); try { - JFXDialog dialog = new JFXDialog(serverListMainStackPane, dialogContent.load(), + serverCreationDialog = new JFXDialog(serverListMainStackPane, dialogContent.load(), DialogTransition.CENTER); - dialog.show(); + ServerCreationController serverCreationController = dialogContent.getController(); + serverCreationController.setListener(serverCreationDialogListeners); + serverCreationDialog.show(); Sounds.playButtonClick(); } catch (IOException e) { logger.warn("Could not create Server Creation Dialog."); @@ -135,6 +149,10 @@ public class ServerListController implements Initializable, ServerListenerDelega }); } + private void closeServerCreationDialog() { + serverCreationDialog.close(); + } + /** * Validates the connection and attempts to connect to a given hostname and port number. */ @@ -203,4 +221,14 @@ public class ServerListController implements Initializable, ServerListenerDelega public void serverDetected(ServerDescription serverDescription, List servers) { Platform.runLater(() -> refreshServers(servers)); } + + private void addServerCreationDialogListener( + ServerCreationDialogListener serverCreationDialogListener) { + serverCreationDialogListeners.add(serverCreationDialogListener); + } + + private void removeServerCreationDialogListener( + ServerCreationDialogListener serverCreationDialogListener) { + serverCreationDialogListeners.remove(serverCreationDialogListener); + } } diff --git a/src/main/java/seng302/visualiser/controllers/ViewManager.java b/src/main/java/seng302/visualiser/controllers/ViewManager.java index 2f843a4c..5def03dd 100644 --- a/src/main/java/seng302/visualiser/controllers/ViewManager.java +++ b/src/main/java/seng302/visualiser/controllers/ViewManager.java @@ -102,8 +102,6 @@ public class ViewManager { gameClient.stopGame(); System.exit(0); }); - - jfxSnackbar = new JFXSnackbar(decorator); } /** @@ -188,6 +186,7 @@ public class ViewManager { } }); + jfxSnackbar = new JFXSnackbar(decorator); } /** diff --git a/src/main/java/seng302/visualiser/controllers/dialogs/KeyBindingDialogController.java b/src/main/java/seng302/visualiser/controllers/dialogs/KeyBindingDialogController.java index 1f638c5a..f64edd3c 100644 --- a/src/main/java/seng302/visualiser/controllers/dialogs/KeyBindingDialogController.java +++ b/src/main/java/seng302/visualiser/controllers/dialogs/KeyBindingDialogController.java @@ -87,6 +87,7 @@ public class KeyBindingDialogController implements Initializable { resetBtn.setOnMouseClicked(event -> { gameKeyBind.setToDefault(); loadKeyBind(); + showSnackBar("All keys reset!", false); }); closeLabel.setOnMouseClicked(event -> ViewManager.getInstance().closeKeyBindingDialog()); diff --git a/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java b/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java index df424567..f525fb5c 100644 --- a/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java +++ b/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java @@ -5,14 +5,15 @@ import com.jfoenix.controls.JFXSlider; import com.jfoenix.controls.JFXTextField; import com.jfoenix.validation.RequiredFieldValidator; import java.net.URL; +import java.util.List; import java.util.ResourceBundle; -import javafx.application.Platform; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import seng302.gameServer.ServerDescription; import seng302.utilities.Sounds; +import seng302.visualiser.controllers.ServerListController.ServerCreationDialogListener; import seng302.visualiser.controllers.ViewManager; import seng302.visualiser.validators.FieldLengthValidator; import seng302.visualiser.validators.ValidationTools; @@ -28,8 +29,12 @@ public class ServerCreationController implements Initializable { private Label maxPlayersLabel; @FXML private JFXButton submitBtn; + @FXML + private Label closeLabel; //---------FXML END---------// + private List serverCreationDialogListeners; + public void initialize(URL location, ResourceBundle resources) { updateMaxPlayerLabel(); maxPlayersSlider.valueProperty().addListener((observable, oldValue, newValue) -> { @@ -49,6 +54,7 @@ public class ServerCreationController implements Initializable { validateServerSettings(); }); + closeLabel.setOnMouseClicked(event -> notifyListeners()); } /** @@ -87,4 +93,14 @@ public class ServerCreationController implements Initializable { Sounds.playHoverSound(); } + public void setListener(List serverCreationDialogListeners) { + this.serverCreationDialogListeners = serverCreationDialogListeners; + } + + public void notifyListeners() { + for (ServerCreationDialogListener serverCreationDialogListener : serverCreationDialogListeners) { + serverCreationDialogListener.notifyClosure(); + } + } + } diff --git a/src/main/resources/css/dialogs/ServerCreation.css b/src/main/resources/css/dialogs/ServerCreation.css index ddbb3e1e..3bc2992c 100644 --- a/src/main/resources/css/dialogs/ServerCreation.css +++ b/src/main/resources/css/dialogs/ServerCreation.css @@ -45,3 +45,13 @@ .maxPlayers { -fx-font-size: 13px; } + +#closeLabel { + -fx-font-size: 30; + -fx-text-fill: -fx-pp-dark-text-color; +} + +#closeLabel:hover { + -fx-text-fill: red; + -fx-font-size: 33px; +} diff --git a/src/main/resources/views/dialogs/ServerCreationDialog.fxml b/src/main/resources/views/dialogs/ServerCreationDialog.fxml index 3b995aa8..180778a6 100644 --- a/src/main/resources/views/dialogs/ServerCreationDialog.fxml +++ b/src/main/resources/views/dialogs/ServerCreationDialog.fxml @@ -4,14 +4,18 @@ - + - + + @@ -59,11 +63,13 @@ +