From b841bb5c6353831c83632b340a042e30ff2954ce Mon Sep 17 00:00:00 2001 From: MatheaGjerde Date: Mon, 30 Mar 2026 18:13:32 +0200 Subject: [PATCH] fix: fixed the buttons for payment methods --- .../view/donationpage/DonationPageView.java | 29 ++++++++++---- src/main/resources/donationpage/donation.css | 39 +++++++++++++++++-- 2 files changed, 57 insertions(+), 11 deletions(-) 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 97f3b15..72f0a54 100644 --- a/src/main/java/edu/group5/app/view/donationpage/DonationPageView.java +++ b/src/main/java/edu/group5/app/view/donationpage/DonationPageView.java @@ -31,6 +31,10 @@ public class DonationPageView extends BorderPane { private final Map elementAmounts = new HashMap<>(); private final Map elementPaymentMethods = new HashMap<>(); + private BigDecimal selectedAmount = null; + private String selectedPaymentMethod = null; + private Button donateBtn; + public DonationPageView(AppState appState, NavigationController nav, DonationController donationController) { this.appState = appState; this.nav = nav; @@ -106,7 +110,12 @@ private VBox createCustomButton() { box.setOnMouseClicked(e -> { try { - BigDecimal amount = new BigDecimal(amountField.getText().trim()); + String text = amountField.getText().trim(); + if (text.isEmpty()) { + return; + } + BigDecimal amount = new BigDecimal(text); + elementAmounts.put(box, amount); selectDonationElement(box); } catch (NumberFormatException exception) { @@ -136,18 +145,21 @@ public HBox createPaymentMethodSection() { HBox sectionPm = new HBox(appleBtn, vippsBtn, visaBtn); sectionPm.setAlignment(Pos.CENTER); + sectionPm.setSpacing(20); sectionPm.setPadding(new Insets(20, 20, 20, 20)); return sectionPm; } private HBox createDonateSection() { - Button donateBtn = new Button("Donate"); + donateBtn = new Button("Donate"); donateBtn.getStyleClass().add("donate-button"); + + donateBtn.setDisable(true); + donateBtn.setOnAction(e -> donationController.handleDonate()); HBox section = new HBox(donateBtn); section.setAlignment(Pos.CENTER); - section.setPadding(new Insets(20, 0, 30, 0)); return section; } @@ -174,18 +186,18 @@ private void selectPaymentMethod(Node element) { private void extractAndStoreAmount(Node element) { BigDecimal amount = elementAmounts.get(element); if (amount != null) { + selectedAmount = amount; appState.setCurrentDonationAmount(amount); - } else { - System.err.println("Error: No amount found for selected element"); + updateDonationButtonState(); } } private void extractAndStorePaymentMethod(Node element) { String paymentMethod = elementPaymentMethods.get(element); if (paymentMethod != null) { + selectedPaymentMethod = paymentMethod; appState.setCurrentPaymentMethod(paymentMethod); - } else { - System.err.println("Error: No amount found for selected element"); + updateDonationButtonState(); } } @@ -196,5 +208,8 @@ private BigDecimal parseAmount(String amountStr) { return BigDecimal.ZERO; } } + private void updateDonationButtonState() { + donateBtn.setDisable(selectedAmount == null || selectedPaymentMethod == null); + } } \ No newline at end of file diff --git a/src/main/resources/donationpage/donation.css b/src/main/resources/donationpage/donation.css index 32433df..acb2655 100644 --- a/src/main/resources/donationpage/donation.css +++ b/src/main/resources/donationpage/donation.css @@ -18,15 +18,24 @@ -fx-text-fill: white; -fx-border-color: #111; } +.donation-button-selected:hover { + -fx-background-color: #222; + -fx-border-color: #222; +} + +.donation-button-selected Text, +.donation-button-selected .donation-input { + -fx-fill: white; + -fx-border-color: transparent transparent white transparent; + -fx-text-fill: white; + -fx-prompt-text-fill: #ccc; +} + .donation-title { -fx-font-size: 18px; -fx-font-weight: bold; -fx-fill: #111; } -.donation-amount { - -fx-font-size: 18px; - -fx-fill: #111; -} .donation-input { -fx-font-size:16px; -fx-pref-width: 140px; @@ -51,3 +60,25 @@ -fx-background-color: #c02020; } +.payment-method-button { + -fx-background-color: #111; + -fx-text-fill: white; + -fx-font-size: 16px; + -fx-font-weight: bold; + -fx-pref-width: 180px; + -fx-pref-height: 45px; + -fx-background-radius: 6; + -fx-border-radius: 6; + -fx-cursor: hand; +} +.payment-method-button:hover { + -fx-background-color: #222; +} +.payment-method-selected, +.payment-method-selected:hover { + -fx-background-color: #e03030; +} +.donation-button-selected .donation-title, +.donation-button-selected .donation-amount { + -fx-fill: white; +} \ No newline at end of file