diff --git a/src/main/java/com/r0r5chach/Manager.java b/src/main/java/com/r0r5chach/Manager.java index 9965a44..f29c5f8 100644 --- a/src/main/java/com/r0r5chach/Manager.java +++ b/src/main/java/com/r0r5chach/Manager.java @@ -7,6 +7,7 @@ import static com.r0r5chach.CompetitorList.createErrorLog; import com.r0r5chach.controllers.Controller; import com.r0r5chach.controllers.EditController; import com.r0r5chach.controllers.MainController; +import com.r0r5chach.controllers.ReportController; import com.r0r5chach.controllers.ViewController; import javafx.application.Application; @@ -21,9 +22,12 @@ public class Manager extends Application { public static Stage stage; private static CompetitorList competitors; + private static Controller controller; + @Override public void start(Stage stage) throws IOException { competitors = createList(); + controller = null; scene = new Scene(loadFXML("main"), 640, 480); Manager.stage = stage; Manager.stage.setScene(scene); @@ -47,7 +51,10 @@ public class Manager extends Application { public static Parent loadFXML(String fxml) throws IOException { FXMLLoader fxmlLoader = new FXMLLoader(Manager.class.getResource(fxml + ".fxml")); Parent root = fxmlLoader.load(); - Controller controller; + if (controller != null) { + competitors = controller.getCompetitors(); + } + switch(fxml) { case "main": controller = fxmlLoader.getController(); @@ -61,6 +68,11 @@ public class Manager extends Application { controller = fxmlLoader.getController(); controller.setCompetitors(competitors); break; + case "pages/report": + controller = fxmlLoader.getController(); + controller.setCompetitors(competitors); + break; + } diff --git a/src/main/java/com/r0r5chach/controllers/Controller.java b/src/main/java/com/r0r5chach/controllers/Controller.java index 2e90c14..be6775b 100644 --- a/src/main/java/com/r0r5chach/controllers/Controller.java +++ b/src/main/java/com/r0r5chach/controllers/Controller.java @@ -13,6 +13,8 @@ import javafx.application.Platform; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.Parent; +import javafx.scene.control.Tab; +import javafx.scene.control.TabPane; import javafx.scene.layout.AnchorPane; public class Controller implements Initializable { @@ -22,33 +24,40 @@ public class Controller implements Initializable { @FXML protected AnchorPane viewTab; + @FXML + protected AnchorPane reportTab; + + @FXML + protected TabPane tabs; + protected CompetitorList competitors; protected ArrayList 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); + + public void setCompetitors(CompetitorList competitors) { + this.competitors = competitors; + } + + public CompetitorList getCompetitors() { + return competitors; } @FXML - protected void getViewTab() throws IOException { - Parent root = Manager.loadFXML("pages/view"); - viewTab.getChildren().clear(); - viewTab.getChildren().add(root); + protected void getTab() throws IOException { + Parent root = null; + Tab tab = tabs.getSelectionModel().getSelectedItem(); + switch(tab.getText().toLowerCase()) { + case "view" -> root = Manager.loadFXML("pages/view"); + case "edit" -> root = Manager.loadFXML("pages/edit"); + case "report" -> root = Manager.loadFXML("pages/report"); + } + tab.setContent(root); } protected void loadCompetitors(){ diff --git a/src/main/java/com/r0r5chach/controllers/ReportController.java b/src/main/java/com/r0r5chach/controllers/ReportController.java new file mode 100644 index 0000000..1960d20 --- /dev/null +++ b/src/main/java/com/r0r5chach/controllers/ReportController.java @@ -0,0 +1,50 @@ +package com.r0r5chach.controllers; + +import java.net.URL; +import java.util.ResourceBundle; + +import javafx.application.Platform; +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.control.ListView; +import javafx.scene.control.TextArea; + +public class ReportController extends Controller { + @FXML + private ListView competitorList; + + @FXML + private TextArea outputArea; + + @Override + public void initialize(URL url, ResourceBundle rb) { + Platform.runLater(() -> { + loadCompetitors(); + competitorList.setItems(FXCollections.observableList(competitorIds)); + }); + } + + @FXML + private void shortDetailsPress() { + Integer item = competitorList.getSelectionModel().getSelectedItem(); + outputArea.clear(); + if (item != null) { + outputArea.setText(competitors.getCompetitors().get(competitorIds.indexOf(item)).getShortDetails()); + } + else { + outputArea.setText("Select A Competitor"); + } + } + + @FXML + private void fullDetailsPress() { + Integer item = competitorList.getSelectionModel().getSelectedItem(); + if (item != null) { + outputArea.clear(); + outputArea.setText(competitors.getCompetitors().get(competitorIds.indexOf(item)).getFullDetails()); + } + else { + outputArea.setText("Select A Competitor"); + } + } +} diff --git a/src/main/resources/com/r0r5chach/main.fxml b/src/main/resources/com/r0r5chach/main.fxml index 3fbc902..9361d80 100644 --- a/src/main/resources/com/r0r5chach/main.fxml +++ b/src/main/resources/com/r0r5chach/main.fxml @@ -7,20 +7,20 @@ - + - + - + - + - + diff --git a/src/main/resources/com/r0r5chach/pages/report.fxml b/src/main/resources/com/r0r5chach/pages/report.fxml new file mode 100644 index 0000000..3e97d89 --- /dev/null +++ b/src/main/resources/com/r0r5chach/pages/report.fxml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + +