refactored controllers

This commit is contained in:
Joshua Perry 2023-02-03 12:48:36 +00:00
parent 43a1e204d8
commit 16ee002b38
11 changed files with 475 additions and 393 deletions

View File

@ -4,11 +4,13 @@ import java.io.File;
import javafx.application.Application; import javafx.application.Application;
import java.io.IOException; import java.io.IOException;
import com.r0r5chach.controllers.Controller;
import com.r0r5chach.controllers.EditController;
import com.r0r5chach.controllers.MainController; import com.r0r5chach.controllers.MainController;
import com.r0r5chach.controllers.ViewController;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.stage.Popup;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.scene.Scene; import javafx.scene.Scene;
import static com.r0r5chach.CompetitorList.createErrorLog; import static com.r0r5chach.CompetitorList.createErrorLog;
@ -16,11 +18,12 @@ import static com.r0r5chach.CompetitorList.createErrorLog;
public class Manager extends Application { public class Manager extends Application {
private static Scene scene; private static Scene scene;
private static Stage stage; public static Stage stage;
private static Popup filters; private static CompetitorList competitors;
@Override @Override
public void start(Stage stage) throws IOException { public void start(Stage stage) throws IOException {
competitors = createList();
scene = new Scene(loadFXML("main"), 640, 480); scene = new Scene(loadFXML("main"), 640, 480);
Manager.stage = stage; Manager.stage = stage;
Manager.stage.setScene(scene); Manager.stage.setScene(scene);
@ -36,11 +39,25 @@ public class Manager extends Application {
scene.setRoot(loadFXML(fxml)); scene.setRoot(loadFXML(fxml));
} }
private static Parent loadFXML(String fxml) throws IOException { public static Parent loadFXML(String fxml) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(Manager.class.getResource(fxml + ".fxml")); FXMLLoader fxmlLoader = new FXMLLoader(Manager.class.getResource(fxml + ".fxml"));
Parent root = fxmlLoader.load(); Parent root = fxmlLoader.load();
MainController controller = fxmlLoader.<MainController>getController(); Controller controller;
controller.setCompetitors(createList()); switch(fxml) {
case "main":
controller = fxmlLoader.<MainController>getController();
controller.setCompetitors(competitors);
break;
case "pages/edit":
controller = fxmlLoader.<EditController>getController();
controller.setCompetitors(competitors);
break;
case "pages/view":
controller = fxmlLoader.<ViewController>getController();
controller.setCompetitors(competitors);
break;
}
return root; return root;
} }
@ -63,16 +80,4 @@ public class Manager extends Application {
} }
return competitors; return competitors;
} }
public static void filtersOpen() throws IOException {
filters = new Popup();
FXMLLoader loader = new FXMLLoader(Manager.class.getResource("pages/filters.fxml"));
filters.getContent().add((Parent)loader.load());
filters.show(Manager.stage);
}
public static void filtersClose() {
filters.hide();
}
} }

View File

@ -0,0 +1,60 @@
package com.r0r5chach.controllers;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.ResourceBundle;
import com.r0r5chach.CompetitorList;
import com.r0r5chach.Manager;
import com.r0r5chach.competitor.Competitor;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.layout.AnchorPane;
public class Controller implements Initializable {
@FXML
protected AnchorPane editTab;
@FXML
protected AnchorPane viewTab;
protected CompetitorList competitors;
protected ArrayList<Integer> competitorIds;
public void setCompetitors(CompetitorList competitors) {
this.competitors = competitors;
}
@Override
public void initialize(URL location, ResourceBundle resources) {
Platform.runLater(() -> {
loadCompetitors();
});
}
@FXML
protected void getEditTab() throws IOException {
Parent root = Manager.loadFXML("pages/edit");
editTab.getChildren().clear();
editTab.getChildren().add(root);
}
@FXML
protected void getViewTab() throws IOException {
Parent root = Manager.loadFXML("pages/view");
viewTab.getChildren().clear();
viewTab.getChildren().add(root);
}
protected void loadCompetitors(){
competitorIds = new ArrayList<Integer>();
for (Competitor player : competitors.getCompetitors()) {
competitorIds.add(player.getPlayerNumber());
}
}
}

