From a5aa3e082b1b745a1949b8f5e2e5d8fed188c5a0 Mon Sep 17 00:00:00 2001 From: emilfa Date: Tue, 10 Mar 2026 13:32:46 +0100 Subject: [PATCH] feat: made a MainController and a HeaderController which make it possible to change pages with header buttons --- src/main/java/edu/group5/app/App.java | 24 +++++--------- .../group5/app/control/HeaderController.java | 20 +++++++++++- .../group5/app/control/MainController.java | 19 +++++++++++ .../{homepage/HeaderView.java => Header.java} | 18 +++++------ .../java/edu/group5/app/view/MainView.java | 32 +++++++++++++++++++ src/main/java/edu/group5/app/view/View.java | 5 --- .../app/view/homepage/HomePageView.java | 7 ++-- 7 files changed, 91 insertions(+), 34 deletions(-) create mode 100644 src/main/java/edu/group5/app/control/MainController.java rename src/main/java/edu/group5/app/view/{homepage/HeaderView.java => Header.java} (82%) create mode 100644 src/main/java/edu/group5/app/view/MainView.java delete mode 100644 src/main/java/edu/group5/app/view/View.java diff --git a/src/main/java/edu/group5/app/App.java b/src/main/java/edu/group5/app/App.java index f37d143..571db34 100644 --- a/src/main/java/edu/group5/app/App.java +++ b/src/main/java/edu/group5/app/App.java @@ -2,11 +2,11 @@ import java.util.HashMap; +import edu.group5.app.control.MainController; import edu.group5.app.control.OrgAPIWrapper; -import edu.group5.app.view.homepage.HomePageView; +import edu.group5.app.view.MainView; import javafx.application.Application; import javafx.scene.Scene; -import javafx.scene.layout.StackPane; import javafx.stage.Stage; import tools.jackson.core.type.TypeReference; import tools.jackson.databind.ObjectMapper; @@ -15,28 +15,20 @@ * Hello world! */ public class App extends Application { - private StackPane root; - @Override public void start(Stage stage) { + // AppModel model = new AppModel(); + MainController controller = new MainController(); + MainView view = new MainView(controller); - root = new StackPane(); - - showHomePage(); + controller.setMainView(view); + Scene scene = view.createView(); - Scene scene = new Scene(root, 1280, 720); + stage.setTitle("Help-Me-Help"); stage.setScene(scene); stage.show(); } - public void showHomePage() { - root.getChildren().setAll(new HomePageView(this)); - } - - public void showBrowseOrganizationsPage() { - root.getChildren().removeAll(); - } - static void main(String[] args) throws InterruptedException { OrgAPIWrapper orgWrap = new OrgAPIWrapper("https://app.innsamlingskontrollen.no/api/public/v1/all"); System.out.println(); diff --git a/src/main/java/edu/group5/app/control/HeaderController.java b/src/main/java/edu/group5/app/control/HeaderController.java index 3ce7e36..a02e945 100644 --- a/src/main/java/edu/group5/app/control/HeaderController.java +++ b/src/main/java/edu/group5/app/control/HeaderController.java @@ -1,4 +1,22 @@ package edu.group5.app.control; -public class HomePageController { +public class HeaderController { + private final MainController controller; + + public HeaderController(MainController controller) { + this.controller = controller; + } + + public void handleHomeBtn() { + System.out.println("Home button pressed"); + controller.showHomePage(); + } + + public void handleCausesBtn() { + System.out.println("Causes button pressed"); + } + + public void handleAboutBtn() { + System.out.println("About button pressed"); + } } diff --git a/src/main/java/edu/group5/app/control/MainController.java b/src/main/java/edu/group5/app/control/MainController.java new file mode 100644 index 0000000..59b1bb8 --- /dev/null +++ b/src/main/java/edu/group5/app/control/MainController.java @@ -0,0 +1,19 @@ +package edu.group5.app.control; + +import edu.group5.app.view.MainView; + +public class MainController { + private MainView view; + + public void setMainView(MainView view) { + this.view = view; + } + + public void showHomePage() { + view.showHomePage(); + } + + public void showLoginPage() { + view.showLoginPage(); + } +} diff --git a/src/main/java/edu/group5/app/view/homepage/HeaderView.java b/src/main/java/edu/group5/app/view/Header.java similarity index 82% rename from src/main/java/edu/group5/app/view/homepage/HeaderView.java rename to src/main/java/edu/group5/app/view/Header.java index 6d312b2..8f90828 100644 --- a/src/main/java/edu/group5/app/view/homepage/HeaderView.java +++ b/src/main/java/edu/group5/app/view/Header.java @@ -1,17 +1,17 @@ -package edu.group5.app.view.homepage; +package edu.group5.app.view; -import edu.group5.app.App; +import edu.group5.app.control.HeaderController; import javafx.geometry.Pos; import javafx.scene.control.Button; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.*; -public class HeaderView extends BorderPane { - private final App app; +public class Header extends BorderPane { + private final HeaderController controller; - public HeaderView(App app) { - this.app = app; + public Header(HeaderController controller) { + this.controller = controller; getStylesheets().add(getClass().getResource("/homepage/header.css").toExternalForm()); setId("header"); @@ -44,15 +44,15 @@ private HBox getNavBar() { navbar.setSpacing(10); Button home = new Button("Home"); - home.setOnAction(e -> System.out.println("Home")); + home.setOnAction(e -> controller.handleHomeBtn()); home.setStyle("-fx-cursor: hand;"); Button causes = new Button("Causes"); - causes.setOnAction(e -> System.out.println("Causes")); + causes.setOnAction(e -> controller.handleCausesBtn()); causes.setStyle("-fx-cursor: hand;"); Button about = new Button("About us"); - about.setOnAction(e -> System.out.println("About us")); + about.setOnAction(e -> controller.handleAboutBtn()); about.setStyle("-fx-cursor: hand;"); navbar.getChildren().addAll(home, causes, about); diff --git a/src/main/java/edu/group5/app/view/MainView.java b/src/main/java/edu/group5/app/view/MainView.java new file mode 100644 index 0000000..7efa165 --- /dev/null +++ b/src/main/java/edu/group5/app/view/MainView.java @@ -0,0 +1,32 @@ +package edu.group5.app.view; + +import edu.group5.app.control.HeaderController; +import edu.group5.app.control.MainController; +import edu.group5.app.view.homepage.HomePageView; +import javafx.scene.Scene; +import javafx.scene.layout.BorderPane; + +public class MainView { + private final MainController mainController; + private final HeaderController headerController; + private final BorderPane root; + + public MainView(MainController mainController) { + this.mainController = mainController; + this.headerController = new HeaderController(mainController); + this.root = new BorderPane(); + } + + public Scene createView() { + root.setCenter(new HomePageView(headerController)); + return new Scene(root, 1280, 720); + } + + public void showHomePage() { + root.setCenter(new HomePageView(headerController)); + } + + public void showLoginPage() { + + } +} diff --git a/src/main/java/edu/group5/app/view/View.java b/src/main/java/edu/group5/app/view/View.java deleted file mode 100644 index 2c36e4f..0000000 --- a/src/main/java/edu/group5/app/view/View.java +++ /dev/null @@ -1,5 +0,0 @@ -package edu.group5.app.view; - -public class View { - -} diff --git a/src/main/java/edu/group5/app/view/homepage/HomePageView.java b/src/main/java/edu/group5/app/view/homepage/HomePageView.java index 598afdc..0c1cc99 100644 --- a/src/main/java/edu/group5/app/view/homepage/HomePageView.java +++ b/src/main/java/edu/group5/app/view/homepage/HomePageView.java @@ -1,11 +1,12 @@ package edu.group5.app.view.homepage; -import edu.group5.app.App; +import edu.group5.app.control.HeaderController; +import edu.group5.app.view.Header; import javafx.scene.layout.BorderPane; public class HomePageView extends BorderPane { - public HomePageView(App app) { - HeaderView headerView = new HeaderView(app); + public HomePageView(HeaderController headerController) { + Header headerView = new Header(headerController); setTop(headerView); } }