From 8dfb7bc6a959a0e9058838f0056d8155e7f85b01 Mon Sep 17 00:00:00 2001 From: RichardSimmons Date: Thu, 23 Apr 2020 12:26:09 -0400 Subject: [PATCH 1/2] Update the styling of the GUI I updated the color scheme and rearrange some of the GUI elements to make them more in line with the overall styling of the program. --- src/wrestlingtournamentcli/Main.java | 136 +++++++++++++-------------- 1 file changed, 67 insertions(+), 69 deletions(-) diff --git a/src/wrestlingtournamentcli/Main.java b/src/wrestlingtournamentcli/Main.java index 53e5234..92cfaa9 100644 --- a/src/wrestlingtournamentcli/Main.java +++ b/src/wrestlingtournamentcli/Main.java @@ -19,12 +19,17 @@ import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; +import javafx.scene.layout.Background; import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.FileChooser; import javafx.stage.Stage; import javafx.scene.control.Tooltip; +import javafx.scene.image.Image ; +import javafx.scene.image.ImageView; + /** * @author Jared Murphy * @author Cody Francis @@ -440,7 +445,6 @@ public void start(Stage stage) throws Exception { BorderPane root = new BorderPane(); VBox mainMenu = new VBox(); VBox viewList = new VBox(); - Button add = new Button(); Button viewTeams = new Button(); Button viewWrestlers = new Button(); Button importTeams = new Button(); @@ -450,26 +454,22 @@ public void start(Stage stage) throws Exception { Button compareWrestlers = new Button(); - TextField compareWrestlersTxt = new TextField(); + TextField compareWrestlersTxt = new TextField(); TextField saveTournament = new TextField(); - TextField FirstName = new TextField(); - TextField LastName = new TextField(); - TextField TeamAlias = new TextField(); - TextField Grade = new TextField(); - TextField Weight = new TextField(); - TextField TotalWins = new TextField(); - TextField TotalMatch = new TextField(); compareWrestlers.setMinWidth(110); compareWrestlersTxt.setMinWidth(110); compareWrestlers.setText("Compare Wrestlers"); compareWrestlersTxt.setText("Name,Name"); ListView compareWrestlerView = new ListView(); - Button wrestlerBack = new Button(); + Button wrestlerBack = new Button(); ListView startView = new ListView(); //button declarations i've added Button advance = new Button(); Button help = new Button(); Button update = new Button(); + + + // adds tooltips to each menu button Tooltip viewTeamsTooltip = new Tooltip("Displays the imported teams in the display box to the right"); Tooltip.install(viewTeams, viewTeamsTooltip); @@ -483,21 +483,27 @@ public void start(Stage stage) throws Exception { Tooltip.install(start, startToolTip); Tooltip saveTooltip = new Tooltip("Saves the results of the matches to a file(Use text box to save the name of the tournament)"); Tooltip.install(save, saveTooltip); + ListView listView = new ListView(); ListView wrestlerView = new ListView(); + ListView helpView = new ListView(); + TextField importWrestlerField = new TextField (); + Label menu = new Label("Main Menu"); - menu.setStyle("-fx-font-weight: bold; -fx-font: 24 arial"); + menu.setStyle("-fx-font-weight: bold; -fx-font: 24 arial;-fx-text-fill: Yellow"); + // create buttons/textfields for view of team and wrestlers - add.setMinWidth(110); - add.setText("Add Wrestler"); + BorderPane introRoot= new BorderPane(); GridPane introLayout = new GridPane(); Button wrestling = new Button(); Button soccer = new Button(); Label introMenu = new Label("Please select the sport you would like to manage:"); //UI elements for selection Screen + introMenu.setStyle("-fx-font: 16 arial;-fx-text-fill: Yellow"); + BorderPane soccerRoot = new BorderPane(); Label soccerLabel = new Label("Soccer Menu"); VBox soccerMenu = new VBox(); @@ -538,12 +544,27 @@ public void start(Stage stage) throws Exception { wrestling.setPadding(new Insets(10,10,10,10)); soccer.setText("Soccer"); soccer.setPadding(new Insets(10,10,10,10)); - introLayout.setPadding(new Insets(300,100,100,100)); - introLayout.add(introMenu, 0, 0); - introLayout.add(wrestling, 2,3 ); - introLayout.add(soccer, 3, 3); + introLayout.setPadding(new Insets(50,100,100,100)); + introLayout.add(introMenu, 1, 1); + introLayout.add(wrestling, 1,2 ); + introLayout.add(soccer, 1, 3); + introLayout.setStyle("-fx-background-color: Green"); + //Image image = new Image("RaiderSMA/icon.png"); + //Image soccerBall = new Image("file:soccer-ball.png"); + //introLayout.getChildren().add(new ImageView(soccerBall)); + + //adds the soccer png to the intro screen + ImageView imv = new ImageView(); + Image image = new Image("file:soccer-ball.png"); + imv.setImage(image); + final HBox soccerPictureRegion = new HBox(); + soccerPictureRegion.getChildren().add(imv); + introLayout.add(soccerPictureRegion, 10, 10); + introRoot.setCenter(introLayout); + //Initializing introduction UI elements + importTeams.setMinWidth(110); importWrestlers.setMinWidth(110); viewTeams.setMinWidth(110); @@ -551,34 +572,28 @@ public void start(Stage stage) throws Exception { saveTournament.setMinWidth(110); save.setMinWidth(110); start.setMinWidth(110); - FirstName.setMinWidth(110); - LastName.setMinWidth(110); + update.setMinWidth(110); help.setMinWidth(110); advance.setMinWidth(110); advance.setText("Advance"); help.setText("Help"); update.setText("Update Match"); + save.setText("Save"); start.setText("Start"); - FirstName.setPromptText("First Name"); - LastName.setPromptText("Last Name"); - TeamAlias.setPromptText("Team Alias"); - Grade.setPromptText("Grade"); - Weight.setPromptText("Player's Weight"); - TotalWins.setPromptText("Total Wins"); - TotalMatch.setPromptText("Total Match"); + importTeams.setText("Import Teams"); importWrestlers.setText("Import Wrestlers"); viewTeams.setText("View Teams"); viewWrestlers.setText("View Wrestlers"); - saveTournament.setPromptText("Name of Tournament"); saveTournament.setText("Name of Tournament"); wrestlerBack.setText("Back"); //create the layout of the menu GridPane layout = new GridPane(); + layout.setStyle("-fx-background-color: Green"); layout.setPadding(new Insets(10,10,10,10)); - layout.setMinSize(300, 300); + layout.setMinSize(300, 700); layout.setVgap(5); layout.setHgap(5); layout.setAlignment(Pos.BASELINE_LEFT); @@ -589,45 +604,52 @@ public void start(Stage stage) throws Exception { layout.add(viewWrestlers, 0, 2); layout.add(save, 0, 5); layout.add(saveTournament, 1, 5); - layout.add(start, 0, 13); - layout.add(add, 0, 6); - layout.add(FirstName, 1, 6); - layout.add(LastName, 1, 7); - layout.add(TeamAlias, 1, 8); - layout.add(Grade, 1, 9); - layout.add(Weight, 1, 10); - layout.add(TotalWins, 1,11); - layout.add(TotalMatch, 1, 12); layout.add(start, 0, 6); + layout.add(compareWrestlers, 0, 7); - layout.add( compareWrestlersTxt, 1, 7); + layout.add(compareWrestlersTxt, 1, 7); + + + layout.add(advance, 0, 9); layout.add(help, 0, 10); layout.add(update, 0, 11); + Scene introScene = new Scene (introRoot, 700, 700); Scene wrestlerScene = new Scene(root,700,700); Scene soccerScene = new Scene(soccerRoot,700,700); wrestling.setOnAction(e ->{ + Model m = new Model("wrestling"); - stage.setScene(wrestlerScene); + stage.setScene(wrestlerScene); + }); - soccer.setOnAction(e ->{ + soccer.setOnAction(e ->{ + Model soccerModel = new Model("soccer"); stage.setScene(soccerScene); + }); + + + viewTeams.setOnAction(e -> { + ArrayList show = Model.printTeams(); - for(int i = 0; i < show.size(); i++) { + for(int i = 0; i < show.size(); i++) { listView.getItems().add(show.get(i)); - } - return; + } + + return; }); soccerBack.setOnAction(e -> { + stage.setScene(introScene); + }); wrestlerBack.setOnAction(e->{ @@ -991,32 +1013,7 @@ else if (check == 2) { stage2.show(); }); - add.setOnAction(e-> { - if(FirstName.getText().isEmpty() && LastName.getText().isEmpty() - && TeamAlias.getText().isEmpty() && Grade.getText().isEmpty() && Weight.getText().isEmpty() && - TotalWins.getText().isEmpty() && TotalMatch.getText().isEmpty()) { - Alert FirstNameEmpty = new Alert(AlertType.ERROR); - FirstNameEmpty.setTitle("New Player Alert"); - String FirstNameEmptyInfo = "Please enter Information \n"; - FirstNameEmpty.setContentText(FirstNameEmptyInfo); - FirstNameEmpty.show(); - } - else { - try { - String FN = FirstName.getText(); - String LN = LastName.getText(); - String TA = TeamAlias.getText(); - int grade = Integer.parseInt(Grade.getText()); - int weight = Integer.parseInt(Weight.getText()); - int totalWins = Integer.parseInt(TotalWins.getText()); - int totalMatch = Integer.parseInt(TotalMatch.getText()); - new Wrestler(FN, LN,TA, grade, weight, totalWins, totalMatch); - } - catch(Exception a) { - System.out.println("Something went wrong"); - } - } - }); + mainMenu.getChildren().addAll(layout); viewList.prefWidth(100); viewList.getChildren().addAll(listView, wrestlerView, compareWrestlerView,startView,helpView); @@ -1028,5 +1025,6 @@ else if (check == 2) { stage.setScene(introScene); stage.show(); + } } From a79e11c6c44c6c87014b6c0df6b09af88dd860c8 Mon Sep 17 00:00:00 2001 From: RichardSimmons Date: Thu, 23 Apr 2020 12:29:37 -0400 Subject: [PATCH 2/2] Add a soccer ball image I added a soccer ball image for display on the intro scene of the GuI --- soccer-ball.png | Bin 0 -> 9102 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 soccer-ball.png diff --git a/soccer-ball.png b/soccer-ball.png new file mode 100644 index 0000000000000000000000000000000000000000..4a0d229b19de95661f84337fd7e6c9d96c66abc8 GIT binary patch literal 9102 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 literal 0 HcmV?d00001