Merge pull request #4863 from jmacxx/account_usability

Account management usability improvements
This commit is contained in:
Christoph Atteneder 2020-12-01 14:04:49 +01:00 committed by GitHub
commit 09677151a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 16 additions and 6 deletions

View File

@ -43,6 +43,7 @@ import javafx.collections.ObservableList;
import javafx.collections.SetChangeListener; import javafx.collections.SetChangeListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -88,7 +89,7 @@ class AltCoinAccountsDataModel extends ActivatableDataModel {
paymentAccounts.setAll(user.getPaymentAccounts().stream() paymentAccounts.setAll(user.getPaymentAccounts().stream()
.filter(paymentAccount -> paymentAccount.getPaymentMethod().isAsset()) .filter(paymentAccount -> paymentAccount.getPaymentMethod().isAsset())
.collect(Collectors.toList())); .collect(Collectors.toList()));
paymentAccounts.sort((o1, o2) -> o1.getCreationDate().compareTo(o2.getCreationDate())); paymentAccounts.sort(Comparator.comparing(PaymentAccount::getAccountName));
} }
} }

View File

@ -91,7 +91,7 @@ class FiatAccountsDataModel extends ActivatableDataModel {
.filter(paymentAccount -> !paymentAccount.getPaymentMethod().isAsset()) .filter(paymentAccount -> !paymentAccount.getPaymentMethod().isAsset())
.collect(Collectors.toList()); .collect(Collectors.toList());
paymentAccounts.setAll(list); paymentAccounts.setAll(list);
paymentAccounts.sort(Comparator.comparing(PaymentAccount::getCreationDate)); paymentAccounts.sort(Comparator.comparing(PaymentAccount::getAccountName));
} }
} }

View File

