CSY2030-assignment-2/src/main/java/com/r0r5chach/MainController.java

155 lines
4.7 KiB
Java
Raw Normal View History

2023-01-31 17:19:32 +00:00
package com.r0r5chach;
import java.net.URL;
import java.util.ArrayList;
2023-02-01 14:28:41 +00:00
import java.util.Arrays;
import java.util.ResourceBundle;
2023-02-01 20:37:50 +00:00
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;
2023-02-01 15:33:30 +00:00
import javafx.application.Platform;
2023-01-31 17:19:32 +00:00
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
2023-02-01 14:28:41 +00:00
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
2023-01-31 17:19:32 +00:00
import javafx.scene.control.ListView;
2023-02-01 19:26:01 +00:00
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.text.Text;
2023-01-31 17:19:32 +00:00
2023-02-01 20:34:42 +00:00
import static com.r0r5chach.pages.EditPage.loadPlayer;
import static com.r0r5chach.pages.EditPage.loadFavoriteCharacters;
import static com.r0r5chach.pages.EditPage.loadScores;
import static com.r0r5chach.pages.EditPage.updatePlayer;
import static com.r0r5chach.pages.EditPage.updateFavoriteCharacters;
import static com.r0r5chach.pages.EditPage.updateScores;
import static com.r0r5chach.pages.ViewPage.generateTable;
import static com.r0r5chach.pages.ViewPage.loadTable;
public class MainController implements Initializable {
2023-01-31 17:19:32 +00:00
private CompetitorList competitors;
private ArrayList<Integer> competitorIds;
@FXML
2023-02-01 20:46:43 +00:00
private ListView<Integer> competitorsList;
@FXML
2023-02-01 20:46:43 +00:00
private TextField playerNumber;
@FXML
2023-02-01 20:46:43 +00:00
private TextField playerName;
@FXML
2023-02-01 20:46:43 +00:00
private ChoiceBox<Rank> playerLevel;
@FXML
2023-02-01 20:46:43 +00:00
private Text favoriteCharacters;
@FXML
2023-02-01 20:46:43 +00:00
private ChoiceBox<R6Attacker> favoriteAttacker;
2023-01-31 17:19:32 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private ChoiceBox<ValorantAgent> favoriteAgent;
2023-02-01 14:28:41 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private ChoiceBox<R6Defender> favoriteDefender;
2023-02-01 13:51:13 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private TextField scores0;
2023-02-01 13:51:13 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private TextField scores1;
2023-02-01 13:51:13 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private TextField scores2;
2023-02-01 13:51:13 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private TextField scores3;
2023-02-01 13:51:13 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private TextField scores4;
2023-02-01 13:51:13 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private TextField scores5;
2023-02-01 13:51:13 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private TextField overallScore;
2023-02-01 13:51:13 +00:00
2023-02-01 20:46:43 +00:00
private TextField[] scores;
2023-02-01 13:51:13 +00:00
2023-02-01 20:46:43 +00:00
private TextField[] fields;
2023-02-01 14:28:41 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private Button updateButton;
2023-02-01 14:28:41 +00:00
2023-02-01 19:26:01 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private TableView<CompetitorRow> competitorTable;
2023-02-01 15:33:30 +00:00
@FXML
2023-02-01 20:46:43 +00:00
private Button filterButton;
@Override
public void initialize(URL url, ResourceBundle rb) {
2023-02-01 15:33:30 +00:00
Platform.runLater(() -> {
scores = new TextField[]{scores0, scores1, scores2, scores3, scores4, scores5};
fields = new TextField[]{playerNumber, playerName, overallScore};
2023-02-01 15:33:30 +00:00
loadCompetitors();
2023-02-01 20:34:42 +00:00
generateTable(competitorTable);
2023-02-01 15:33:30 +00:00
loadEdit();
});
2023-02-01 14:28:41 +00:00
}
2023-02-01 14:45:52 +00:00
public void setCompetitors(CompetitorList list) {
this.competitors = list;
}
2023-02-01 14:28:41 +00:00
@FXML
private void getCompetitor() {
Competitor player = competitors.getCompetitors().get(competitorIds.indexOf(competitorsList.getSelectionModel().getSelectedItem()));
2023-02-01 20:34:42 +00:00
loadPlayer(player,fields, playerLevel);
loadFavoriteCharacters(player, favoriteAttacker, favoriteDefender, favoriteAgent, favoriteCharacters);
loadScores(player, scores);
2023-02-01 14:28:41 +00:00
}
@FXML
private void updateCompetitor() {
int playerIndex = competitorIds.indexOf(competitorsList.getSelectionModel().getSelectedItem());
Competitor player = competitors.getCompetitors().get(playerIndex);
2023-02-01 20:34:42 +00:00
updatePlayer(player, fields, playerLevel);
updateFavoriteCharacters(player, favoriteAttacker, favoriteDefender, favoriteAgent);
updateScores(player, scores);
2023-02-01 14:28:41 +00:00
competitorIds.set(playerIndex, player.getPlayerNumber());
2023-02-01 15:33:30 +00:00
loadEdit();
2023-02-01 20:34:42 +00:00
loadPlayer(player, fields, playerLevel);
loadFavoriteCharacters(player, favoriteAttacker, favoriteDefender, favoriteAgent, favoriteCharacters);
loadScores(player, scores);
2023-02-01 14:28:41 +00:00
}
2023-01-31 17:19:32 +00:00
private void loadCompetitors(){
this.competitorIds = new ArrayList<Integer>();
for (Competitor player : this.competitors.getCompetitors()) {
this.competitorIds.add(player.getPlayerNumber());
}
}
2023-02-01 15:33:30 +00:00
@FXML
private void loadEdit() {
competitorsList.setItems(FXCollections.observableList(this.competitorIds));
2023-02-01 14:28:41 +00:00
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())));
}
2023-02-01 19:27:50 +00:00
@FXML
private void loadView() {
2023-02-01 20:34:42 +00:00
competitorTable.setItems(loadTable(this.competitors.getCompetitors()));
2023-02-01 19:26:01 +00:00
}
2023-01-31 18:25:23 +00:00
}