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 5e3d6748..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); } /** @@ -221,6 +220,7 @@ public class ViewManager { .getController(); keyBindingDialogController.setGameClient(this.gameClient); keyBindingDialog.show(); + decorator.requestFocus(); Sounds.playButtonClick(); } } diff --git a/src/main/java/seng302/visualiser/controllers/dialogs/KeyBindingDialogController.java b/src/main/java/seng302/visualiser/controllers/dialogs/KeyBindingDialogController.java index c650bc59..f64edd3c 100644 --- a/src/main/java/seng302/visualiser/controllers/dialogs/KeyBindingDialogController.java +++ b/src/main/java/seng302/visualiser/controllers/dialogs/KeyBindingDialogController.java @@ -71,8 +71,7 @@ public class KeyBindingDialogController implements Initializable { buttons = new ArrayList<>(); Collections.addAll(buttons, zoomInbtn, zoomOutBtn, vmgBtn, sailInOutBtn, tackGybeBtn, upwindBtn, downwindBtn, - viewButton, - rightButton, leftButton, forwardButton, backwardButton); + viewButton, rightButton, leftButton, forwardButton, backwardButton); bindButtonWithAction(); loadKeyBind(); @@ -88,12 +87,10 @@ public class KeyBindingDialogController implements Initializable { resetBtn.setOnMouseClicked(event -> { gameKeyBind.setToDefault(); loadKeyBind(); + showSnackBar("All keys reset!", false); }); closeLabel.setOnMouseClicked(event -> ViewManager.getInstance().closeKeyBindingDialog()); - - keyBindingDialogHeader.setFocusTraversable(true); - keyBindingDialogHeader.requestFocus(); } /** @@ -161,6 +158,7 @@ public class KeyBindingDialogController implements Initializable { + "-fx-background-color: -fx-pp-front-color; " + "-fx-text-fill: -fx-pp-theme-color; " + "-fx-font-size: 13;"); + keyBindingDialogHeader.requestFocus(); } /** 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/RaceView.fxml b/src/main/resources/views/RaceView.fxml index 7e53d81b..70c8399b 100644 --- a/src/main/resources/views/RaceView.fxml +++ b/src/main/resources/views/RaceView.fxml @@ -16,7 +16,6 @@ - @@ -26,7 +25,7 @@ @@ -128,15 +127,16 @@ + focusTraversable="false" maxHeight="-Infinity" + maxWidth="1.7976931348623157E308" minHeight="-Infinity" + minWidth="-Infinity" prefHeight="35.0" text="SEND" + GridPane.columnIndex="1"> - + 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 @@ + - - + +