View File

@ -1,5 +1,8 @@
package com.r0r5chach.controllers; package com.r0r5chach.controllers;
import java.net.URL;
import java.util.Arrays;
import java.util.ResourceBundle;
import com.r0r5chach.competitor.Competitor; import com.r0r5chach.competitor.Competitor;
import com.r0r5chach.competitor.Name; import com.r0r5chach.competitor.Name;
import com.r0r5chach.competitor.Rank; import com.r0r5chach.competitor.Rank;
@ -9,65 +12,162 @@ import com.r0r5chach.competitor.r6.R6Player;
import com.r0r5chach.competitor.valorant.ValorantAgent; import com.r0r5chach.competitor.valorant.ValorantAgent;
import com.r0r5chach.competitor.valorant.ValorantPlayer; import com.r0r5chach.competitor.valorant.ValorantPlayer;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox; import javafx.scene.control.ChoiceBox;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.text.Text; import javafx.scene.text.Text;
public class EditController {
public static void loadPlayer(Competitor player, TextField[] textFields, ChoiceBox<Rank> level) { public class EditController extends Controller {
@FXML
private ListView<Integer> competitorsList;
@FXML
private TextField playerNumber;
@FXML
private TextField playerName;
@FXML
private ChoiceBox<Rank> playerLevel;
@FXML
private Text favoriteCharacters;
@FXML
private ChoiceBox<R6Attacker> favoriteAttacker;
@FXML
private ChoiceBox<ValorantAgent> favoriteAgent;
@FXML
private ChoiceBox<R6Defender> favoriteDefender;
@FXML
private TextField scores0;
@FXML
private TextField scores1;
@FXML
private TextField scores2;
@FXML
private TextField scores3;
@FXML
private TextField scores4;
@FXML
private TextField scores5;
@FXML
private TextField overallScore;
@FXML
private Button updateButton;
private TextField[] textFields;
private TextField[] scoreFields;
@Override
public void initialize(URL location, ResourceBundle resources) {
Platform.runLater(() -> {
textFields = new TextField[]{playerNumber, playerName, overallScore};
scoreFields = new TextField[]{scores0, scores1, scores2, scores3, scores4, scores5};
loadCompetitors();
loadEdit();
});
}
private void loadPlayer(Competitor player) {
textFields[0].setText(String.valueOf(player.getPlayerNumber())); textFields[0].setText(String.valueOf(player.getPlayerNumber()));
textFields[1].setText(player.getPlayerName().getFullName()); textFields[1].setText(player.getPlayerName().getFullName());
level.getSelectionModel().select(player.getPlayerLevel());; playerLevel.getSelectionModel().select(player.getPlayerLevel());;
textFields[2].setText(String.valueOf(player.getOverallScore())); textFields[2].setText(String.valueOf(player.getOverallScore()));
loadFavoriteCharacters(player);
loadScores(player);
} }
public static void loadFavoriteCharacters(Competitor player, ChoiceBox<R6Attacker> attacker, ChoiceBox<R6Defender> defender, ChoiceBox<ValorantAgent> agent, Text field) { private void loadFavoriteCharacters(Competitor player) {
if (player instanceof R6Player) { if (player instanceof R6Player) {
attacker.getSelectionModel().select(((R6Player) player).getFavoriteAttacker()); favoriteAttacker.getSelectionModel().select(((R6Player) player).getFavoriteAttacker());
defender.getSelectionModel().select((((R6Player) player).getFavoriteDefender())); favoriteDefender.getSelectionModel().select((((R6Player) player).getFavoriteDefender()));
agent.visibleProperty().set(false); favoriteAgent.visibleProperty().set(false);
attacker.visibleProperty().set(true); favoriteAttacker.visibleProperty().set(true);
defender.visibleProperty().set(true); favoriteDefender.visibleProperty().set(true);
field.setText("Favorite Operators"); favoriteCharacters.setText("Favorite Operators");
} }
else if (player instanceof ValorantPlayer) { else if (player instanceof ValorantPlayer) {
agent.getSelectionModel().select(((ValorantPlayer) player).getFavoriteAgent()); favoriteAgent.getSelectionModel().select(((ValorantPlayer) player).getFavoriteAgent());
agent.visibleProperty().set(true); favoriteAgent.visibleProperty().set(true);
attacker.visibleProperty().set(false); favoriteAttacker.visibleProperty().set(false);
defender.visibleProperty().set(false); favoriteDefender.visibleProperty().set(false);
field.setText("Favorite Agent"); favoriteCharacters.setText("Favorite Agent");
} }
} }
public static void loadScores(Competitor player, TextField[] fields) { private void loadScores(Competitor player) {
int[] playerScores = player.getScores(); int[] playerScores = player.getScores();
for (int i = 0; i < playerScores.length; i++) { for (int i = 0; i < playerScores.length; i++) {
fields[i].setText(String.valueOf(playerScores[i])); scoreFields[i].setText(String.valueOf(playerScores[i]));
} }
} }
public static void updatePlayer(Competitor player, TextField[] fields, ChoiceBox<Rank> level) { private void updatePlayer(Competitor player) {
player.setPlayerNumber(Integer.parseInt(fields[0].getText())); player.setPlayerNumber(Integer.parseInt(textFields[0].getText()));
player.setPlayerName(new Name(fields[1].getText())); player.setPlayerName(new Name(textFields[1].getText()));
player.setPlayerLevel(level.getValue()); player.setPlayerLevel(playerLevel.getValue());
updateFavoriteCharacters(player);
updateScores(player);
} }
public static void updateFavoriteCharacters(Competitor player, ChoiceBox<R6Attacker> attacker, ChoiceBox<R6Defender> defender, ChoiceBox<ValorantAgent> agent) { private void updateFavoriteCharacters(Competitor player) {
if (player instanceof R6Player) { if (player instanceof R6Player) {
((R6Player) player).setFavoriteAttacker(attacker.getValue()); ((R6Player) player).setFavoriteAttacker(favoriteAttacker.getValue());
((R6Player) player).setFavoriteDefender(defender.getValue()); ((R6Player) player).setFavoriteDefender(favoriteDefender.getValue());
} }
else if (player instanceof ValorantPlayer) { else if (player instanceof ValorantPlayer) {
((ValorantPlayer) player).setFavoriteAgent(agent.getValue()); ((ValorantPlayer) player).setFavoriteAgent(favoriteAgent.getValue());
} }
} }
public static void updateScores(Competitor player, TextField[] fields) { private void updateScores(Competitor player) {
int[] newScores = new int[6]; int[] newScores = new int[6];
for (int i = 0; i < newScores.length; i++) { for (int i = 0; i < newScores.length; i++) {
newScores[i] = Integer.parseInt(fields[i].getText()); newScores[i] = Integer.parseInt(scoreFields[i].getText());
} }
player.setScores(newScores); player.setScores(newScores);
} }
} @FXML
private void getCompetitor() {
Competitor player = competitors.getCompetitors().get(competitorIds.indexOf(competitorsList.getSelectionModel().getSelectedItem()));
loadPlayer(player);
}
@FXML
private void updateCompetitor() {
int playerIndex = competitorIds.indexOf(competitorsList.getSelectionModel().getSelectedItem());
Competitor player = competitors.getCompetitors().get(playerIndex);
updatePlayer(player);
competitorIds.set(playerIndex, player.getPlayerNumber());
loadEdit();
loadPlayer(player);
}
public void loadEdit() {
competitorsList.setItems(FXCollections.observableList(competitorIds));
playerLevel.setItems(FXCollections.observableList(Arrays.asList(Rank.values())));
favoriteAttacker.setItems(FXCollections.observableList(Arrays.asList(R6Attacker.values())));
favoriteDefender.setItems(FXCollections.observableList(Arrays.asList(R6Defender.values())));
favoriteAgent.setItems(FXCollections.observableList(Arrays.asList(ValorantAgent.values())));
}
}

