From 6401a75e0e21f93aa055ce51f72d7fa003cabdb5 Mon Sep 17 00:00:00 2001 From: Joshua Perry <45966243+jpez-development@users.noreply.github.com> Date: Wed, 1 Feb 2023 20:26:47 +0000 Subject: [PATCH] refactored controller so class is smaller --- src/main/java/com/r0r5chach/EditPage.java | 70 +++++++++ .../java/com/r0r5chach/MainController.java | 134 +++--------------- src/main/java/com/r0r5chach/ViewPage.java | 55 +++++++ src/main/java/module-info.java | 3 +- 4 files changed, 147 insertions(+), 115 deletions(-) create mode 100644 src/main/java/com/r0r5chach/EditPage.java create mode 100644 src/main/java/com/r0r5chach/ViewPage.java diff --git a/src/main/java/com/r0r5chach/EditPage.java b/src/main/java/com/r0r5chach/EditPage.java new file mode 100644 index 0000000..607aa2a --- /dev/null +++ b/src/main/java/com/r0r5chach/EditPage.java @@ -0,0 +1,70 @@ +package com.r0r5chach; + +import com.r0r5chach.r6.R6Attacker; +import com.r0r5chach.r6.R6Defender; +import com.r0r5chach.r6.R6Player; +import com.r0r5chach.valorant.ValorantAgent; +import com.r0r5chach.valorant.ValorantPlayer; + +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.TextField; +import javafx.scene.text.Text; + +public class EditPage { + public static void loadPlayer(Competitor player, TextField[] textFields, ChoiceBox level) { + textFields[0].setText(String.valueOf(player.getPlayerNumber())); + textFields[1].setText(player.getPlayerName().getFullName()); + level.getSelectionModel().select(player.getPlayerLevel());; + textFields[2].setText(String.valueOf(player.getOverallScore())); + } + + public static void loadFavoriteCharacters(Competitor player, ChoiceBox attacker, ChoiceBox defender, ChoiceBox agent, Text field) { + if (player instanceof R6Player) { + attacker.getSelectionModel().select(((R6Player) player).getFavoriteAttacker()); + defender.getSelectionModel().select((((R6Player) player).getFavoriteDefender())); + agent.visibleProperty().set(false); + attacker.visibleProperty().set(true); + defender.visibleProperty().set(true); + field.setText("Favorite Operators"); + } + else if (player instanceof ValorantPlayer) { + agent.getSelectionModel().select(((ValorantPlayer) player).getFavoriteAgent()); + agent.visibleProperty().set(true); + attacker.visibleProperty().set(false); + defender.visibleProperty().set(false); + field.setText("Favorite Agent"); + } + } + + public static void loadScores(Competitor player, TextField[] fields) { + int[] playerScores = player.getScores(); + for (int i = 0; i < playerScores.length; i++) { + fields[i].setText(String.valueOf(playerScores[i])); + } + } + + public static void updatePlayer(Competitor player, TextField[] fields, ChoiceBox level) { + player.setPlayerNumber(Integer.parseInt(fields[0].getText())); + player.setPlayerName(new Name(fields[1].getText())); + player.setPlayerLevel(level.getValue()); + } + + public static void updateFavoriteCharacters(Competitor player, ChoiceBox attacker, ChoiceBox defender, ChoiceBox agent) { + if (player instanceof R6Player) { + ((R6Player) player).setFavoriteAttacker(attacker.getValue()); + ((R6Player) player).setFavoriteDefender(defender.getValue()); + } + else if (player instanceof ValorantPlayer) { + ((ValorantPlayer) player).setFavoriteAgent(agent.getValue()); + } + } + + public static void updateScores(Competitor player, TextField[] fields) { + int[] newScores = new int[6]; + for (int i = 0; i < newScores.length; i++) { + newScores[i] = Integer.parseInt(fields[i].getText()); + } + player.setScores(newScores); + } + +} diff --git a/src/main/java/com/r0r5chach/MainController.java b/src/main/java/com/r0r5chach/MainController.java index f4d6d86..3914cf6 100644 --- a/src/main/java/com/r0r5chach/MainController.java +++ b/src/main/java/com/r0r5chach/MainController.java @@ -7,22 +7,17 @@ import java.util.ResourceBundle; import com.r0r5chach.r6.R6Attacker; import com.r0r5chach.r6.R6Defender; -import com.r0r5chach.r6.R6Player; import com.r0r5chach.valorant.ValorantAgent; -import com.r0r5chach.valorant.ValorantPlayer; import javafx.application.Platform; import javafx.collections.FXCollections; -import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.ChoiceBox; import javafx.scene.control.ListView; -import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; -import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.text.Text; public class MainController implements Initializable { @@ -76,18 +71,24 @@ public class MainController implements Initializable { TextField[] scores; + TextField[] fields; + @FXML Button updateButton; @FXML TableView competitorTable; + @FXML + Button filterButton; + @Override public void initialize(URL url, ResourceBundle rb) { Platform.runLater(() -> { - this.scores = new TextField[]{scores0, scores1, scores2, scores3, scores4, scores5}; + scores = new TextField[]{scores0, scores1, scores2, scores3, scores4, scores5}; + fields = new TextField[]{playerNumber, playerName, overallScore}; loadCompetitors(); - loadTable(); + ViewPage.generateTable(competitorTable); loadEdit(); }); @@ -99,18 +100,24 @@ public class MainController implements Initializable { @FXML private void getCompetitor() { - Competitor player = this.competitors.getCompetitors().get(this.competitorIds.indexOf(this.competitorsList.getSelectionModel().getSelectedItem())); - loadPlayer(player); + Competitor player = competitors.getCompetitors().get(competitorIds.indexOf(competitorsList.getSelectionModel().getSelectedItem())); + EditPage.loadPlayer(player,fields, playerLevel); + EditPage.loadFavoriteCharacters(player, favoriteAttacker, favoriteDefender, favoriteAgent, favoriteCharacters); + EditPage.loadScores(player, scores); } @FXML private void updateCompetitor() { - int playerIndex = this.competitorIds.indexOf(this.competitorsList.getSelectionModel().getSelectedItem()); - Competitor player = this.competitors.getCompetitors().get(playerIndex); - updatePlayer(player); + int playerIndex = competitorIds.indexOf(competitorsList.getSelectionModel().getSelectedItem()); + Competitor player = competitors.getCompetitors().get(playerIndex); + EditPage.updatePlayer(player, fields, playerLevel); + EditPage.updateFavoriteCharacters(player, favoriteAttacker, favoriteDefender, favoriteAgent); + EditPage.updateScores(player, scores); competitorIds.set(playerIndex, player.getPlayerNumber()); loadEdit(); - loadPlayer(player); + EditPage.loadPlayer(player, fields, playerLevel); + EditPage.loadFavoriteCharacters(player, favoriteAttacker, favoriteDefender, favoriteAgent, favoriteCharacters); + EditPage.loadScores(player, scores); } private void loadCompetitors(){ @@ -129,107 +136,8 @@ public class MainController implements Initializable { favoriteAgent.setItems(FXCollections.observableList(Arrays.asList(ValorantAgent.values()))); } - private void loadTable() { - TableColumn playerNumCol = new TableColumn("Player Number"); - TableColumn playerNameCol = new TableColumn("Player Name"); - TableColumn playerLevelCol = new TableColumn("Player Level"); - TableColumn scoresCol = new TableColumn("Player Scores"); - TableColumn favoriteCharsCol = new TableColumn("Favorite Characters"); - TableColumn favoriteAgentCol = new TableColumn("Agent"); - TableColumn favoriteAttackerCol = new TableColumn("Attacker"); - TableColumn favoriteDefenderCol = new TableColumn("Defender"); - playerNumCol.setCellValueFactory(new PropertyValueFactory("playerNumber")); - playerNameCol.setCellValueFactory(new PropertyValueFactory("playerName")); - playerLevelCol.setCellValueFactory(new PropertyValueFactory("playerLevel")); - scoresCol.setCellValueFactory(new PropertyValueFactory("scores")); - favoriteAgentCol.setCellValueFactory(new PropertyValueFactory("favoriteAgent")); - favoriteAttackerCol.setCellValueFactory(new PropertyValueFactory("favoriteAttacker")); - favoriteDefenderCol.setCellValueFactory(new PropertyValueFactory("favoriteDefender")); - competitorTable.getColumns().add(playerNumCol); - competitorTable.getColumns().add(playerNameCol); - competitorTable.getColumns().add(playerLevelCol); - competitorTable.getColumns().add(scoresCol); - favoriteCharsCol.getColumns().add(favoriteAgentCol); - favoriteCharsCol.getColumns().add(favoriteAttackerCol); - favoriteCharsCol.getColumns().add(favoriteDefenderCol); - competitorTable.getColumns().add(favoriteCharsCol); - } - @FXML private void loadView() { - competitorTable.setItems(generateTable()); - } - - private void loadPlayer(Competitor player) { - this.playerNumber.setText(String.valueOf(player.getPlayerNumber())); - this.playerName.setText(player.getPlayerName().getFullName()); - this.playerLevel.getSelectionModel().select(player.getPlayerLevel());; - loadFavoriteCharacters(player); - loadScores(player); - this.overallScore.setText(String.valueOf(player.getOverallScore())); - } - - private void loadFavoriteCharacters(Competitor player) { - if (player instanceof R6Player) { - this.favoriteAttacker.getSelectionModel().select(((R6Player) player).getFavoriteAttacker()); - this.favoriteDefender.getSelectionModel().select((((R6Player) player).getFavoriteDefender())); - this.favoriteAgent.visibleProperty().set(false); - this.favoriteAttacker.visibleProperty().set(true); - this.favoriteDefender.visibleProperty().set(true); - this.favoriteCharacters.setText("Favorite Operators"); - } - else if (player instanceof ValorantPlayer) { - this.favoriteAgent.getSelectionModel().select(((ValorantPlayer) player).getFavoriteAgent()); - this.favoriteAgent.visibleProperty().set(true); - this.favoriteAttacker.visibleProperty().set(false); - this.favoriteDefender.visibleProperty().set(false); - this.favoriteCharacters.setText("Favorite Agent"); - } - } - - private void loadScores(Competitor player) { - int[] playerScores = player.getScores(); - for (int i = 0; i < playerScores.length; i++) { - this.scores[i].setText(String.valueOf(playerScores[i])); - } - } - - private void updatePlayer(Competitor player) { - player.setPlayerNumber(Integer.parseInt(this.playerNumber.getText())); - player.setPlayerName(new Name(this.playerName.getText())); - player.setPlayerLevel(this.playerLevel.getValue()); - updateFavoriteCharacters(player); - updateScores(player); - } - - private void updateFavoriteCharacters(Competitor player) { - if (player instanceof R6Player) { - ((R6Player) player).setFavoriteAttacker(this.favoriteAttacker.getValue()); - ((R6Player) player).setFavoriteDefender(this.favoriteDefender.getValue()); - } - else if (player instanceof ValorantPlayer) { - ((ValorantPlayer) player).setFavoriteAgent(this.favoriteAgent.getValue()); - } - } - - private void updateScores(Competitor player) { - int[] newScores = new int[6]; - for (int i = 0; i < newScores.length; i++) { - newScores[i] = Integer.parseInt(this.scores[i].getText()); - } - player.setScores(newScores); - } - - private ObservableList generateTable() { - ArrayList list = new ArrayList<>(); - for(Competitor player: this.competitors.getCompetitors()) { - if (player instanceof ValorantPlayer) { - list.add(new CompetitorRow(player.getPlayerNumber(), player.getPlayerName(), player.getPlayerLevel(), player.getScores(), ((ValorantPlayer) player).getFavoriteAgent())); - } - if (player instanceof R6Player) { - list.add(new CompetitorRow(player.getPlayerNumber(), player.getPlayerName(), player.getPlayerLevel(), player.getScores(), ((R6Player) player).getFavoriteAttacker(), ((R6Player) player).getFavoriteDefender())); - } - } - return FXCollections.observableArrayList(list); + competitorTable.setItems(ViewPage.loadTable(this.competitors.getCompetitors())); } } \ No newline at end of file diff --git a/src/main/java/com/r0r5chach/ViewPage.java b/src/main/java/com/r0r5chach/ViewPage.java new file mode 100644 index 0000000..5d9ea52 --- /dev/null +++ b/src/main/java/com/r0r5chach/ViewPage.java @@ -0,0 +1,55 @@ +package com.r0r5chach; + +import java.util.ArrayList; + +import com.r0r5chach.r6.R6Player; +import com.r0r5chach.valorant.ValorantPlayer; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; + +public class ViewPage { + + public static void generateTable(TableView table) { + TableColumn playerNumCol = new TableColumn("Player Number"); + TableColumn playerNameCol = new TableColumn("Player Name"); + TableColumn playerLevelCol = new TableColumn("Player Level"); + TableColumn scoresCol = new TableColumn("Player Scores"); + TableColumn favoriteCharsCol = new TableColumn("Favorite Characters"); + TableColumn favoriteAgentCol = new TableColumn("Agent"); + TableColumn favoriteAttackerCol = new TableColumn("Attacker"); + TableColumn favoriteDefenderCol = new TableColumn("Defender"); + playerNumCol.setCellValueFactory(new PropertyValueFactory("playerNumber")); + playerNameCol.setCellValueFactory(new PropertyValueFactory("playerName")); + playerLevelCol.setCellValueFactory(new PropertyValueFactory("playerLevel")); + scoresCol.setCellValueFactory(new PropertyValueFactory("scores")); + favoriteAgentCol.setCellValueFactory(new PropertyValueFactory("favoriteAgent")); + favoriteAttackerCol.setCellValueFactory(new PropertyValueFactory("favoriteAttacker")); + favoriteDefenderCol.setCellValueFactory(new PropertyValueFactory("favoriteDefender")); + table.getColumns().add(playerNumCol); + table.getColumns().add(playerNameCol); + table.getColumns().add(playerLevelCol); + table.getColumns().add(scoresCol); + favoriteCharsCol.getColumns().add(favoriteAgentCol); + favoriteCharsCol.getColumns().add(favoriteAttackerCol); + favoriteCharsCol.getColumns().add(favoriteDefenderCol); + table.getColumns().add(favoriteCharsCol); + } + + public static ObservableList loadTable(ArrayList list) { + ArrayList outputList = new ArrayList<>(); + for(Competitor player: list) { + if (player instanceof ValorantPlayer) { + outputList.add(new CompetitorRow(player.getPlayerNumber(), player.getPlayerName(), player.getPlayerLevel(), player.getScores(), ((ValorantPlayer) player).getFavoriteAgent())); + } + if (player instanceof R6Player) { + outputList.add(new CompetitorRow(player.getPlayerNumber(), player.getPlayerName(), player.getPlayerLevel(), player.getScores(), ((R6Player) player).getFavoriteAttacker(), ((R6Player) player).getFavoriteDefender())); + } + } + return FXCollections.observableArrayList(outputList); + } + +} diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 41b7a6e..452f03f 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,7 +1,6 @@ module com.r0r5chach { requires transitive javafx.graphics; - - requires javafx.controls; + requires transitive javafx.controls; requires javafx.fxml; opens com.r0r5chach to javafx.fxml;