@ -91,6 +91,7 @@ import java.util.stream.Collectors;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
import static java.util.Comparator.comparing;
public abstract class MutableOfferDataModel extends OfferDataModel implements BsqBalanceListener { public abstract class MutableOfferDataModel extends OfferDataModel implements BsqBalanceListener {
private final CreateOfferService createOfferService; private final CreateOfferService createOfferService;
@ -330,7 +331,7 @@ public abstract class MutableOfferDataModel extends OfferDataModel implements Bs
setTradeCurrencyFromPaymentAccount(paymentAccount); setTradeCurrencyFromPaymentAccount(paymentAccount);
setSuggestedSecurityDeposit(getPaymentAccount()); setSuggestedSecurityDeposit(getPaymentAccount());
if (amount.get() != null) if (amount.get() != null && this.allowAmountUpdate)
this.amount.set(Coin.valueOf(Math.min(amount.get().value, getMaxTradeLimit()))); this.amount.set(Coin.valueOf(Math.min(amount.get().value, getMaxTradeLimit())));
} }
} }
@ -612,6 +613,7 @@ public abstract class MutableOfferDataModel extends OfferDataModel implements Bs
private void fillPaymentAccounts() { private void fillPaymentAccounts() {
if (user.getPaymentAccounts() != null) if (user.getPaymentAccounts() != null)
paymentAccounts.setAll(new HashSet<>(user.getPaymentAccounts())); paymentAccounts.setAll(new HashSet<>(user.getPaymentAccounts()));
paymentAccounts.sort(comparing(PaymentAccount::getAccountName));
} }
protected void setAmount(Coin amount) { protected void setAmount(Coin amount) {

View File

@ -459,7 +459,7 @@ public abstract class MutableOfferView<M extends MutableOfferViewModel<?>> exten
} }
private void updateOfferElementsStyle() { private void updateOfferElementsStyle() {
GridPane.setColumnSpan(firstRowHBox, 1); GridPane.setColumnSpan(firstRowHBox, 2);
final String activeInputStyle = "input-with-border"; final String activeInputStyle = "input-with-border";
final String readOnlyInputStyle = "input-with-border-readonly"; final String readOnlyInputStyle = "input-with-border-readonly";
@ -991,7 +991,7 @@ public abstract class MutableOfferView<M extends MutableOfferViewModel<?>> exten
paymentGroupBox = new HBox(); paymentGroupBox = new HBox();
paymentGroupBox.setAlignment(Pos.CENTER_LEFT); paymentGroupBox.setAlignment(Pos.CENTER_LEFT);
paymentGroupBox.setSpacing(62); paymentGroupBox.setSpacing(12);
paymentGroupBox.setPadding(new Insets(10, 0, 18, 0)); paymentGroupBox.setPadding(new Insets(10, 0, 18, 0));
final Tuple3<VBox, Label, ComboBox<PaymentAccount>> tradingAccountBoxTuple = addTopLabelComboBox( final Tuple3<VBox, Label, ComboBox<PaymentAccount>> tradingAccountBoxTuple = addTopLabelComboBox(
@ -1007,12 +1007,15 @@ public abstract class MutableOfferView<M extends MutableOfferViewModel<?>> exten
GridPane.setMargin(paymentGroupBox, new Insets(Layout.FIRST_ROW_DISTANCE, 0, 0, 0)); GridPane.setMargin(paymentGroupBox, new Insets(Layout.FIRST_ROW_DISTANCE, 0, 0, 0));
gridPane.getChildren().add(paymentGroupBox); gridPane.getChildren().add(paymentGroupBox);
tradingAccountBoxTuple.first.setMinWidth(800);
paymentAccountsComboBox = tradingAccountBoxTuple.third; paymentAccountsComboBox = tradingAccountBoxTuple.third;
paymentAccountsComboBox.setMinWidth(300); paymentAccountsComboBox.setMinWidth(tradingAccountBoxTuple.first.getMinWidth());
paymentAccountsComboBox.setPrefWidth(tradingAccountBoxTuple.first.getMinWidth());
editOfferElements.add(tradingAccountBoxTuple.first); editOfferElements.add(tradingAccountBoxTuple.first);
// we display either currencyComboBox (multi currency account) or currencyTextField (single) // we display either currencyComboBox (multi currency account) or currencyTextField (single)
currencyComboBox = currencyBoxTuple.third; currencyComboBox = currencyBoxTuple.third;
currencyComboBox.setMaxWidth(tradingAccountBoxTuple.first.getMinWidth() / 2);
editOfferElements.add(currencySelection); editOfferElements.add(currencySelection);
currencyComboBox.setConverter(new StringConverter<>() { currencyComboBox.setConverter(new StringConverter<>() {
@Override @Override

View File

@ -84,9 +84,11 @@ public class CreateOfferDataModelTest {
final HashSet<PaymentAccount> paymentAccounts = new HashSet<>(); final HashSet<PaymentAccount> paymentAccounts = new HashSet<>();
final ClearXchangeAccount zelleAccount = new ClearXchangeAccount(); final ClearXchangeAccount zelleAccount = new ClearXchangeAccount();
zelleAccount.setId("234"); zelleAccount.setId("234");
zelleAccount.setAccountName("zelleAccount");
paymentAccounts.add(zelleAccount); paymentAccounts.add(zelleAccount);
final RevolutAccount revolutAccount = new RevolutAccount(); final RevolutAccount revolutAccount = new RevolutAccount();
revolutAccount.setId("123"); revolutAccount.setId("123");
revolutAccount.setAccountName("revolutAccount");
revolutAccount.setSingleTradeCurrency(new FiatCurrency("EUR")); revolutAccount.setSingleTradeCurrency(new FiatCurrency("EUR"));
revolutAccount.addCurrency(new FiatCurrency("USD")); revolutAccount.addCurrency(new FiatCurrency("USD"));
paymentAccounts.add(revolutAccount); paymentAccounts.add(revolutAccount);
@ -104,9 +106,11 @@ public class CreateOfferDataModelTest {
final HashSet<PaymentAccount> paymentAccounts = new HashSet<>(); final HashSet<PaymentAccount> paymentAccounts = new HashSet<>();
final ClearXchangeAccount zelleAccount = new ClearXchangeAccount(); final ClearXchangeAccount zelleAccount = new ClearXchangeAccount();
zelleAccount.setId("234"); zelleAccount.setId("234");
zelleAccount.setAccountName("zelleAccount");
paymentAccounts.add(zelleAccount); paymentAccounts.add(zelleAccount);
final RevolutAccount revolutAccount = new RevolutAccount(); final RevolutAccount revolutAccount = new RevolutAccount();
revolutAccount.setId("123"); revolutAccount.setId("123");
revolutAccount.setAccountName("revolutAccount");
revolutAccount.setSingleTradeCurrency(new FiatCurrency("EUR")); revolutAccount.setSingleTradeCurrency(new FiatCurrency("EUR"));
paymentAccounts.add(revolutAccount); paymentAccounts.add(revolutAccount);