View File

@ -1,6 +1,5 @@
package com.r0r5chach.controllers; package com.r0r5chach.controllers;
import com.r0r5chach.Manager;
import com.r0r5chach.competitor.Rank; import com.r0r5chach.competitor.Rank;
import com.r0r5chach.competitor.valorant.ValorantAgent; import com.r0r5chach.competitor.valorant.ValorantAgent;
@ -27,9 +26,4 @@ public class FiltersController {
@FXML @FXML
ChoiceBox<ValorantAgent> agentFilter; ChoiceBox<ValorantAgent> agentFilter;
@FXML
private void filterSave() {
Manager.filtersClose();
}
} }

View File

@ -1,157 +1,5 @@
package com.r0r5chach.controllers; package com.r0r5chach.controllers;
import java.io.IOException; public class MainController extends Controller {
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.ResourceBundle;
import com.r0r5chach.CompetitorList;
import com.r0r5chach.Manager;
import com.r0r5chach.competitor.Competitor;
import com.r0r5chach.competitor.Rank;
import com.r0r5chach.competitor.r6.R6Attacker;
import com.r0r5chach.competitor.r6.R6Defender;
import com.r0r5chach.competitor.valorant.ValorantAgent;
import com.r0r5chach.pages.CompetitorRow;
import javafx.application.Platform;
import javafx.collections.FXCollections;
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.TableView;
import javafx.scene.control.TextField;
import javafx.scene.text.Text;
import static com.r0r5chach.controllers.EditController.loadFavoriteCharacters;
import static com.r0r5chach.controllers.EditController.loadPlayer;
import static com.r0r5chach.controllers.EditController.loadScores;
import static com.r0r5chach.controllers.EditController.updateFavoriteCharacters;
import static com.r0r5chach.controllers.EditController.updatePlayer;
import static com.r0r5chach.controllers.EditController.updateScores;
import static com.r0r5chach.controllers.ViewController.generateTable;
import static com.r0r5chach.controllers.ViewController.loadTable;
public class MainController implements Initializable {
private CompetitorList competitors;
private ArrayList<Integer> competitorIds;
private TextField[] scores;
private TextField[] fields;
@FXML
private ListView<Integer> competitorsList;
@FXML
private TextField playerNumber;
@FXML
private TextField playerName;
@FXML
private ChoiceBox<Rank> playerLevel;
@FXML
private Text favoriteCharacters;
@FXML
private ChoiceBox<R6Attacker> favoriteAttacker;
@FXML
private ChoiceBox<ValorantAgent> favoriteAgent;
@FXML
private ChoiceBox<R6Defender> favoriteDefender;
@FXML
private TextField scores0;
@FXML
private TextField scores1;
@FXML
private TextField scores2;
@FXML
private TextField scores3;
@FXML
private TextField scores4;
@FXML
private TextField scores5;
@FXML
private TextField overallScore;
@FXML
private Button updateButton;
@FXML
private TableView<CompetitorRow> competitorTable;
@Override
public void initialize(URL url, ResourceBundle rb) {
Platform.runLater(() -> {
scores = new TextField[]{scores0, scores1, scores2, scores3, scores4, scores5};
fields = new TextField[]{playerNumber, playerName, overallScore};
loadCompetitors();
generateTable(competitorTable);
loadEdit();
});
}
public void setCompetitors(CompetitorList competitors) {
this.competitors = competitors;
}
@FXML
private void getCompetitor() {
Competitor player = competitors.getCompetitors().get(competitorIds.indexOf(competitorsList.getSelectionModel().getSelectedItem()));
loadPlayer(player,fields, playerLevel);
loadFavoriteCharacters(player, favoriteAttacker, favoriteDefender, favoriteAgent, favoriteCharacters);
loadScores(player, scores);
}
@FXML
private void updateCompetitor() {
int playerIndex = competitorIds.indexOf(competitorsList.getSelectionModel().getSelectedItem());
Competitor player = competitors.getCompetitors().get(playerIndex);
updatePlayer(player, fields, playerLevel);
updateFavoriteCharacters(player, favoriteAttacker, favoriteDefender, favoriteAgent);
updateScores(player, scores);
competitorIds.set(playerIndex, player.getPlayerNumber());
loadEdit();
loadPlayer(player, fields, playerLevel);
loadFavoriteCharacters(player, favoriteAttacker, favoriteDefender, favoriteAgent, favoriteCharacters);
loadScores(player, scores);
}
private void loadCompetitors(){
competitorIds = new ArrayList<Integer>();
for (Competitor player : competitors.getCompetitors()) {
competitorIds.add(player.getPlayerNumber());
}
}
@FXML
private void loadEdit() {
competitorsList.setItems(FXCollections.observableList(competitorIds));
playerLevel.setItems(FXCollections.observableList(Arrays.asList(Rank.values())));
favoriteAttacker.setItems(FXCollections.observableList(Arrays.asList(R6Attacker.values())));
favoriteDefender.setItems(FXCollections.observableList(Arrays.asList(R6Defender.values())));
favoriteAgent.setItems(FXCollections.observableList(Arrays.asList(ValorantAgent.values())));
}
@FXML
private void loadView() {
competitorTable.setItems(loadTable(competitors.getCompetitors()));
}
@FXML
private void filterPress() throws IOException {
Manager.filtersOpen();
}
} }

