diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferDataModel.java index faad61d3a3..ea693c82fa 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferDataModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferDataModel.java @@ -40,6 +40,7 @@ import javafx.beans.property.*; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import org.bitcoinj.core.Coin; +import org.bitcoinj.core.Transaction; import org.bitcoinj.utils.ExchangeRate; import org.bitcoinj.utils.Fiat; import org.jetbrains.annotations.NotNull; @@ -289,6 +290,16 @@ class TakeOfferDataModel extends ActivatableDataModel { return true; } + boolean isAmountLargerThanOfferAmountMinusFee() { + //noinspection SimplifiableIfStatement + if (amountAsCoin.get() != null && offer != null) + return amountAsCoin.get() + .add(FeePolicy.getFeePerKb()) + .add(Transaction.MIN_NONDUST_OUTPUT) + .isGreaterThan(offer.getAmount()); + return true; + } + public PaymentMethod getPaymentMethod() { return offer.getPaymentMethod(); } diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java index 78b05ed2db..f194460798 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java @@ -22,7 +22,6 @@ import de.jensd.fx.fontawesome.AwesomeIcon; import io.bitsquare.app.BitsquareApp; import io.bitsquare.common.util.Tuple2; import io.bitsquare.common.util.Tuple3; -import io.bitsquare.common.util.Utilities; import io.bitsquare.gui.Navigation; import io.bitsquare.gui.common.view.ActivatableViewAndModel; import io.bitsquare.gui.common.view.FxmlView; @@ -485,11 +484,7 @@ public class TakeOfferView extends ActivatableViewAndModel { - String[] strings = value.split(" "); - if (strings.length > 1) - Utilities.copyToClipboard(strings[0]); // exclude the BTC postfix - }); + totalToPayTextField.setCopyWithoutCurrencyPostFix(true); GridPane.setRowIndex(totalToPayTextField, gridRow); GridPane.setColumnIndex(totalToPayTextField, 1); GridPane.setMargin(totalToPayTextField, new Insets(Layout.FIRST_ROW_AND_GROUP_DISTANCE, 0, 0, 0)); diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferViewModel.java index af040b7252..d1f392f99c 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferViewModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferViewModel.java @@ -223,6 +223,10 @@ class TakeOfferViewModel extends ActivatableWithDataModel im if (dataModel.isAmountLargerThanOfferAmount()) amountValidationResult.set(new InputValidator.ValidationResult(false, BSResources.get("takeOffer.validation.amountLargerThanOfferAmount"))); + + if (dataModel.isAmountLargerThanOfferAmountMinusFee()) + amountValidationResult.set(new InputValidator.ValidationResult(false, + BSResources.get("takeOffer.validation.amountLargerThanOfferAmountMinusFee"))); } } } diff --git a/gui/src/main/resources/i18n/displayStrings.properties b/gui/src/main/resources/i18n/displayStrings.properties index bccbcb8b78..34ff0501a3 100644 --- a/gui/src/main/resources/i18n/displayStrings.properties +++ b/gui/src/main/resources/i18n/displayStrings.properties @@ -101,6 +101,7 @@ takeOffer.amountPriceBox.next=Next step takeOffer.amountPriceBox.warning.invalidBtcDecimalPlaces=The amount you have entered exceeds the number of allowed decimal places.\nThe amount has been adjusted to 4 decimal places. takeOffer.validation.amountSmallerThanMinAmount=Amount cannot be smaller than minimum amount defined in the offer. takeOffer.validation.amountLargerThanOfferAmount=Input amount cannot be higher than the amount defined in the offer. +takeOffer.validation.amountLargerThanOfferAmountMinusFee=That input amount would create a dust change for the seller. takeOffer.fundsBox.title=Fund your trade wallet takeOffer.fundsBox.isOfferAvailable=Check if offer is available...