From 7e9e96c091bb3cf7f5eb729f7aabb5fba79c3a63 Mon Sep 17 00:00:00 2001 From: Alistair McIntyre Date: Tue, 12 Sep 2017 16:54:40 +1200 Subject: [PATCH] - Added documentation to controllers tags : #story[1245] --- .../controllers/LobbyController.java | 17 ++--- .../controllers/ServerListController.java | 30 ++++----- .../controllers/StartScreenController.java | 65 ++++--------------- .../visualiser/controllers/ViewManager.java | 20 ++++++ .../controllers/cells/PlayerCell.java | 11 +--- .../controllers/cells/ServerCell.java | 24 ++----- .../dialogs/BoatCustomizeController.java | 8 +-- .../dialogs/ServerCreationController.java | 11 ++-- src/main/resources/css/Master.css | 1 + src/main/resources/css/StartScreenView.css | 1 + src/main/resources/views/ServerListView.fxml | 7 +- src/main/resources/views/StartScreenView.fxml | 3 +- .../resources/views/cells/ServerCell.fxml | 4 +- 13 files changed, 82 insertions(+), 120 deletions(-) diff --git a/src/main/java/seng302/visualiser/controllers/LobbyController.java b/src/main/java/seng302/visualiser/controllers/LobbyController.java index 7608b252..19b919a1 100644 --- a/src/main/java/seng302/visualiser/controllers/LobbyController.java +++ b/src/main/java/seng302/visualiser/controllers/LobbyController.java @@ -109,6 +109,9 @@ public class LobbyController implements Initializable { initMapPreview(); } + /** + * + */ private void refreshMapView(){ RaceXMLData raceData = ViewManager.getInstance().getGameClient().getCourseData(); List border = raceData.getCourseLimit(); @@ -122,12 +125,8 @@ public class LobbyController implements Initializable { gameView.updateCourse(marks, corners); } - private void getPlayerColors() { - - } - /** - * + * Initializes a top down preview of the race course map. */ private void initMapPreview() { gameView = new GameView(); @@ -163,7 +162,7 @@ public class LobbyController implements Initializable { } /** - * + * Refreshes the list of players and their boats, as a series of VBox PlayerCell objects. */ private void refreshPlayerList() { playerListVBox.getChildren().clear(); @@ -192,17 +191,11 @@ public class LobbyController implements Initializable { } } - /** - * - */ private void leaveLobby() { ViewManager.getInstance().getGameClient().stopGame(); ViewManager.getInstance().goToStartView(); } - /** - * - */ public void disableReadyButton() { this.beginRaceButton.setDisable(true); this.beginRaceButton.setText("Waiting for host..."); diff --git a/src/main/java/seng302/visualiser/controllers/ServerListController.java b/src/main/java/seng302/visualiser/controllers/ServerListController.java index a38e2c97..3d457bd4 100644 --- a/src/main/java/seng302/visualiser/controllers/ServerListController.java +++ b/src/main/java/seng302/visualiser/controllers/ServerListController.java @@ -18,7 +18,6 @@ import javafx.geometry.Pos; import javafx.scene.control.Label; import javafx.scene.control.ScrollPane; import javafx.scene.input.KeyCode; -import javafx.scene.input.MouseEvent; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import org.slf4j.Logger; @@ -57,10 +56,14 @@ public class ServerListController implements Initializable, ServerListenerDelega private Label noServersFound; private Logger logger = LoggerFactory.getLogger(ServerListController.class); + // TODO: 12/09/17 ajm412: break this method down, its way too long. + @Override public void initialize(URL location, ResourceBundle resources) { serverListVBox.minWidthProperty().bind(serverListScrollPane.widthProperty()); // Set Event Bindings + connectButton.setOnMouseEntered(event -> Sounds.playHoverSound()); + serverListHostButton.setOnMouseEntered(event -> Sounds.playHoverSound()); connectButton.setOnMouseReleased(event -> { attemptToDirectConnect(); Sounds.playButtonClick(); @@ -103,8 +106,8 @@ public class ServerListController implements Initializable, ServerListenerDelega noServersFound.setText("No Servers Found"); noServersFound.setStyle( "-fx-font-size: 30px;" - + "-fx-padding:50px;" - + "-fx-text-fill: -fx-pp-dark-text-color;" + + "-fx-padding:50px;" + + "-fx-text-fill: -fx-pp-dark-text-color;" ); serverListVBox.getChildren().add(noServersFound); @@ -126,7 +129,7 @@ public class ServerListController implements Initializable, ServerListenerDelega } /** - * + * Validates the connection and attempts to connect to a given hostname and port number. */ private void attemptToDirectConnect() { if (validateDirectConnection(serverHostName.getText(), serverPortNumber.getText())) { @@ -135,10 +138,10 @@ public class ServerListController implements Initializable, ServerListenerDelega } /** - * - * @param hostName - * @param portNumber - * @return + * Checks if the hostName and portNumber are valid values to connect to. + * @param hostName host name to check. + * @param portNumber port number to check + * @return boolean value if host and port number are valid values */ private Boolean validateDirectConnection(String hostName, String portNumber) { Boolean hostNameValid = ValidationTools.validateTextField(serverHostName); @@ -148,7 +151,7 @@ public class ServerListController implements Initializable, ServerListenerDelega } /** - * + * Connects the user to a lobby via the Direct Connect form. */ private void DirectConnect() { Sounds.playButtonClick(); @@ -156,8 +159,8 @@ public class ServerListController implements Initializable, ServerListenerDelega } /** - * - * @param servers + * Refreshes the list of available servers. + * @param servers A list of ServerDescription objects showing available servers. */ private void refreshServers(List servers) { serverListVBox.getChildren().clear(); @@ -184,11 +187,6 @@ public class ServerListController implements Initializable, ServerListenerDelega } } - public void playButtonHoverSound(MouseEvent mouseEvent) { - Sounds.playHoverSound(); - } - - @Override public void serverRemoved(List servers) { Platform.runLater(() -> refreshServers(servers)); diff --git a/src/main/java/seng302/visualiser/controllers/StartScreenController.java b/src/main/java/seng302/visualiser/controllers/StartScreenController.java index 75566eb7..a03ce25c 100644 --- a/src/main/java/seng302/visualiser/controllers/StartScreenController.java +++ b/src/main/java/seng302/visualiser/controllers/StartScreenController.java @@ -5,15 +5,11 @@ import java.io.IOException; import java.net.URL; import java.util.List; import java.util.ResourceBundle; -import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.control.Label; -import javafx.scene.effect.DropShadow; -import javafx.scene.input.MouseEvent; -import javafx.scene.paint.Color; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import seng302.gameServer.ServerDescription; @@ -34,20 +30,21 @@ public class StartScreenController implements Initializable{ private List servers; private GameClient gameClient; - /** - * - */ - private void setInitialDropShadow() { - DropShadow dropShadow = new DropShadow(); - dropShadow.setRadius(10.0); - dropShadow.setOffsetX(3.0); - dropShadow.setOffsetY(4.0); - dropShadow.setColor(Color.color(0, 0, 0, 0.5)); - headText.setEffect(dropShadow); + public void initialize(URL location, ResourceBundle resources) { + startBtn.setOnMousePressed(event -> { + startBtn.setText("LOADING..."); + Sounds.playButtonClick(); + }); + + startBtn.setOnMouseReleased(event -> goToServerBrowser()); + startBtn.setOnMouseEntered(event -> Sounds.playHoverSound()); + + preloadServerListView(); + } /** - * + * Preloads the server list view to reduce load time between start screen and server list screen. */ private void preloadServerListView(){ try { @@ -60,7 +57,7 @@ public class StartScreenController implements Initializable{ } /** - * + * Changes the view to the Server Browser. */ private void goToServerBrowser() { try { @@ -70,40 +67,4 @@ public class StartScreenController implements Initializable{ } } - public void initialize(URL location, ResourceBundle resources) { - startBtn.setOnMousePressed(event -> { - startBtn.setText("LOADING..."); - Sounds.playButtonClick(); - }); - - startBtn.setOnMouseReleased(event -> goToServerBrowser()); - - setInitialDropShadow(); - preloadServerListView(); - - } - - public void toggleMusic(ActionEvent actionEvent) { - Sounds.toggleMuteMusic(); - Sounds.playButtonClick(); - if (Sounds.isMusicMuted()) { -// muteMusicButton.setText("UnMute Music"); - } else { -// muteMusicButton.setText("Mute Music"); - } - } - - public void toggleSounds(ActionEvent actionEvent) { - Sounds.toggleMuteEffects(); - Sounds.playButtonClick(); - if (Sounds.isSoundEffectsMuted()) { -// muteSoundsButton.setText("UnMute Sounds"); - } else { -// muteSoundsButton.setText("Mute Sounds"); - } - } - - public void playButtonHoverSound(MouseEvent mouseEvent) { - Sounds.playHoverSound(); - } } diff --git a/src/main/java/seng302/visualiser/controllers/ViewManager.java b/src/main/java/seng302/visualiser/controllers/ViewManager.java index 6f153f24..f73ccfc4 100644 --- a/src/main/java/seng302/visualiser/controllers/ViewManager.java +++ b/src/main/java/seng302/visualiser/controllers/ViewManager.java @@ -105,6 +105,12 @@ public class ViewManager { }); } + /** + * Sets the decorator when a new one is created (and ideally the old one destroyed) + * Also allows injection of buttons into the decorator for custom functions. + * + * @param newDecorator The new JFXDecorator to handle the game window. + */ private void setDecorator(JFXDecorator newDecorator) { decorator = newDecorator; @@ -152,6 +158,9 @@ public class ViewManager { } + /** + * Determines if a PC has compatibility with the bonjour protocol for server detection. + */ private void checkCompatibility() { if (BonjourInstallChecker.isBonjourSupported()) { BonjourInstallChecker.openInstallUrl(); @@ -209,6 +218,11 @@ public class ViewManager { return playerList; } + /** + * Change the view to the Lobby Screen + * @param disableReadyButton Boolean value so that clients can't try start a game. + * @return A LobbyController object for the Lobby Screen. + */ public LobbyController goToLobby(Boolean disableReadyButton) { FXMLLoader loader = loadFxml("/views/LobbyView.fxml"); @@ -226,6 +240,11 @@ public class ViewManager { return loader.getController(); } + /** + * Sets up the view for the race. Creating a new decorator and destroying the old one. + * @return A RaceViewController for the race view screen. + */ + public RaceViewController loadRaceView() { FXMLLoader loader = loadFxml("/views/RaceView.fxml"); @@ -277,6 +296,7 @@ public class ViewManager { return loader.getController(); } + // TODO: 12/09/17 ajm412: Why is this here? is there no better way we can do this? Ideally inside the LobbyController. public JFXDialog loadCustomizationDialog(StackPane parent, LobbyController lobbyController, Color playerColor, String name) { FXMLLoader dialog = loadFxml("/views/dialogs/BoatCustomizeDialog.fxml"); diff --git a/src/main/java/seng302/visualiser/controllers/cells/PlayerCell.java b/src/main/java/seng302/visualiser/controllers/cells/PlayerCell.java index c960afa9..6fb35708 100644 --- a/src/main/java/seng302/visualiser/controllers/cells/PlayerCell.java +++ b/src/main/java/seng302/visualiser/controllers/cells/PlayerCell.java @@ -3,11 +3,9 @@ package seng302.visualiser.controllers.cells; import javafx.fxml.FXML; import javafx.scene.Group; import javafx.scene.control.Label; -import javafx.scene.input.MouseEvent; import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; -import seng302.utilities.Sounds; import seng302.visualiser.fxObjects.assets_3D.BoatMeshType; import seng302.visualiser.fxObjects.assets_3D.BoatModel; import seng302.visualiser.fxObjects.assets_3D.ModelFactory; @@ -34,12 +32,13 @@ public class PlayerCell { } public void initialize() { + // Set Player Name playerName.setText(name); + // Add Rotating Boat to Player Cell with players color on it. Group group = new Group(); boatPane.getChildren().add(group); BoatModel bo = ModelFactory.boatIconView(BoatMeshType.DINGHY, this.boatColor); group.getChildren().add(bo.getAssets()); - } public Integer getPlayerId() { @@ -53,8 +52,4 @@ public class PlayerCell { public Color getBoatColor() { return boatColor; } - - public void playButtonHoverSound(MouseEvent mouseEvent) { - Sounds.playHoverSound(); - } -} \ No newline at end of file +} diff --git a/src/main/java/seng302/visualiser/controllers/cells/ServerCell.java b/src/main/java/seng302/visualiser/controllers/cells/ServerCell.java index e2e7b5d6..a2ec84ee 100644 --- a/src/main/java/seng302/visualiser/controllers/cells/ServerCell.java +++ b/src/main/java/seng302/visualiser/controllers/cells/ServerCell.java @@ -1,27 +1,15 @@ package seng302.visualiser.controllers.cells; import com.jfoenix.controls.JFXButton; -import com.jfoenix.controls.JFXDecorator; -import com.sun.org.apache.bcel.internal.classfile.Unknown; -import java.io.IOException; -import java.net.InetAddress; import java.net.URL; -import java.net.UnknownHostException; import java.util.ResourceBundle; - -import com.jfoenix.controls.JFXTextField; import javafx.fxml.FXML; -import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; -import javafx.scene.Parent; import javafx.scene.control.Label; -import javafx.scene.effect.DropShadow; -import javafx.scene.input.MouseEvent; import javafx.scene.layout.GridPane; -import javafx.scene.paint.Color; +import javafx.scene.layout.VBox; import seng302.gameServer.ServerDescription; import seng302.utilities.Sounds; -import seng302.visualiser.GameClient; import seng302.visualiser.controllers.ViewManager; public class ServerCell implements Initializable { @@ -29,6 +17,8 @@ public class ServerCell implements Initializable { //--------FXML BEGIN--------// //Layout @FXML + private VBox serverCellVBox; + @FXML private GridPane serverListCell; //Server Information @FXML @@ -66,21 +56,21 @@ public class ServerCell implements Initializable { serverPlayerCount.setText(currPlayerCount); mapName.setText(mapNameString); + serverCellVBox.setOnMouseEntered(event -> Sounds.playHoverSound()); + serverConnButton.setOnMouseReleased(event -> { Sounds.playButtonClick(); joinServer(); }); + } /** - * + * Attempts to connect to the chosen server using the button on the serverCell. */ private void joinServer() { System.out.println("Connecting to " + serverName.getText()); ViewManager.getInstance().getGameClient().runAsClient(hostName, portNumber); } - public void playButtonHoverSound(MouseEvent mouseEvent) { - Sounds.playHoverSound(); - } } diff --git a/src/main/java/seng302/visualiser/controllers/dialogs/BoatCustomizeController.java b/src/main/java/seng302/visualiser/controllers/dialogs/BoatCustomizeController.java index 206acb56..966fab68 100644 --- a/src/main/java/seng302/visualiser/controllers/dialogs/BoatCustomizeController.java +++ b/src/main/java/seng302/visualiser/controllers/dialogs/BoatCustomizeController.java @@ -4,17 +4,15 @@ import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXColorPicker; import com.jfoenix.controls.JFXTextField; import com.jfoenix.validation.RequiredFieldValidator; +import java.net.URL; +import java.util.ResourceBundle; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.paint.Color; -import javafx.stage.Stage; import seng302.gameServer.messages.CustomizeRequestType; import seng302.utilities.Sounds; import seng302.visualiser.ClientToServerThread; - -import java.net.URL; -import java.util.ResourceBundle; import seng302.visualiser.controllers.LobbyController; import seng302.visualiser.validators.FieldLengthValidator; import seng302.visualiser.validators.ValidationTools; @@ -56,7 +54,7 @@ public class BoatCustomizeController implements Initializable{ } /** - * + * Attempts to submit a valid customization packet for boat name and boat color. */ private void submitCustomization() { diff --git a/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java b/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java index 473ac8f4..ffa64356 100644 --- a/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java +++ b/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java @@ -4,6 +4,8 @@ import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXSlider; import com.jfoenix.controls.JFXTextField; import com.jfoenix.validation.RequiredFieldValidator; +import java.net.URL; +import java.util.ResourceBundle; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Label; @@ -12,9 +14,6 @@ import seng302.gameServer.ServerDescription; import seng302.utilities.Sounds; import seng302.visualiser.controllers.ViewManager; import seng302.visualiser.validators.FieldLengthValidator; - -import java.net.URL; -import java.util.ResourceBundle; import seng302.visualiser.validators.ValidationTools; public class ServerCreationController implements Initializable { @@ -51,7 +50,7 @@ public class ServerCreationController implements Initializable { } /** - * + * Validates that a server has a valid name and creates the server. */ private void validateServerSettings() { submitBtn.setText("CREATING..."); @@ -63,7 +62,7 @@ public class ServerCreationController implements Initializable { } /** - * + * Creates a server with a given set of details. */ private void createServer() { ServerDescription serverDescription = ViewManager.getInstance().getGameClient() @@ -75,7 +74,7 @@ public class ServerCreationController implements Initializable { } /** - * + * Updates a label as the user slides along the max players slider. */ private void updateMaxPlayerLabel() { maxPlayersSlider.setValue(Math.floor(maxPlayersSlider.getValue())); diff --git a/src/main/resources/css/Master.css b/src/main/resources/css/Master.css index 5f73543e..8636a88a 100644 --- a/src/main/resources/css/Master.css +++ b/src/main/resources/css/Master.css @@ -13,6 +13,7 @@ -fx-pp-dropshadow-light: dropshadow(gaussian, rgba(0, 0, 0, 0.1), 10.0, 0.2, 3, 4); -fx-pp-dropshadow-dark: dropshadow(gaussian, rgba(0, 0, 0, 0.3), 10.0, 0.2, 5, 6); + -fx-pp-dropshadow-headers: dropshadow(gaussian, rgba(0, 0, 0, 0.5), 10.0, 0.2, 3, 4); } /*GridPane .jfx-button {*/ diff --git a/src/main/resources/css/StartScreenView.css b/src/main/resources/css/StartScreenView.css index 0dda6f19..04338028 100644 --- a/src/main/resources/css/StartScreenView.css +++ b/src/main/resources/css/StartScreenView.css @@ -22,4 +22,5 @@ -fx-background-color: transparent; -fx-font-size: 80px; -fx-text-fill: -fx-pp-light-text-color; + -fx-effect: -fx-pp-dropshadow-headers; } \ No newline at end of file diff --git a/src/main/resources/views/ServerListView.fxml b/src/main/resources/views/ServerListView.fxml index b75a4a54..928aa025 100644 --- a/src/main/resources/views/ServerListView.fxml +++ b/src/main/resources/views/ServerListView.fxml @@ -18,7 +18,10 @@ - + @@ -74,7 +77,7 @@ diff --git a/src/main/resources/views/StartScreenView.fxml b/src/main/resources/views/StartScreenView.fxml index a8baaec7..a7820821 100644 --- a/src/main/resources/views/StartScreenView.fxml +++ b/src/main/resources/views/StartScreenView.fxml @@ -26,7 +26,8 @@ - + diff --git a/src/main/resources/views/cells/ServerCell.fxml b/src/main/resources/views/cells/ServerCell.fxml index c25fcb9c..17a16beb 100644 --- a/src/main/resources/views/cells/ServerCell.fxml +++ b/src/main/resources/views/cells/ServerCell.fxml @@ -9,7 +9,9 @@ - +