View File

@ -1,48 +1,60 @@
package com.r0r5chach.controllers; package com.r0r5chach.controllers;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.ResourceBundle;
import com.r0r5chach.CompetitorRow; import com.r0r5chach.CompetitorRow;
import com.r0r5chach.Manager;
import com.r0r5chach.competitor.Competitor; import com.r0r5chach.competitor.Competitor;
import com.r0r5chach.competitor.Rank; import com.r0r5chach.competitor.Rank;
import com.r0r5chach.competitor.r6.R6Player; import com.r0r5chach.competitor.r6.R6Player;
import com.r0r5chach.competitor.valorant.ValorantPlayer; import com.r0r5chach.competitor.valorant.ValorantPlayer;
import javafx.application.Platform;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.Parent;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Popup;
public class ViewController { public class ViewController extends Controller {
@FXML
private TableView<CompetitorRow> competitorTable;
public static void generateTable(TableView<CompetitorRow> table) { @FXML Button filterButton;
TableColumn<CompetitorRow,Integer> playerNumCol = new TableColumn<CompetitorRow,Integer>("Player Number");
TableColumn<CompetitorRow,String> playerNameCol = new TableColumn<CompetitorRow,String>("Player Name"); private TableColumn<CompetitorRow,Integer> playerNumCol;
TableColumn<CompetitorRow,Rank> playerLevelCol = new TableColumn<CompetitorRow,Rank>("Player Level"); private TableColumn<CompetitorRow,String> playerNameCol;
TableColumn<CompetitorRow,String> scoresCol = new TableColumn<CompetitorRow,String>("Player Scores"); private TableColumn<CompetitorRow,Rank> playerLevelCol;
TableColumn<CompetitorRow,String> favoriteCharsCol = new TableColumn<CompetitorRow,String>("Favorite Characters"); private TableColumn<CompetitorRow,String> scoresCol;
TableColumn<CompetitorRow,String> favoriteAgentCol = new TableColumn<CompetitorRow,String>("Agent"); private TableColumn<CompetitorRow,String> favoriteCharsCol;
TableColumn<CompetitorRow,String> favoriteAttackerCol = new TableColumn<CompetitorRow,String>("Attacker"); private TableColumn<CompetitorRow,String> favoriteAgentCol;
TableColumn<CompetitorRow,String> favoriteDefenderCol = new TableColumn<CompetitorRow,String>("Defender"); private TableColumn<CompetitorRow,String> favoriteAttackerCol;
playerNumCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,Integer>("playerNumber")); private TableColumn<CompetitorRow,String> favoriteDefenderCol;
playerNameCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,String>("playerName"));
playerLevelCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,Rank>("playerLevel")); private Popup filters;
scoresCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,String>("scores"));
favoriteAgentCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,String>("favoriteAgent")); @Override
favoriteAttackerCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,String>("favoriteAttacker")); public void initialize(URL ul, ResourceBundle rb) {
favoriteDefenderCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,String>("favoriteDefender")); Platform.runLater(() -> {
table.getColumns().add(playerNumCol); loadCompetitors();
table.getColumns().add(playerNameCol); loadView();
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<CompetitorRow> loadTable(ArrayList<Competitor> list) { public void generateTable() {
initColumns();
setColumnCellValues();
addColumns();
}
public ObservableList<CompetitorRow> loadTable(ArrayList<Competitor> list) {
ArrayList<CompetitorRow> outputList = new ArrayList<>(); ArrayList<CompetitorRow> outputList = new ArrayList<>();
for(Competitor player: list) { for(Competitor player: list) {
if (player instanceof ValorantPlayer) { if (player instanceof ValorantPlayer) {
@ -54,5 +66,64 @@ public class ViewController {
} }
return FXCollections.observableArrayList(outputList); return FXCollections.observableArrayList(outputList);
} }
private void loadView() {
generateTable();
competitorTable.setItems(loadTable(competitors.getCompetitors()));
}
private void initColumns() {
playerNumCol = new TableColumn<CompetitorRow,Integer>("Player Number");
playerNameCol = new TableColumn<CompetitorRow,String>("Player Name");
playerLevelCol = new TableColumn<CompetitorRow,Rank>("Player Level");
scoresCol = new TableColumn<CompetitorRow,String>("Player Scores");
favoriteCharsCol = new TableColumn<CompetitorRow,String>("Favorite Characters");
favoriteAgentCol = new TableColumn<CompetitorRow,String>("Agent");
favoriteAttackerCol = new TableColumn<CompetitorRow,String>("Attacker");
favoriteDefenderCol = new TableColumn<CompetitorRow,String>("Defender");
}
private void setColumnCellValues() {
playerNumCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,Integer>("playerNumber"));
playerNameCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,String>("playerName"));
playerLevelCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,Rank>("playerLevel"));
scoresCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,String>("scores"));
favoriteAgentCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,String>("favoriteAgent"));
favoriteAttackerCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,String>("favoriteAttacker"));
favoriteDefenderCol.setCellValueFactory(new PropertyValueFactory<CompetitorRow,String>("favoriteDefender"));
}
private void addColumns() {
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 filterPress() throws IOException {
switch(filterButton.getText().toLowerCase()) {
case "filters" -> filterDialog();
case "save" -> saveFilters();
}
}
private void filterDialog() throws IOException {
filters = new Popup();
Parent root = Manager.loadFXML("pages/filters");
filters.getContent().add(root);
filters.show(Manager.stage);
filterButton.setText("Save");
}
private void saveFilters() {
filters.hide();
filterButton.setText("Filters");
//TODO: filter implementation
}
} }

