hanze/game-client

src/main/java/nl/isygameclient/controllers/AppController.java in main
Repositories | Summary | Log | Files

AppController.java (2245B) download


 1package nl.isygameclient.controllers;
 2
 3import javafx.event.ActionEvent;
 4import javafx.fxml.FXML;
 5import javafx.fxml.FXMLLoader;
 6import javafx.fxml.Initializable;
 7import javafx.scene.layout.BorderPane;
 8import javafx.scene.layout.VBox;
 9import nl.isygameclient.util.StageHandler;
10import nl.isygameclient.views.NavButtonControl;
11
12import java.io.IOException;
13import java.net.URL;
14import java.util.Map;
15import java.util.ResourceBundle;
16import java.util.TreeMap;
17
18public class AppController implements Initializable {
19
20    private final TreeMap<Integer, NavButtonControl> navButtons = new TreeMap<>(Map.ofEntries(
21            Map.entry(0, new NavButtonControl("Store", "LOCAL_MALL", null)),
22            Map.entry(1, new NavButtonControl("Library", "GAMES", "/nl/isygameclient/views/game-library.fxml")),
23            Map.entry(2, new NavButtonControl("Community", "QUESTION_ANSWER", null)),
24            Map.entry(3, new NavButtonControl("Servers", "FORMAT_LIST_BULLETED", null))
25    ));
26    private NavButtonControl activeButton;
27    @FXML
28    public BorderPane app;
29    @FXML
30    private VBox navBar;
31
32    @Override
33    public void initialize(URL url, ResourceBundle resourceBundle) {
34        navButtons.forEach((index, button) -> {
35            button.setOnAction(this::onNavButtonPress);
36            navBar.getChildren().add(button);
37        });
38
39        activeButton = navButtons.get(1);
40        activeButton.activate();
41        loadScene(activeButton.getSource());
42    }
43
44    @FXML
45    public void onNavButtonPress(ActionEvent e) {
46        var newButton = (NavButtonControl) e.getSource();
47        activeButton.deactivate();
48        activeButton = newButton;
49        newButton.activate();
50
51        loadScene(activeButton.getSource());
52    }
53
54    @FXML
55    public void onSettingsButtonPressed(){
56        loadScene("/nl/isygameclient/views/app-settings.fxml");
57    }
58
59    private void loadScene(String path) {
60        app.getChildren().remove(app.getCenter());
61
62        if (path == null) return;
63
64        URL url = StageHandler.class.getResource(path);
65        FXMLLoader fxmlLoader = new FXMLLoader(url);
66        try {
67            app.setCenter(fxmlLoader.load());
68        } catch (IOException e) {
69            e.printStackTrace();
70        }
71    }
72}