diff --git a/src/main/java/edu/group5/app/view/donationpage/DonationPageView.java b/src/main/java/edu/group5/app/view/donationpage/DonationPageView.java index 5087267..97f3b15 100644 --- a/src/main/java/edu/group5/app/view/donationpage/DonationPageView.java +++ b/src/main/java/edu/group5/app/view/donationpage/DonationPageView.java @@ -27,7 +27,9 @@ public class DonationPageView extends BorderPane { private final DonationController donationController; private final List allDonationElements = new ArrayList<>(); + private final List allPaymentElements = new ArrayList<>(); private final Map elementAmounts = new HashMap<>(); + private final Map elementPaymentMethods = new HashMap<>(); public DonationPageView(AppState appState, NavigationController nav, DonationController donationController) { this.appState = appState; @@ -37,7 +39,7 @@ public DonationPageView(AppState appState, NavigationController nav, DonationCon getStylesheets().add(getClass().getResource("/donationpage/donation.css").toExternalForm()); VBox content = new VBox(); - content.getChildren().addAll(createDonationGrid(), createDonateSection()); + content.getChildren().addAll(createDonationGrid(), createPaymentMethodSection(), createDonateSection()); setCenter(content); } @@ -115,6 +117,29 @@ private VBox createCustomButton() { allDonationElements.add(box); return box; } + + public HBox createPaymentMethodSection() { + Button appleBtn = new Button("Apple Pay"); + Button vippsBtn = new Button("Vipps"); + Button visaBtn = new Button("Visa"); + + for (Button btn : new Button[]{appleBtn, vippsBtn, visaBtn}) { + btn.getStyleClass().add("payment-method-button"); + + btn.setOnAction(e -> {selectPaymentMethod(btn);}); + allPaymentElements.add(btn); + } + + elementPaymentMethods.put(appleBtn, "Apple Pay"); + elementPaymentMethods.put(vippsBtn, "Vipps"); + elementPaymentMethods.put(visaBtn, "Visa"); + + HBox sectionPm = new HBox(appleBtn, vippsBtn, visaBtn); + sectionPm.setAlignment(Pos.CENTER); + sectionPm.setPadding(new Insets(20, 20, 20, 20)); + return sectionPm; + } + private HBox createDonateSection() { Button donateBtn = new Button("Donate"); donateBtn.getStyleClass().add("donate-button"); @@ -137,6 +162,14 @@ private void selectDonationElement(Node element) { // Extract and store the amount extractAndStoreAmount(element); } + private void selectPaymentMethod(Node element) { + for (Node node : allPaymentElements) { + node.getStyleClass().remove("payment-method-selected"); + } + element.getStyleClass().add("payment-method-selected"); + + extractAndStorePaymentMethod(element); + } private void extractAndStoreAmount(Node element) { BigDecimal amount = elementAmounts.get(element); @@ -147,6 +180,15 @@ private void extractAndStoreAmount(Node element) { } } + private void extractAndStorePaymentMethod(Node element) { + String paymentMethod = elementPaymentMethods.get(element); + if (paymentMethod != null) { + appState.setCurrentPaymentMethod(paymentMethod); + } else { + System.err.println("Error: No amount found for selected element"); + } + } + private BigDecimal parseAmount(String amountStr) { try { return new BigDecimal(amountStr.replace("kr", "").trim());