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 java.io.IOException;
import com.r0r5chach.controllers.Controller;
import com.r0r5chach.controllers.EditController;
import com.r0r5chach.controllers.MainController;
import com.r0r5chach.controllers.ViewController;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.stage.Popup;
import javafx.stage.Stage;
import javafx.scene.Scene;
import static com.r0r5chach.CompetitorList.createErrorLog;
@ -16,11 +18,12 @@ import static com.r0r5chach.CompetitorList.createErrorLog;
public class Manager extends Application {
private static Scene scene;
private static Stage stage;
private static Popup filters;
public static Stage stage;
private static CompetitorList competitors;
@Override
public void start(Stage stage) throws IOException {
competitors = createList();
scene = new Scene(loadFXML("main"), 640, 480);
Manager.stage = stage;
Manager.stage.setScene(scene);
@ -36,11 +39,25 @@ public class Manager extends Application {
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"));
Parent root = fxmlLoader.load();
MainController controller = fxmlLoader.<MainController>getController();
controller.setCompetitors(createList());
Controller controller;
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;
}
@ -63,16 +80,4 @@ public class Manager extends Application {
}
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;
import java.net.URL;
import java.util.Arrays;
import java.util.ResourceBundle;
import com.r0r5chach.competitor.Competitor;
import com.r0r5chach.competitor.Name;
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.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.ListView;
import javafx.scene.control.TextField;
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[1].setText(player.getPlayerName().getFullName());
level.getSelectionModel().select(player.getPlayerLevel());;
playerLevel.getSelectionModel().select(player.getPlayerLevel());;
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) {
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");
favoriteAttacker.getSelectionModel().select(((R6Player) player).getFavoriteAttacker());
favoriteDefender.getSelectionModel().select((((R6Player) player).getFavoriteDefender()));
favoriteAgent.visibleProperty().set(false);
favoriteAttacker.visibleProperty().set(true);
favoriteDefender.visibleProperty().set(true);
favoriteCharacters.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");
favoriteAgent.getSelectionModel().select(((ValorantPlayer) player).getFavoriteAgent());
favoriteAgent.visibleProperty().set(true);
favoriteAttacker.visibleProperty().set(false);
favoriteDefender.visibleProperty().set(false);
favoriteCharacters.setText("Favorite Agent");
}
}
public static void loadScores(Competitor player, TextField[] fields) {
private void loadScores(Competitor player) {
int[] playerScores = player.getScores();
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) {
player.setPlayerNumber(Integer.parseInt(fields[0].getText()));
player.setPlayerName(new Name(fields[1].getText()));
player.setPlayerLevel(level.getValue());
private void updatePlayer(Competitor player) {
player.setPlayerNumber(Integer.parseInt(textFields[0].getText()));
player.setPlayerName(new Name(textFields[1].getText()));
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) {
((R6Player) player).setFavoriteAttacker(attacker.getValue());
((R6Player) player).setFavoriteDefender(defender.getValue());
((R6Player) player).setFavoriteAttacker(favoriteAttacker.getValue());
((R6Player) player).setFavoriteDefender(favoriteDefender.getValue());
}
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];
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);
}
@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;
import com.r0r5chach.Manager;
import com.r0r5chach.competitor.Rank;
import com.r0r5chach.competitor.valorant.ValorantAgent;
@ -27,9 +26,4 @@ public class FiltersController {
@FXML
ChoiceBox<ValorantAgent> agentFilter;
@FXML
private void filterSave() {
Manager.filtersClose();
}
}

View File

@ -1,157 +1,5 @@
package com.r0r5chach.controllers;
import java.io.IOException;
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 class MainController extends Controller {
}
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;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.ResourceBundle;
import com.r0r5chach.CompetitorRow;
import com.r0r5chach.Manager;
import com.r0r5chach.competitor.Competitor;
import com.r0r5chach.competitor.Rank;
import com.r0r5chach.competitor.r6.R6Player;
import com.r0r5chach.competitor.valorant.ValorantPlayer;
import javafx.application.Platform;
import javafx.collections.FXCollections;
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.TableView;
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) {
TableColumn<CompetitorRow,Integer> playerNumCol = new TableColumn<CompetitorRow,Integer>("Player Number");
TableColumn<CompetitorRow,String> playerNameCol = new TableColumn<CompetitorRow,String>("Player Name");
TableColumn<CompetitorRow,Rank> playerLevelCol = new TableColumn<CompetitorRow,Rank>("Player Level");
TableColumn<CompetitorRow,String> scoresCol = new TableColumn<CompetitorRow,String>("Player Scores");
TableColumn<CompetitorRow,String> favoriteCharsCol = new TableColumn<CompetitorRow,String>("Favorite Characters");
TableColumn<CompetitorRow,String> favoriteAgentCol = new TableColumn<CompetitorRow,String>("Agent");
TableColumn<CompetitorRow,String> favoriteAttackerCol = new TableColumn<CompetitorRow,String>("Attacker");
TableColumn<CompetitorRow,String> favoriteDefenderCol = new TableColumn<CompetitorRow,String>("Defender");
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"));
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);
@FXML Button filterButton;
private TableColumn<CompetitorRow,Integer> playerNumCol;
private TableColumn<CompetitorRow,String> playerNameCol;
private TableColumn<CompetitorRow,Rank> playerLevelCol;
private TableColumn<CompetitorRow,String> scoresCol;
private TableColumn<CompetitorRow,String> favoriteCharsCol;
private TableColumn<CompetitorRow,String> favoriteAgentCol;
private TableColumn<CompetitorRow,String> favoriteAttackerCol;
private TableColumn<CompetitorRow,String> favoriteDefenderCol;
private Popup filters;
@Override
public void initialize(URL ul, ResourceBundle rb) {
Platform.runLater(() -> {
loadCompetitors();
loadView();
});
}
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<>();
for(Competitor player: list) {
if (player instanceof ValorantPlayer) {
@ -55,4 +67,63 @@ public class ViewController {
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;
opens com.r0r5chach to javafx.fxml;
opens com.r0r5chach.pages to javafx.base;
opens com.r0r5chach.controllers to javafx.fxml;
exports com.r0r5chach;
exports com.r0r5chach.competitor;

View File

@ -1,167 +1,21 @@
<?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.TabPane?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextField?>
<?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.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>
<TabPane prefHeight="406.0" prefWidth="600.0" tabClosingPolicy="UNAVAILABLE">
<TabPane tabClosingPolicy="UNAVAILABLE">
<tabs>
<Tab text="Home">
<Tab onSelectionChanged="#getEditTab" text="Edit">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
</Tab>
<Tab onSelectionChanged="#loadEdit" text="Edit">
<AnchorPane fx:id="editTab" />
</content></Tab>
<Tab onSelectionChanged="#getViewTab" text="View">
<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>
<AnchorPane fx:id="viewTab" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" />
</content>
</Tab>
<Tab text="Report">

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"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.TextField?>
@ -99,11 +98,6 @@
<Insets left="50.0" />
</GridPane.margin>
</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>
</GridPane>
</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>