View File

@ -4,7 +4,6 @@ module com.r0r5chach {
requires javafx.fxml; requires javafx.fxml;
opens com.r0r5chach to javafx.fxml; opens com.r0r5chach to javafx.fxml;
opens com.r0r5chach.pages to javafx.base;
opens com.r0r5chach.controllers to javafx.fxml; opens com.r0r5chach.controllers to javafx.fxml;
exports com.r0r5chach; exports com.r0r5chach;
exports com.r0r5chach.competitor; exports com.r0r5chach.competitor;

View File

@ -1,169 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.Tab?> <?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?> <?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Text?>
<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.r0r5chach.controllers.MainController"> <VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.r0r5chach.controllers.MainController">
<children> <children>
<TabPane prefHeight="406.0" prefWidth="600.0" tabClosingPolicy="UNAVAILABLE"> <TabPane tabClosingPolicy="UNAVAILABLE">
<tabs> <tabs>
<Tab text="Home"> <Tab onSelectionChanged="#getEditTab" text="Edit">
<content>
<AnchorPane fx:id="editTab" />
</content></Tab>
<Tab onSelectionChanged="#getViewTab" text="View">
<content> <content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" /> <AnchorPane fx:id="viewTab" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" />
</content> </content>
</Tab> </Tab>
<Tab onSelectionChanged="#loadEdit" text="Edit">
<content>
<SplitPane dividerPositions="0.3016666666666667" prefHeight="254.0" prefWidth="600.0">
<items>
<VBox maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="371.0" prefWidth="212.0">
<children>
<ListView fx:id="competitorsList" onMouseClicked="#getCompetitor" prefHeight="371.0" prefWidth="193.0" />
</children>
</VBox>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="204.0" minWidth="10.0" prefWidth="127.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="326.0" minWidth="10.0" prefWidth="291.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<TextField fx:id="playerNumber" prefHeight="25.0" prefWidth="160.0" GridPane.columnIndex="1">
<GridPane.margin>
<Insets right="100.0" />
</GridPane.margin>
</TextField>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Player Number" GridPane.halignment="RIGHT">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Text>
<TextField fx:id="playerName" prefHeight="25.0" prefWidth="160.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
<GridPane.margin>
<Insets right="100.0" />
</GridPane.margin>
</TextField>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Name" GridPane.halignment="RIGHT" GridPane.rowIndex="1">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Text>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Level" GridPane.halignment="RIGHT" GridPane.rowIndex="2">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Text>
<Text fx:id="favoriteCharacters" strokeType="OUTSIDE" strokeWidth="0.0" text="Favorite Character(s)" GridPane.halignment="RIGHT" GridPane.rowIndex="3">
<GridPane.margin>
<Insets bottom="45.0" right="10.0" />
</GridPane.margin>
</Text>
<VBox prefHeight="0.0" prefWidth="291.0" GridPane.columnIndex="1" GridPane.rowIndex="3">
<children>
<ChoiceBox fx:id="favoriteAttacker" prefWidth="150.0" />
<ChoiceBox fx:id="favoriteAgent" prefWidth="150.0" visible="false">
<VBox.margin>
<Insets />
</VBox.margin>
</ChoiceBox>
<ChoiceBox fx:id="favoriteDefender" prefWidth="150.0">
<VBox.margin>
<Insets top="15.0" />
</VBox.margin>
</ChoiceBox>
</children>
</VBox>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Scores" GridPane.halignment="RIGHT" GridPane.rowIndex="4">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Text>
<TextField fx:id="scores0" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets right="268.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="scores1" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="40.0" right="228.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="scores2" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="80.0" right="188.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="scores3" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="120.0" right="148.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="scores4" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="160.0" right="108.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="scores5" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="200.0" right="68.0" />
</GridPane.margin>
</TextField>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Overall Score" GridPane.halignment="RIGHT" GridPane.rowIndex="5">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Text>
<TextField fx:id="overallScore" GridPane.columnIndex="1" GridPane.rowIndex="5">
<GridPane.margin>
<Insets right="200.0" />
</GridPane.margin>
</TextField>
<Button fx:id="updateButton" mnemonicParsing="false" onAction="#updateCompetitor" text="Update" GridPane.columnIndex="1" GridPane.halignment="RIGHT" GridPane.rowIndex="5">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Button>
<ChoiceBox fx:id="playerLevel" prefHeight="25.0" prefWidth="193.0" GridPane.columnIndex="1" GridPane.rowIndex="2" />
</children>
</GridPane>
</items>
</SplitPane>
</content>
</Tab>
<Tab onSelectionChanged="#loadView" text="View">
<content>
<VBox prefHeight="200.0" prefWidth="100.0">
<children>
<TableView fx:id="competitorTable" prefHeight="371.0" prefWidth="600.0" />
<Button fx:id="filterButton" mnemonicParsing="false" onAction="#filterPress" text="Filters">
<VBox.margin>
<Insets top="15.0" />
</VBox.margin>
</Button>
</children>
</VBox>
</content>
</Tab>
<Tab text="Report"> <Tab text="Report">
<content> <content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" /> <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />

View File

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Text?>
<SplitPane fx:id="window" dividerPositions="0.3016666666666667" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.r0r5chach.controllers.EditController">
<items>
<VBox maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="371.0" prefWidth="212.0">
<children>
<ListView fx:id="competitorsList" onMouseClicked="#getCompetitor" prefHeight="371.0" prefWidth="193.0" />
</children>
</VBox>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="204.0" minWidth="10.0" prefWidth="127.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="326.0" minWidth="10.0" prefWidth="291.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<TextField fx:id="playerNumber" prefHeight="25.0" prefWidth="160.0" GridPane.columnIndex="1">
<GridPane.margin>
<Insets right="100.0" />
</GridPane.margin>
</TextField>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Player Number" GridPane.halignment="RIGHT">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Text>
<TextField fx:id="playerName" prefHeight="25.0" prefWidth="160.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
<GridPane.margin>
<Insets right="100.0" />
</GridPane.margin>
</TextField>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Name" GridPane.halignment="RIGHT" GridPane.rowIndex="1">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Text>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Level" GridPane.halignment="RIGHT" GridPane.rowIndex="2">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Text>
<Text fx:id="favoriteCharacters" strokeType="OUTSIDE" strokeWidth="0.0" text="Favorite Character(s)" GridPane.halignment="RIGHT" GridPane.rowIndex="3">
<GridPane.margin>
<Insets bottom="45.0" right="10.0" />
</GridPane.margin>
</Text>
<VBox prefHeight="0.0" prefWidth="291.0" GridPane.columnIndex="1" GridPane.rowIndex="3">
<children>
<ChoiceBox fx:id="favoriteAttacker" prefWidth="150.0" />
<ChoiceBox fx:id="favoriteAgent" prefWidth="150.0" visible="false">
<VBox.margin>
<Insets />
</VBox.margin>
</ChoiceBox>
<ChoiceBox fx:id="favoriteDefender" prefWidth="150.0">
<VBox.margin>
<Insets top="15.0" />
</VBox.margin>
</ChoiceBox>
</children>
</VBox>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Scores" GridPane.halignment="RIGHT" GridPane.rowIndex="4">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Text>
<TextField fx:id="scores0" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets right="268.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="scores1" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="40.0" right="228.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="scores2" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="80.0" right="188.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="scores3" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="120.0" right="148.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="scores4" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="160.0" right="108.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="scores5" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="200.0" right="68.0" />
</GridPane.margin>
</TextField>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Overall Score" GridPane.halignment="RIGHT" GridPane.rowIndex="5">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Text>
<TextField fx:id="overallScore" GridPane.columnIndex="1" GridPane.rowIndex="5">
<GridPane.margin>
<Insets right="200.0" />
</GridPane.margin>
</TextField>
<Button fx:id="updateButton" mnemonicParsing="false" onAction="#updateCompetitor" text="Update" GridPane.columnIndex="1" GridPane.halignment="RIGHT" GridPane.rowIndex="5">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Button>
<ChoiceBox fx:id="playerLevel" prefHeight="25.0" prefWidth="193.0" GridPane.columnIndex="1" GridPane.rowIndex="2" />
</children>
</GridPane>
</items>
</SplitPane>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?> <?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.RadioButton?> <?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.TextField?> <?import javafx.scene.control.TextField?>
@ -99,11 +98,6 @@
<Insets left="50.0" /> <Insets left="50.0" />
</GridPane.margin> </GridPane.margin>
</RadioButton> </RadioButton>
<Button mnemonicParsing="false" onAction="#filterSave" text="Save" GridPane.columnIndex="1" GridPane.halignment="RIGHT" GridPane.rowIndex="7">
<GridPane.margin>
<Insets right="15.0" />
</GridPane.margin>
</Button>
</children> </children>
</GridPane> </GridPane>
</children> </children>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.VBox?>
<Pane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.r0r5chach.controllers.ViewController">
<children>
<VBox layoutX="10.0" layoutY="10.0">
<children>
<TableView fx:id="competitorTable" prefHeight="380.0" prefWidth="600.0" />
<Button fx:id="filterButton" mnemonicParsing="false" onAction="#filterPress" text="Filters">
<VBox.margin>
<Insets bottom="15.0" top="15.0" />
</VBox.margin>
</Button>
</children>
</VBox>
</children>
</Pane>