diff --git a/desktop/src/main/java/bisq/desktop/bisq.css b/desktop/src/main/java/bisq/desktop/bisq.css index dd5f2f9c5b..b2ff670a49 100644 --- a/desktop/src/main/java/bisq/desktop/bisq.css +++ b/desktop/src/main/java/bisq/desktop/bisq.css @@ -530,7 +530,7 @@ bg color of non edit textFields: fafafa -fx-pref-width: 30; } -.jfx-badge .label { +.jfx-badge .badge-pane .label { -fx-font-weight: bold; -fx-font-size: 0.692em; -fx-text-fill: -bs-rd-white; diff --git a/desktop/src/main/java/bisq/desktop/components/NewBadge.java b/desktop/src/main/java/bisq/desktop/components/NewBadge.java new file mode 100644 index 0000000000..80a1d48a0f --- /dev/null +++ b/desktop/src/main/java/bisq/desktop/components/NewBadge.java @@ -0,0 +1,34 @@ +package bisq.desktop.components; + +import bisq.core.locale.Res; +import bisq.core.user.Preferences; + +import com.jfoenix.controls.JFXBadge; + +import javafx.scene.Node; + +import javafx.collections.MapChangeListener; + +public class NewBadge extends JFXBadge { + + private final String key; + + public NewBadge(Node control, String key, Preferences preferences) { + super(control); + + this.key = key; + + setText(Res.get("shared.new")); + getStyleClass().add("new"); + + setEnabled(!preferences.getDontShowAgainMap().containsKey(key)); + refreshBadge(); + + preferences.getDontShowAgainMapAsObservable().addListener((MapChangeListener) change -> { + if (change.getKey().equals(key)) { + setEnabled(!change.wasAdded()); + refreshBadge(); + } + }); + } +} diff --git a/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferView.java b/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferView.java index f71c972a5f..de1313b102 100644 --- a/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferView.java +++ b/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferView.java @@ -28,6 +28,7 @@ import bisq.desktop.components.BusyAnimation; import bisq.desktop.components.FundsTextField; import bisq.desktop.components.InfoInputTextField; import bisq.desktop.components.InputTextField; +import bisq.desktop.components.NewBadge; import bisq.desktop.components.TitledGroupBg; import bisq.desktop.main.MainView; import bisq.desktop.main.account.AccountView; @@ -122,6 +123,7 @@ import static bisq.desktop.util.FormBuilder.*; import static javafx.beans.binding.Bindings.createStringBinding; public abstract class MutableOfferView extends ActivatableViewAndModel { + public static final String BUYER_SECURITY_DEPOSIT_NEWS = "buyerSecurityDepositNews0.9.5"; protected final Navigation navigation; private final Preferences preferences; private final Transitions transitions; @@ -1042,7 +1044,12 @@ public abstract class MutableOfferView extends GridPane.setMargin(advancedOptionsBox, new Insets(Layout.COMPACT_FIRST_ROW_AND_GROUP_DISTANCE, 0, 0, 0)); gridPane.getChildren().add(advancedOptionsBox); - advancedOptionsBox.getChildren().addAll(getBuyerSecurityDepositBox(), getTradeFeeFieldsBox()); + // add new badge for this new feature for this release + // TODO: remove it with 0.9.6+ + NewBadge securityDepositBoxWithNewBadge = new NewBadge(getBuyerSecurityDepositBox(), + BUYER_SECURITY_DEPOSIT_NEWS, preferences); + + advancedOptionsBox.getChildren().addAll(securityDepositBoxWithNewBadge, getTradeFeeFieldsBox()); Tuple2 tuple = add2ButtonsAfterGroup(gridPane, ++gridRow, diff --git a/desktop/src/main/java/bisq/desktop/main/offer/OfferView.java b/desktop/src/main/java/bisq/desktop/main/offer/OfferView.java index 84313552c8..d2fa0955da 100644 --- a/desktop/src/main/java/bisq/desktop/main/offer/OfferView.java +++ b/desktop/src/main/java/bisq/desktop/main/offer/OfferView.java @@ -51,6 +51,8 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; +import static bisq.desktop.main.offer.MutableOfferView.BUYER_SECURITY_DEPOSIT_NEWS; + public abstract class OfferView extends ActivatableView { private OfferBookView offerBookView; @@ -271,6 +273,8 @@ public abstract class OfferView extends ActivatableView { offerBookView.enableCreateOfferButton(); navigation.navigateTo(MainView.class, this.getClass(), OfferBookView.class); + + preferences.dontShowAgain(BUYER_SECURITY_DEPOSIT_NEWS, true); } private void onTakeOfferViewRemoved() {