diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/BuildReputationView.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/BuildReputationView.java index bb295e3571..1f8f1413d4 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/BuildReputationView.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/BuildReputationView.java @@ -18,65 +18,79 @@ package bisq.desktop.main.content.reputation.build_reputation; import bisq.desktop.common.view.View; +import bisq.desktop.components.containers.Spacer; +import bisq.desktop.components.controls.BisqMenuItem; import bisq.i18n.Res; import javafx.geometry.Insets; -import javafx.geometry.Pos; import javafx.scene.control.Button; -import javafx.scene.control.Hyperlink; import javafx.scene.control.Label; import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; import lombok.extern.slf4j.Slf4j; @Slf4j public class BuildReputationView extends View { private final Button burnBsqButton, bsqBondButton, accountAgeButton, signedAccountButton; - private final Hyperlink learnMore; + private final BisqMenuItem learnMore; public BuildReputationView(BuildReputationModel model, BuildReputationController controller) { super(new VBox(), model, controller); - Label headlineLabel = new Label(Res.get("reputation.headline")); - headlineLabel.getStyleClass().add("bisq-text-headline-5"); - - Label info = new Label(Res.get("reputation.info")); - info.setWrapText(true); - info.getStyleClass().addAll("bisq-text-13"); - info.setMinHeight(220); - - burnBsqButton = new Button(Res.get("reputation.burnBsq")); - burnBsqButton.getStyleClass().add("button-reduced-padding"); - burnBsqButton.setPrefWidth(140); - - bsqBondButton = new Button(Res.get("reputation.bond")); - bsqBondButton.getStyleClass().add("button-reduced-padding"); - bsqBondButton.setPrefWidth(130); - - signedAccountButton = new Button(Res.get("reputation.signedWitness")); - signedAccountButton.getStyleClass().add("button-reduced-padding"); - signedAccountButton.setPrefWidth(230); - - accountAgeButton = new Button(Res.get("reputation.accountAge")); - accountAgeButton.getStyleClass().add("button-reduced-padding"); - accountAgeButton.setPrefWidth(140); - - learnMore = new Hyperlink(Res.get("action.learnMore")); - - HBox buttons = new HBox(20, burnBsqButton, bsqBondButton, signedAccountButton, accountAgeButton); - - VBox.setMargin(headlineLabel, new Insets(20, 0, 0, 0)); - VBox.setMargin(buttons, new Insets(10, 0, 0, 0)); - VBox vBox = new VBox(10, headlineLabel, info, buttons, learnMore); - vBox.getStyleClass().add("bisq-box-2"); - vBox.setPadding(new Insets(30, 30, 20, 30)); - vBox.setAlignment(Pos.TOP_LEFT); - - VBox.setMargin(vBox, new Insets(0, 0, 20, 0)); - VBox.setVgrow(vBox, Priority.SOMETIMES); - root.setPadding(new Insets(0, 40, 40, 40)); - root.getChildren().addAll(vBox); - root.getStyleClass().add("build-reputation"); + Label headlineLabel = new Label(Res.get("reputation.buildReputation.headline")); + headlineLabel.getStyleClass().add("reputation-headline"); + + Label introLabelPart1 = new Label(Res.get("reputation.buildReputation.intro.part1")); + Label introLabelPart2 = new Label(Res.get("reputation.buildReputation.intro.part2")); + + Label title = new Label(Res.get("reputation.buildReputation.title")); + title.getStyleClass().add("reputation-title"); + + // Burn BSQ + burnBsqButton = new Button(Res.get("reputation.buildReputation.burnBsq.button")); + VBox burnBsqBox = createAndGetBuildReputationMethodBox( + Res.get("reputation.buildReputation.burnBsq.title"), + Res.get("reputation.buildReputation.burnBsq.description"), + burnBsqButton + ); + + // BSQ Bond + bsqBondButton = new Button(Res.get("reputation.buildReputation.bsqBond.button")); + VBox bsqBondBox = createAndGetBuildReputationMethodBox( + Res.get("reputation.buildReputation.bsqBond.title"), + Res.get("reputation.buildReputation.bsqBond.description"), + bsqBondButton + ); + + HBox burnAndBondBox = new HBox(20, burnBsqBox, bsqBondBox); + + // Signed Account + signedAccountButton = new Button(Res.get("reputation.buildReputation.signedAccount.button")); + VBox signedAccountBox = createAndGetBuildReputationMethodBox( + Res.get("reputation.buildReputation.signedAccount.title"), + Res.get("reputation.buildReputation.signedAccount.description"), + signedAccountButton + ); + + // Account Age + accountAgeButton = new Button(Res.get("reputation.buildReputation.accountAge.button")); + VBox accountAgeBox = createAndGetBuildReputationMethodBox( + Res.get("reputation.buildReputation.accountAge.title"), + Res.get("reputation.buildReputation.accountAge.description"), + accountAgeButton + ); + + HBox signedAccountAndAgeBox = new HBox(20, signedAccountBox, accountAgeBox); + + learnMore = new BisqMenuItem(Res.get("reputation.buildReputation.readMore")); + learnMore.getStyleClass().add("reputation-learn-more"); + + VBox contentBox = new VBox(20); + contentBox.getChildren().addAll(headlineLabel, introLabelPart1, introLabelPart2, title, burnAndBondBox, + signedAccountAndAgeBox, learnMore); + contentBox.getStyleClass().add("bisq-common-bg"); + root.getChildren().addAll(contentBox); + root.setPadding(new Insets(0, 40, 20, 40)); + root.getStyleClass().add("reputation"); } @Override @@ -96,4 +110,17 @@ protected void onViewDetached() { accountAgeButton.setOnAction(null); learnMore.setOnAction(null); } + + private VBox createAndGetBuildReputationMethodBox(String title, String description, Button button) { + Label titleLabel = new Label(title); + titleLabel.getStyleClass().add("card-title"); + Label descriptionLabel = new Label(description); + button.getStyleClass().addAll("medium-large-button"); + button.setMaxWidth(Double.MAX_VALUE); + button.setDefaultButton(true); + VBox vBox = new VBox(20, titleLabel, descriptionLabel, Spacer.fillVBox(), button); + vBox.setFillWidth(true); + vBox.getStyleClass().add("reputation-card-small"); + return vBox; + } } diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab1/AccountAgeTab1View.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab1/AccountAgeTab1View.java index a4691a1d7c..5013496bc9 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab1/AccountAgeTab1View.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab1/AccountAgeTab1View.java @@ -38,9 +38,6 @@ public AccountAgeTab1View(AccountAgeTab1Model model, AccountAgeTab1Controller controller) { super(new VBox(), model, controller); - root.setSpacing(20); - root.setAlignment(Pos.TOP_LEFT); - Label headline = new Label(Res.get("reputation.accountAge.infoHeadline")); headline.getStyleClass().add("bisq-text-headline-2"); @@ -66,7 +63,12 @@ public AccountAgeTab1View(AccountAgeTab1Model model, VBox.setMargin(headline, new Insets(10, 0, 0, 0)); VBox.setMargin(buttons, new Insets(10, 0, 0, 0)); VBox.setMargin(headline2, new Insets(20, 0, 0, 0)); - root.getChildren().addAll(headline, info, headline2, info2, buttons); + + VBox contentBox = new VBox(20); + contentBox.getChildren().addAll(headline, info, headline2, info2, buttons); + contentBox.getStyleClass().addAll("bisq-common-bg", "common-line-spacing"); + root.getChildren().addAll(contentBox); + root.setPadding(new Insets(20, 0, 0, 0)); } @Override diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab2/AccountAgeScoreSimulation.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab2/AccountAgeScoreSimulation.java index c1b8f9f826..df25b3fd93 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab2/AccountAgeScoreSimulation.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab2/AccountAgeScoreSimulation.java @@ -100,12 +100,13 @@ private static class Model implements bisq.desktop.common.view.Model { } private static class View extends bisq.desktop.common.view.View { + private static final double MATERIAL_FIELD_WIDTH = 280; + private final AgeSlider simAgeSlider; private final MaterialTextField simScore; private final MaterialTextField ageField; - private View(Model model, - Controller controller) { + private View(Model model, Controller controller) { super(new VBox(10), model, controller); Label simHeadline = new Label(Res.get("reputation.sim.headline")); @@ -137,15 +138,15 @@ protected void onViewDetached() { private MaterialTextField getField(String description) { MaterialTextField field = new MaterialTextField(description); field.setEditable(false); - field.setMinWidth(380); - field.setMaxWidth(380); + field.setMinWidth(MATERIAL_FIELD_WIDTH); + field.setMaxWidth(MATERIAL_FIELD_WIDTH); return field; } private MaterialTextField getInputField(String key) { MaterialTextField field = new MaterialTextField(Res.get(key), Res.get(key + ".prompt")); - field.setMinWidth(380); - field.setMaxWidth(380); + field.setMinWidth(MATERIAL_FIELD_WIDTH); + field.setMaxWidth(MATERIAL_FIELD_WIDTH); return field; } } diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab2/AccountAgeTab2View.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab2/AccountAgeTab2View.java index 0ef71b8862..145be18078 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab2/AccountAgeTab2View.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/accountAge/tab2/AccountAgeTab2View.java @@ -40,9 +40,6 @@ public class AccountAgeTab2View extends View { + private static final double MATERIAL_FIELD_WIDTH = 260; + private final MaterialTextField amount; private final MaterialTextField score; private final AgeSlider simAgeSlider; private final MaterialTextField ageField; - private View(Model model, - Controller controller) { + private View(Model model, Controller controller) { super(new VBox(10), model, controller); Label simHeadline = new Label(Res.get("reputation.sim.headline")); @@ -153,16 +154,16 @@ protected void onViewDetached() { private MaterialTextField getField(String description) { MaterialTextField field = new MaterialTextField(description); field.setEditable(false); - field.setMinWidth(380); - field.setMaxWidth(380); + field.setMinWidth(MATERIAL_FIELD_WIDTH); + field.setMaxWidth(MATERIAL_FIELD_WIDTH); return field; } private MaterialTextField getInputField(String key) { MaterialTextField field = new MaterialTextField(Res.get(key), Res.get(key + ".prompt")); - field.setMinWidth(380); - field.setMaxWidth(380); + field.setMinWidth(MATERIAL_FIELD_WIDTH); + field.setMaxWidth(MATERIAL_FIELD_WIDTH); return field; } } -} \ No newline at end of file +} diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/bond/tab2/BondedReputationTab2View.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/bond/tab2/BondedReputationTab2View.java index ace5229d7b..72c60f4b6e 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/bond/tab2/BondedReputationTab2View.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/bond/tab2/BondedReputationTab2View.java @@ -40,9 +40,6 @@ public class BondedReputationTab2View extends View controller.onCopyToClipboard(pubKeyHash.getText())); closeButton.setOnAction(e -> controller.onClose()); backButton.setOnAction(e -> controller.onBack()); diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/burn/tab1/BurnBsqTab1View.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/burn/tab1/BurnBsqTab1View.java index 349a726a37..bae643aa9a 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/burn/tab1/BurnBsqTab1View.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/burn/tab1/BurnBsqTab1View.java @@ -36,9 +36,7 @@ public class BurnBsqTab1View extends View { + private static final double MATERIAL_FIELD_WIDTH = 260; + private final MaterialTextField amount; private final MaterialTextField score; private final AgeSlider simAgeSlider; private final MaterialTextField ageField; - private View(Model model, - Controller controller) { + private View(Model model, Controller controller) { super(new VBox(10), model, controller); Label simHeadline = new Label(Res.get("reputation.sim.headline")); @@ -152,16 +153,16 @@ protected void onViewDetached() { private MaterialTextField getField(String description) { MaterialTextField field = new MaterialTextField(description); field.setEditable(false); - field.setMinWidth(380); - field.setMaxWidth(380); + field.setMinWidth(MATERIAL_FIELD_WIDTH); + field.setMaxWidth(MATERIAL_FIELD_WIDTH); return field; } private MaterialTextField getInputField(String key) { MaterialTextField field = new MaterialTextField(Res.get(key), Res.get(key + ".prompt")); - field.setMinWidth(380); - field.setMaxWidth(380); + field.setMinWidth(MATERIAL_FIELD_WIDTH); + field.setMaxWidth(MATERIAL_FIELD_WIDTH); return field; } } -} \ No newline at end of file +} diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/burn/tab3/BurnBsqTab3View.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/burn/tab3/BurnBsqTab3View.java index 02c35cf082..ccec6f7698 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/burn/tab3/BurnBsqTab3View.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/burn/tab3/BurnBsqTab3View.java @@ -44,13 +44,10 @@ public BurnBsqTab3View(BurnBsqTab3Model model, Pane userProfileSelection) { super(new VBox(), model, controller); - root.setSpacing(20); - root.setAlignment(Pos.TOP_LEFT); - Label headline = new Label(Res.get("reputation.burnedBsq.howToHeadline")); headline.getStyleClass().add("bisq-text-headline-2"); - OrderedList info = new OrderedList(Res.get("reputation.burnedBsq.howTo"), "bisq-text-13"); + OrderedList info = new OrderedList(Res.get("reputation.burnedBsq.howTo"), "bisq-text-13", 7, 7); Label userProfileSelectLabel = new Label(Res.get("user.bondedRoles.userProfile.select").toUpperCase()); userProfileSelectLabel.getStyleClass().add("bisq-text-4"); @@ -75,12 +72,18 @@ public BurnBsqTab3View(BurnBsqTab3Model model, VBox.setMargin(userProfileSelectLabel, new Insets(10, 0, -20, 0)); VBox.setMargin(userProfileSelection, new Insets(0, 0, -30, 0)); VBox.setMargin(buttons, new Insets(10, 0, 0, 0)); - root.getChildren().addAll(headline, info, userProfileSelectLabel, userProfileSelection, pubKeyHash, buttons); + + VBox contentBox = new VBox(20); + contentBox.getChildren().addAll(headline, info, userProfileSelectLabel, userProfileSelection, pubKeyHash, buttons); + contentBox.getStyleClass().addAll("bisq-common-bg", "common-line-spacing"); + root.getChildren().addAll(contentBox); + root.setPadding(new Insets(20, 0, 0, 0)); } @Override protected void onViewAttached() { pubKeyHash.textProperty().bind(model.getPubKeyHash()); + pubKeyHash.getIconButton().setOnAction(e -> controller.onCopyToClipboard(pubKeyHash.getText())); closeButton.setOnAction(e -> controller.onClose()); backButton.setOnAction(e -> controller.onBack()); diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/components/AgeSlider.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/components/AgeSlider.java index f89d8acf3a..7737094da8 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/components/AgeSlider.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/components/AgeSlider.java @@ -92,10 +92,10 @@ private View(Model model, AgeSlider.Controller controller) { slider.setMin(model.getMin()); slider.setMax(model.getMax()); - Label min = new Label(model.getMin() + " " + Res.get("temporal.days")); + Label min = new Label(model.getMin() + " " + Res.get("temporal.day.1")); min.getStyleClass().add("bisq-small-light-label-dimmed"); - Label max = new Label(model.getMax() + " " + Res.get("temporal.days")); + Label max = new Label(model.getMax() + " " + Res.get("temporal.day.*")); max.getStyleClass().add("bisq-small-light-label-dimmed"); root.getChildren().addAll(slider, new HBox(min, Spacer.fillHBox(), max)); diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab1/SignedWitnessTab1View.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab1/SignedWitnessTab1View.java index 7816ed3e91..0d6f836259 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab1/SignedWitnessTab1View.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab1/SignedWitnessTab1View.java @@ -38,9 +38,6 @@ public SignedWitnessTab1View(SignedWitnessTab1Model model, SignedWitnessTab1Controller controller) { super(new VBox(), model, controller); - root.setSpacing(20); - root.setAlignment(Pos.TOP_LEFT); - Label headline = new Label(Res.get("reputation.signedWitness.infoHeadline")); headline.getStyleClass().add("bisq-text-headline-2"); @@ -66,7 +63,12 @@ public SignedWitnessTab1View(SignedWitnessTab1Model model, VBox.setMargin(headline, new Insets(10, 0, 0, 0)); VBox.setMargin(buttons, new Insets(10, 0, 0, 0)); VBox.setMargin(headline2, new Insets(20, 0, 0, 0)); - root.getChildren().addAll(headline, info, headline2, info2, buttons); + + VBox contentBox = new VBox(20); + contentBox.getChildren().addAll(headline, info, headline2, info2, buttons); + contentBox.getStyleClass().addAll("bisq-common-bg", "common-line-spacing"); + root.getChildren().addAll(contentBox); + root.setPadding(new Insets(20, 0, 0, 0)); } @Override diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab2/SignedWitnessScoreSimulation.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab2/SignedWitnessScoreSimulation.java index 3a827a0ab6..bb4af86749 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab2/SignedWitnessScoreSimulation.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab2/SignedWitnessScoreSimulation.java @@ -100,6 +100,8 @@ private static class Model implements bisq.desktop.common.view.Model { } private static class View extends bisq.desktop.common.view.View { + private static final double MATERIAL_FIELD_WIDTH = 280; + private final AgeSlider simAgeSlider; private final MaterialTextField simScore; private final MaterialTextField ageField; @@ -137,16 +139,16 @@ protected void onViewDetached() { private MaterialTextField getField(String description) { MaterialTextField field = new MaterialTextField(description); field.setEditable(false); - field.setMinWidth(380); - field.setMaxWidth(380); + field.setMinWidth(MATERIAL_FIELD_WIDTH); + field.setMaxWidth(MATERIAL_FIELD_WIDTH); return field; } private MaterialTextField getInputField(String key) { MaterialTextField field = new MaterialTextField(Res.get(key), Res.get(key + ".prompt")); - field.setMinWidth(380); - field.setMaxWidth(380); + field.setMinWidth(MATERIAL_FIELD_WIDTH); + field.setMaxWidth(MATERIAL_FIELD_WIDTH); return field; } } -} \ No newline at end of file +} diff --git a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab2/SignedWitnessTab2View.java b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab2/SignedWitnessTab2View.java index 58a2ade06b..78e3fef456 100644 --- a/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab2/SignedWitnessTab2View.java +++ b/apps/desktop/desktop/src/main/java/bisq/desktop/main/content/reputation/build_reputation/signedAccount/tab2/SignedWitnessTab2View.java @@ -40,9 +40,6 @@ public class SignedWitnessTab2View extends View