mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-24 23:18:17 +01:00
Apply displaystring for portfolio/pending
This commit is contained in:
parent
c6b5cbda02
commit
7692691fe8
42 changed files with 585 additions and 524 deletions
|
@ -390,7 +390,7 @@ abstract class BankForm extends PaymentMethodForm {
|
|||
FiatCurrency defaultCurrency = CurrencyUtil.getCurrencyByCountryCode(countryComboBox.getSelectionModel().getSelectedItem().code);
|
||||
if (!defaultCurrency.equals(selectedItem)) {
|
||||
new Popup<>().warning("Are you sure you want to choose a currency other than the country's default currency?")
|
||||
.actionButtonText("Yes")
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(() -> {
|
||||
paymentAccount.setSingleTradeCurrency(selectedItem);
|
||||
autoFillNameTextField();
|
||||
|
|
|
@ -407,7 +407,7 @@ public class CashDepositForm extends PaymentMethodForm {
|
|||
FiatCurrency defaultCurrency = CurrencyUtil.getCurrencyByCountryCode(countryComboBox.getSelectionModel().getSelectedItem().code);
|
||||
if (!defaultCurrency.equals(selectedItem)) {
|
||||
new Popup<>().warning("Are you sure you want to choose a currency other than the country's default currency?")
|
||||
.actionButtonText("Yes")
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(() -> {
|
||||
paymentAccount.setSingleTradeCurrency(selectedItem);
|
||||
autoFillNameTextField();
|
||||
|
|
|
@ -29,6 +29,7 @@ import io.bitsquare.gui.util.FormBuilder;
|
|||
import io.bitsquare.gui.util.ImageUtil;
|
||||
import io.bitsquare.gui.util.Layout;
|
||||
import io.bitsquare.locale.LanguageUtil;
|
||||
import io.bitsquare.locale.Res;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.collections.ListChangeListener;
|
||||
import javafx.geometry.HPos;
|
||||
|
@ -224,8 +225,7 @@ public class ArbitratorRegistrationView extends ActivatableViewAndModel<VBox, Ar
|
|||
() -> new Popup().feedback("You have successfully removed your arbitrator from the P2P network.").show(),
|
||||
(errorMessage) -> new Popup().error("Could not remove arbitrator.\nError message: " + errorMessage).show());
|
||||
} else {
|
||||
new Popup().information("You need to wait until you are fully connected to the network.\n" +
|
||||
"That might take up to about 2 minutes at startup.").show();
|
||||
new Popup().information(Res.get("popup.warning.notFullyConnected")).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -235,8 +235,7 @@ public class ArbitratorRegistrationView extends ActivatableViewAndModel<VBox, Ar
|
|||
() -> new Popup().feedback("You have successfully registered your arbitrator to the P2P network.").show(),
|
||||
(errorMessage) -> new Popup().error("Could not register arbitrator.\nError message: " + errorMessage).show());
|
||||
} else {
|
||||
new Popup().information("You need to wait until you are fully connected to the network.\n" +
|
||||
"That might take up to about 2 minutes at startup.").show();
|
||||
new Popup().information(Res.get("popup.warning.notFullyConnected")).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ import io.bitsquare.gui.util.ImageUtil;
|
|||
import io.bitsquare.gui.util.Layout;
|
||||
import io.bitsquare.gui.util.validation.*;
|
||||
import io.bitsquare.locale.CryptoCurrency;
|
||||
import io.bitsquare.locale.Res;
|
||||
import io.bitsquare.locale.TradeCurrency;
|
||||
import io.bitsquare.payment.PaymentAccount;
|
||||
import io.bitsquare.payment.PaymentAccountFactory;
|
||||
|
@ -196,7 +197,7 @@ public class AltCoinAccountsView extends ActivatableViewAndModel<GridPane, AltCo
|
|||
|
||||
private void onDeleteAccount(PaymentAccount paymentAccount) {
|
||||
new Popup().warning("Do you really want to delete the selected account?")
|
||||
.actionButtonText("Yes")
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(() -> {
|
||||
boolean isPaymentAccountUsed = model.onDeleteAccount(paymentAccount);
|
||||
if (!isPaymentAccountUsed)
|
||||
|
@ -207,7 +208,7 @@ public class AltCoinAccountsView extends ActivatableViewAndModel<GridPane, AltCo
|
|||
"open offer or in a trade.").show();
|
||||
}, 100, TimeUnit.MILLISECONDS);
|
||||
})
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.show();
|
||||
}
|
||||
|
||||
|
@ -275,7 +276,7 @@ public class AltCoinAccountsView extends ActivatableViewAndModel<GridPane, AltCo
|
|||
if (paymentMethodForm != null) {
|
||||
paymentMethodForm.addFormForAddAccount();
|
||||
gridRow = paymentMethodForm.getGridRow();
|
||||
Tuple2<Button, Button> tuple2 = add2ButtonsAfterGroup(root, ++gridRow, "Save new account", "Cancel");
|
||||
Tuple2<Button, Button> tuple2 = add2ButtonsAfterGroup(root, ++gridRow, "Save new account", Res.get("shared.cancel"));
|
||||
saveNewAccountButton = tuple2.first;
|
||||
saveNewAccountButton.setOnAction(event -> onSaveNewAccount(paymentMethodForm.getPaymentAccount()));
|
||||
saveNewAccountButton.disableProperty().bind(paymentMethodForm.allInputsValidProperty().not());
|
||||
|
@ -294,7 +295,7 @@ public class AltCoinAccountsView extends ActivatableViewAndModel<GridPane, AltCo
|
|||
if (paymentMethodForm != null) {
|
||||
paymentMethodForm.addFormForDisplayAccount();
|
||||
gridRow = paymentMethodForm.getGridRow();
|
||||
Tuple2<Button, Button> tuple = add2ButtonsAfterGroup(root, ++gridRow, "Delete account", "Cancel");
|
||||
Tuple2<Button, Button> tuple = add2ButtonsAfterGroup(root, ++gridRow, "Delete account", Res.get("shared.cancel"));
|
||||
Button deleteAccountButton = tuple.first;
|
||||
deleteAccountButton.setOnAction(event -> onDeleteAccount(paymentMethodForm.getPaymentAccount()));
|
||||
Button cancelButton = tuple.second;
|
||||
|
|
|
@ -163,7 +163,7 @@ public class FiatAccountsView extends ActivatableViewAndModel<GridPane, FiatAcco
|
|||
|
||||
private void onDeleteAccount(PaymentAccount paymentAccount) {
|
||||
new Popup().warning("Do you really want to delete the selected account?")
|
||||
.actionButtonText("Yes")
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(() -> {
|
||||
boolean isPaymentAccountUsed = model.onDeleteAccount(paymentAccount);
|
||||
if (!isPaymentAccountUsed)
|
||||
|
@ -174,7 +174,7 @@ public class FiatAccountsView extends ActivatableViewAndModel<GridPane, FiatAcco
|
|||
"open offer or in a trade.").show();
|
||||
}, 100, TimeUnit.MILLISECONDS);
|
||||
})
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.show();
|
||||
}
|
||||
|
||||
|
@ -262,7 +262,7 @@ public class FiatAccountsView extends ActivatableViewAndModel<GridPane, FiatAcco
|
|||
if (paymentMethodForm != null) {
|
||||
paymentMethodForm.addFormForAddAccount();
|
||||
gridRow = paymentMethodForm.getGridRow();
|
||||
Tuple2<Button, Button> tuple2 = add2ButtonsAfterGroup(root, ++gridRow, "Save new account", "Cancel");
|
||||
Tuple2<Button, Button> tuple2 = add2ButtonsAfterGroup(root, ++gridRow, "Save new account", Res.get("shared.cancel"));
|
||||
saveNewAccountButton = tuple2.first;
|
||||
saveNewAccountButton.setOnAction(event -> onSaveNewAccount(paymentMethodForm.getPaymentAccount()));
|
||||
saveNewAccountButton.disableProperty().bind(paymentMethodForm.allInputsValidProperty().not());
|
||||
|
@ -282,7 +282,7 @@ public class FiatAccountsView extends ActivatableViewAndModel<GridPane, FiatAcco
|
|||
if (paymentMethodForm != null) {
|
||||
paymentMethodForm.addFormForDisplayAccount();
|
||||
gridRow = paymentMethodForm.getGridRow();
|
||||
Tuple2<Button, Button> tuple = add2ButtonsAfterGroup(root, ++gridRow, "Delete account", "Cancel");
|
||||
Tuple2<Button, Button> tuple = add2ButtonsAfterGroup(root, ++gridRow, "Delete account", Res.get("shared.cancel"));
|
||||
Button deleteAccountButton = tuple.first;
|
||||
deleteAccountButton.setOnAction(event -> onDeleteAccount(paymentMethodForm.getPaymentAccount()));
|
||||
Button cancelButton = tuple.second;
|
||||
|
|
|
@ -27,6 +27,7 @@ import io.bitsquare.gui.common.view.FxmlView;
|
|||
import io.bitsquare.gui.main.overlays.popups.Popup;
|
||||
import io.bitsquare.gui.main.overlays.windows.WalletPasswordWindow;
|
||||
import io.bitsquare.gui.util.Layout;
|
||||
import io.bitsquare.locale.Res;
|
||||
import io.bitsquare.user.Preferences;
|
||||
import javafx.beans.property.BooleanProperty;
|
||||
import javafx.beans.property.SimpleBooleanProperty;
|
||||
|
@ -168,7 +169,7 @@ public class SeedWordsView extends ActivatableView<GridPane, Void> {
|
|||
initSeedWords(keyChainSeed);
|
||||
showSeedScreen();
|
||||
})
|
||||
.closeButtonText("No")
|
||||
.closeButtonText(Res.get("shared.no"))
|
||||
.show();
|
||||
} else {
|
||||
initSeedWords(keyChainSeed);
|
||||
|
@ -239,8 +240,8 @@ public class SeedWordsView extends ActivatableView<GridPane, Void> {
|
|||
.information("Your wallets are encrypted.\n\n" +
|
||||
"After restore, the wallets will no longer be encrypted and you must set a new password.\n\n" +
|
||||
"Do you want to proceed?")
|
||||
.closeButtonText("No")
|
||||
.actionButtonText("Yes")
|
||||
.closeButtonText(Res.get("shared.no"))
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(this::doRestore)
|
||||
.show();
|
||||
} else {
|
||||
|
|
|
@ -36,6 +36,7 @@ import io.bitsquare.gui.common.view.FxmlView;
|
|||
import io.bitsquare.gui.main.dao.compensation.CompensationRequestDisplay;
|
||||
import io.bitsquare.gui.main.overlays.popups.Popup;
|
||||
import io.bitsquare.gui.util.BSFormatter;
|
||||
import io.bitsquare.locale.Res;
|
||||
import io.bitsquare.p2p.NodeAddress;
|
||||
import io.bitsquare.p2p.P2PService;
|
||||
import javafx.scene.control.Button;
|
||||
|
@ -165,7 +166,7 @@ public class CreateCompensationRequestView extends ActivatableView<GridPane, Voi
|
|||
" Satoshis/byte)\n" +
|
||||
"Transaction size: " + (txSize / 1000d) + " Kb\n\n" +
|
||||
"Are you sure you want to send the transaction?")
|
||||
.actionButtonText("Yes")
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(() -> {
|
||||
try {
|
||||
bsqWalletService.commitTx(txWithBtcFee);
|
||||
|
@ -194,7 +195,7 @@ public class CreateCompensationRequestView extends ActivatableView<GridPane, Voi
|
|||
new Popup<>().warning(e.toString());
|
||||
}
|
||||
})
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.show();
|
||||
} catch (InsufficientFundsException | IOException |
|
||||
TransactionVerificationException | WalletException | InsufficientMoneyException | ChangeBelowDustException e) {
|
||||
|
|
|
@ -37,6 +37,7 @@ import io.bitsquare.gui.main.overlays.popups.Popup;
|
|||
import io.bitsquare.gui.util.BSFormatter;
|
||||
import io.bitsquare.gui.util.BsqFormatter;
|
||||
import io.bitsquare.gui.util.Layout;
|
||||
import io.bitsquare.locale.Res;
|
||||
import javafx.beans.property.DoubleProperty;
|
||||
import javafx.beans.property.SimpleDoubleProperty;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
|
@ -224,7 +225,7 @@ public class VoteView extends ActivatableView<GridPane, Void> {
|
|||
" Satoshis/byte)\n" +
|
||||
"Transaction size: " + (txSize / 1000d) + " Kb\n\n" +
|
||||
"Are you sure you want to send the transaction?")
|
||||
.actionButtonText("Yes")
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(() -> {
|
||||
try {
|
||||
bsqWalletService.commitTx(txWithBtcFee);
|
||||
|
@ -253,7 +254,7 @@ public class VoteView extends ActivatableView<GridPane, Void> {
|
|||
new Popup<>().warning(e.toString());
|
||||
}
|
||||
})
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.show();
|
||||
} catch (InsufficientMoneyException | WalletException | TransactionVerificationException |
|
||||
ChangeBelowDustException | InsufficientFundsException e) {
|
||||
|
|
|
@ -34,6 +34,7 @@ import io.bitsquare.gui.main.overlays.popups.Popup;
|
|||
import io.bitsquare.gui.util.BSFormatter;
|
||||
import io.bitsquare.gui.util.BsqFormatter;
|
||||
import io.bitsquare.gui.util.Layout;
|
||||
import io.bitsquare.locale.Res;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.layout.GridPane;
|
||||
|
@ -122,7 +123,7 @@ public class BsqSendView extends ActivatableView<GridPane, Void> {
|
|||
"Transaction size: " + (txSize / 1000d) + " Kb\n\n" +
|
||||
/*"The recipient will receive: " + bsqFormatter.formatCoinWithCode(receiverAmount) + "\n\n" +*/
|
||||
"Are you sure you want to withdraw that amount?")
|
||||
.actionButtonText("Yes")
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(() -> {
|
||||
try {
|
||||
bsqWalletService.commitTx(txWithBtcFee);
|
||||
|
@ -149,7 +150,7 @@ public class BsqSendView extends ActivatableView<GridPane, Void> {
|
|||
new Popup<>().warning(e.toString());
|
||||
}
|
||||
})
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.show();
|
||||
} catch (AddressFormatException | InsufficientFundsException |
|
||||
TransactionVerificationException | WalletException | InsufficientMoneyException e) {
|
||||
|
|
|
@ -628,8 +628,7 @@ public class TraderDisputeView extends ActivatableView<VBox, Void> {
|
|||
if (!text.isEmpty())
|
||||
onSendMessage(text, selectedDispute);
|
||||
} else {
|
||||
new Popup().information("You need to wait until you are fully connected to the network.\n" +
|
||||
"That might take up to about 2 minutes at startup.").show();
|
||||
new Popup().information(Res.get("popup.warning.notFullyConnected")).show();
|
||||
}
|
||||
});
|
||||
inputTextAreaTextSubscription = EasyBind.subscribe(inputTextArea.textProperty(), t -> sendButton.setDisable(t.isEmpty()));
|
||||
|
@ -1039,7 +1038,7 @@ public class TraderDisputeView extends ActivatableView<VBox, Void> {
|
|||
Optional<Trade> tradeOptional = tradeManager.getTradeById(item.getTradeId());
|
||||
if (tradeOptional.isPresent()) {
|
||||
field.setMouseTransparent(false);
|
||||
field.setTooltip(new Tooltip("Open popup for details"));
|
||||
field.setTooltip(new Tooltip(Res.get("tooltip.openPopupForDetails")));
|
||||
field.setOnAction(event -> tradeDetailsWindow.show(tradeOptional.get()));
|
||||
} else {
|
||||
field.setMouseTransparent(true);
|
||||
|
|
|
@ -249,7 +249,7 @@ public class LockedView extends ActivatableView<VBox, Void> {
|
|||
field = new HyperlinkWithIcon("Locked in MultiSig for trade with ID: " + item.getAddressEntry().getShortOfferId(),
|
||||
AwesomeIcon.INFO_SIGN);
|
||||
field.setOnAction(event -> openDetailPopup(item));
|
||||
field.setTooltip(new Tooltip("Open popup for details"));
|
||||
field.setTooltip(new Tooltip(Res.get("tooltip.openPopupForDetails")));
|
||||
setGraphic(field);
|
||||
} else if (item.getAddressEntry().getContext() == AddressEntry.Context.ARBITRATOR) {
|
||||
setGraphic(new Label("Arbitrator's fee"));
|
||||
|
|
|
@ -249,7 +249,7 @@ public class ReservedView extends ActivatableView<VBox, Void> {
|
|||
field = new HyperlinkWithIcon("Reserved in local wallet for offer with ID: " + item.getAddressEntry().getShortOfferId(),
|
||||
AwesomeIcon.INFO_SIGN);
|
||||
field.setOnAction(event -> openDetailPopup(item));
|
||||
field.setTooltip(new Tooltip("Open popup for details"));
|
||||
field.setTooltip(new Tooltip(Res.get("tooltip.openPopupForDetails")));
|
||||
setGraphic(field);
|
||||
} else if (item.getAddressEntry().getContext() == AddressEntry.Context.ARBITRATOR) {
|
||||
setGraphic(new Label("Arbitrator's fee"));
|
||||
|
|
|
@ -382,7 +382,7 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
|
|||
if (item.getDetailsAvailable()) {
|
||||
field = new HyperlinkWithIcon(item.getDetails(), AwesomeIcon.INFO_SIGN);
|
||||
field.setOnAction(event -> openDetailPopup(item));
|
||||
field.setTooltip(new Tooltip("Open popup for details"));
|
||||
field.setTooltip(new Tooltip(Res.get("tooltip.openPopupForDetails")));
|
||||
setGraphic(field);
|
||||
} else {
|
||||
setGraphic(new Label(item.getDetails()));
|
||||
|
|
|
@ -256,9 +256,9 @@ public class WithdrawalView extends ActivatableView<VBox, Void> {
|
|||
"Transaction size: " + (txSize / 1000d) + " Kb\n\n" +
|
||||
"The recipient will receive: " + formatter.formatCoinWithCode(receiverAmount) + "\n\n" +
|
||||
"Are you sure you want to withdraw that amount?")
|
||||
.actionButtonText("Yes")
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(() -> doWithdraw(amount, fee, callback))
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.show();
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -756,8 +756,8 @@ public class OfferBookView extends ActivatableViewAndModel<GridPane, OfferBookVi
|
|||
int numPastTrades = model.getNumPastTrades(newItem.getOffer());
|
||||
boolean hasTraded = numPastTrades > 0;
|
||||
String tooltipText = hasTraded ?
|
||||
Res.get("peerInfoIcon.tooltip.traded", hostName, numPastTrades) :
|
||||
Res.get("peerInfoIcon.tooltip.notTraded", hostName);
|
||||
Res.get("peerInfoIcon.tooltip.offer.traded", hostName, numPastTrades) :
|
||||
Res.get("peerInfoIcon.tooltip.offer.notTraded", hostName);
|
||||
Node peerInfoIcon = new PeerInfoIcon(hostName, tooltipText, numPastTrades, privateNotificationManager, newItem.getOffer());
|
||||
setPadding(new Insets(-2, 0, -2, 0));
|
||||
setGraphic(peerInfoIcon);
|
||||
|
|
|
@ -165,7 +165,7 @@ public class ContractWindow extends Overlay<ContractWindow> {
|
|||
addLabelTxIdTextField(gridPane, ++rowIndex, "Offer fee transaction ID:", offer.getOfferFeePaymentTxID());
|
||||
addLabelTxIdTextField(gridPane, ++rowIndex, "Trading fee transaction ID:", contract.takeOfferFeeTxID);
|
||||
if (dispute.getDepositTxSerialized() != null)
|
||||
addLabelTxIdTextField(gridPane, ++rowIndex, "Deposit transaction ID:", dispute.getDepositTxId());
|
||||
addLabelTxIdTextField(gridPane, ++rowIndex, Res.getWithCol("shared.depositTransactionId"), dispute.getDepositTxId());
|
||||
if (dispute.getPayoutTxSerialized() != null)
|
||||
addLabelTxIdTextField(gridPane, ++rowIndex, "Payout transaction ID:", dispute.getPayoutTxId());
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ import io.bitsquare.gui.main.overlays.popups.Popup;
|
|||
import io.bitsquare.gui.util.BSFormatter;
|
||||
import io.bitsquare.gui.util.Layout;
|
||||
import io.bitsquare.gui.util.Transitions;
|
||||
import io.bitsquare.locale.Res;
|
||||
import io.bitsquare.trade.Contract;
|
||||
import javafx.beans.binding.Bindings;
|
||||
import javafx.beans.binding.ObjectBinding;
|
||||
|
@ -565,7 +566,7 @@ public class DisputeSummaryWindow extends Overlay<DisputeSummaryWindow> {
|
|||
}
|
||||
|
||||
private void addButtons(Contract contract) {
|
||||
Tuple2<Button, Button> tuple = add2ButtonsAfterGroup(gridPane, ++rowIndex, "Close ticket", "Cancel");
|
||||
Tuple2<Button, Button> tuple = add2ButtonsAfterGroup(gridPane, ++rowIndex, "Close ticket", Res.get("shared.cancel"));
|
||||
Button closeTicketButton = tuple.first;
|
||||
closeTicketButton.disableProperty().bind(Bindings.createBooleanBinding(
|
||||
() -> tradeAmountToggleGroup.getSelectedToggle() == null
|
||||
|
|
|
@ -27,6 +27,7 @@ import io.bitsquare.gui.main.overlays.Overlay;
|
|||
import io.bitsquare.gui.main.overlays.popups.Popup;
|
||||
import io.bitsquare.gui.util.BSFormatter;
|
||||
import io.bitsquare.gui.util.Transitions;
|
||||
import io.bitsquare.locale.Res;
|
||||
import io.bitsquare.trade.offer.OpenOfferManager;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.Scene;
|
||||
|
@ -138,7 +139,7 @@ public class EmptyWalletWindow extends Overlay<EmptyWalletWindow> {
|
|||
}
|
||||
});
|
||||
|
||||
closeButton = new Button("Cancel");
|
||||
closeButton = new Button(Res.get("shared.cancel"));
|
||||
closeButton.setOnAction(e -> {
|
||||
hide();
|
||||
closeHandlerOptional.ifPresent(Runnable::run);
|
||||
|
|
|
@ -196,7 +196,7 @@ public class TradeDetailsWindow extends Overlay<TradeDetailsWindow> {
|
|||
addLabelTxIdTextField(gridPane, ++rowIndex, "Taker fee transaction ID:", trade.getTakeOfferFeeTxId());
|
||||
|
||||
if (trade.getDepositTx() != null)
|
||||
addLabelTxIdTextField(gridPane, ++rowIndex, "Deposit transaction ID:", trade.getDepositTx().getHashAsString());
|
||||
addLabelTxIdTextField(gridPane, ++rowIndex, Res.getWithCol("shared.depositTransactionId"), trade.getDepositTx().getHashAsString());
|
||||
if (trade.getPayoutTx() != null)
|
||||
addLabelTxIdTextField(gridPane, ++rowIndex, "Payout transaction ID:", trade.getPayoutTx().getHashAsString());
|
||||
if (showDisputedTx)
|
||||
|
|
|
@ -223,7 +223,7 @@ public class WalletPasswordWindow extends Overlay<WalletPasswordWindow> {
|
|||
showRestoreScreen();
|
||||
});
|
||||
|
||||
Button cancelButton = new Button("Cancel");
|
||||
Button cancelButton = new Button(Res.get("shared.cancel"));
|
||||
cancelButton.setOnAction(event -> {
|
||||
hide();
|
||||
closeHandlerOptional.ifPresent(Runnable::run);
|
||||
|
@ -355,8 +355,8 @@ public class WalletPasswordWindow extends Overlay<WalletPasswordWindow> {
|
|||
.information("Your bitcoin wallet is encrypted.\n\n" +
|
||||
"After restore, the wallet will no longer be encrypted and you must set a new password.\n\n" +
|
||||
"Do you want to proceed?")
|
||||
.closeButtonText("No")
|
||||
.actionButtonText("Yes")
|
||||
.closeButtonText(Res.get("shared.no"))
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(this::doRestore)
|
||||
.show();
|
||||
} else {
|
||||
|
|
|
@ -41,7 +41,7 @@ public class PortfolioView extends ActivatableViewAndModel<TabPane, Activatable>
|
|||
|
||||
@FXML
|
||||
Tab openOffersTab, pendingTradesTab, closedTradesTab;
|
||||
private final Tab failedTradesTab = new Tab("Failed");
|
||||
private final Tab failedTradesTab = new Tab(Res.get("portfolio.tab.failed"));
|
||||
private Tab currentTab;
|
||||
private Navigation.Listener navigationListener;
|
||||
private ChangeListener<Tab> tabChangeListener;
|
||||
|
|
|
@ -212,7 +212,7 @@ public class ClosedTradesView extends ActivatableViewAndModel<VBox, ClosedTrades
|
|||
else if (tradable instanceof OpenOffer)
|
||||
offerDetailsWindow.show(tradable.getOffer());
|
||||
});
|
||||
field.setTooltip(new Tooltip("Open popup for details"));
|
||||
field.setTooltip(new Tooltip(Res.get("tooltip.openPopupForDetails")));
|
||||
setGraphic(field);
|
||||
} else {
|
||||
setGraphic(null);
|
||||
|
@ -306,10 +306,10 @@ public class ClosedTradesView extends ActivatableViewAndModel<VBox, ClosedTrades
|
|||
int numPastTrades = model.getNumPastTrades(newItem.getTradable());
|
||||
Trade trade = (Trade) newItem.getTradable();
|
||||
String hostName = trade.getTradingPeerNodeAddress() != null ? trade.getTradingPeerNodeAddress().hostName : "";
|
||||
Node identIcon = new PeerInfoIcon(hostName, "Trading peers onion address: " + hostName, numPastTrades, privateNotificationManager, newItem.getTradable().getOffer());
|
||||
Node peerInfoIcon = new PeerInfoIcon(hostName, "Trading peers onion address: " + hostName, numPastTrades, privateNotificationManager, newItem.getTradable().getOffer());
|
||||
setPadding(new Insets(-2, 0, -2, 0));
|
||||
if (identIcon != null)
|
||||
setGraphic(identIcon);
|
||||
if (peerInfoIcon != null)
|
||||
setGraphic(peerInfoIcon);
|
||||
} else {
|
||||
setGraphic(null);
|
||||
}
|
||||
|
|
|
@ -127,7 +127,7 @@ public class FailedTradesView extends ActivatableViewAndModel<VBox, FailedTrades
|
|||
if (item != null && !empty) {
|
||||
field = new HyperlinkWithIcon(model.getTradeId(item), true);
|
||||
field.setOnAction(event -> tradeDetailsWindow.show(item.getTrade()));
|
||||
field.setTooltip(new Tooltip("Open popup for details"));
|
||||
field.setTooltip(new Tooltip(Res.get("tooltip.openPopupForDetails")));
|
||||
setGraphic(field);
|
||||
} else {
|
||||
setGraphic(null);
|
||||
|
|
|
@ -82,7 +82,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
setRemoveColumnCellFactory();
|
||||
|
||||
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
|
||||
tableView.setPlaceholder(new Label("No open offers available"));
|
||||
tableView.setPlaceholder(new Label(Res.get("table.placeholder.noItems", Res.get("shared.openOffers"))));
|
||||
|
||||
offerIdColumn.setComparator((o1, o2) -> o1.getOffer().getId().compareTo(o2.getOffer().getId()));
|
||||
directionColumn.setComparator((o1, o2) -> o1.getOffer().getDirection().compareTo(o2.getOffer().getDirection()));
|
||||
|
@ -120,18 +120,16 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
if (model.isBootstrapped()) {
|
||||
String key = "RemoveOfferWarning";
|
||||
if (preferences.showAgain(key))
|
||||
new Popup().warning("Are you sure you want to remove that offer?\n" +
|
||||
"The offer fee of " + model.formatter.formatCoinWithCode(openOffer.getOffer().getCreateOfferFee()) + " will be lost if you remove that offer.")
|
||||
.actionButtonText("Remove offer")
|
||||
new Popup().warning(Res.get("popup.warning.removeOffer", model.formatter.formatCoinWithCode(openOffer.getOffer().getCreateOfferFee())))
|
||||
.actionButtonText(Res.get("shared.removeOffer"))
|
||||
.onAction(() -> doRemoveOpenOffer(openOffer))
|
||||
.closeButtonText("Don't remove the offer")
|
||||
.closeButtonText(Res.get("shared.dontRemoveOffer"))
|
||||
.dontShowAgainId(key, preferences)
|
||||
.show();
|
||||
else
|
||||
doRemoveOpenOffer(openOffer);
|
||||
} else {
|
||||
new Popup().information("You need to wait until you are fully connected to the network.\n" +
|
||||
"That might take up to about 2 minutes at startup.").show();
|
||||
new Popup().information(Res.get("popup.warning.notFullyConnected")).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -141,15 +139,15 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
log.debug("Remove offer was successful");
|
||||
String key = "WithdrawFundsAfterRemoveOfferInfo";
|
||||
if (preferences.showAgain(key))
|
||||
new Popup().instruction("You can withdraw the funds you paid in from the \"Fund/Available for withdrawal\" screen.")
|
||||
.actionButtonText("Go to \"Funds/Available for withdrawal\"")
|
||||
new Popup().instruction(Res.get("offerbook.withdrawFundsHint", Res.get("navigation.funds.availableForWithdrawal")))
|
||||
.actionButtonTextWithGoTo("navigation.funds.availableForWithdrawal")
|
||||
.onAction(() -> navigation.navigateTo(MainView.class, FundsView.class, WithdrawalView.class))
|
||||
.dontShowAgainId(key, preferences)
|
||||
.show();
|
||||
},
|
||||
(message) -> {
|
||||
log.error(message);
|
||||
new Popup().warning("Remove offer failed:\n" + message).show();
|
||||
new Popup().warning(Res.get("offerbook.removeOffer.failed", message)).show();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -171,7 +169,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
if (item != null && !empty) {
|
||||
field = new HyperlinkWithIcon(model.getTradeId(item), true);
|
||||
field.setOnAction(event -> offerDetailsWindow.show(item.getOffer()));
|
||||
field.setTooltip(new Tooltip("Open popup for details"));
|
||||
field.setTooltip(new Tooltip(Res.get("tooltip.openPopupForDetails")));
|
||||
setGraphic(field);
|
||||
} else {
|
||||
setGraphic(null);
|
||||
|
@ -316,7 +314,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
|
|||
|
||||
{
|
||||
iconView.setId("image-remove");
|
||||
button.setText("Remove");
|
||||
button.setText(Res.get("shared.remove"));
|
||||
button.setGraphic(iconView);
|
||||
button.setMinWidth(70);
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ package io.bitsquare.gui.main.portfolio.pendingtrades;
|
|||
import io.bitsquare.app.Log;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeWizardItem;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.buyer.*;
|
||||
import io.bitsquare.locale.Res;
|
||||
import org.fxmisc.easybind.EasyBind;
|
||||
|
||||
public class BuyerSubView extends TradeSubView {
|
||||
|
@ -47,11 +48,11 @@ public class BuyerSubView extends TradeSubView {
|
|||
|
||||
@Override
|
||||
protected void addWizards() {
|
||||
step1 = new TradeWizardItem(BuyerStep1View.class, "Wait for blockchain confirmation");
|
||||
step2 = new TradeWizardItem(BuyerStep2View.class, "Start payment");
|
||||
step3 = new TradeWizardItem(BuyerStep3View.class, "Wait until payment arrived");
|
||||
step4 = new TradeWizardItem(BuyerStep4View.class, "Wait for payout unlock");
|
||||
step5 = new TradeWizardItem(BuyerStep5View.class, "Completed");
|
||||
step1 = new TradeWizardItem(BuyerStep1View.class, Res.get("portfolio.pending.step1.waitForConf"));
|
||||
step2 = new TradeWizardItem(BuyerStep2View.class, Res.get("portfolio.pending.step2_buyer.startPayment"));
|
||||
step3 = new TradeWizardItem(BuyerStep3View.class, Res.get("portfolio.pending.step3_buyer.waitPaymentArrived"));
|
||||
step4 = new TradeWizardItem(BuyerStep4View.class, Res.get("portfolio.pending.step4.waitPaymentUnlocked"));
|
||||
step5 = new TradeWizardItem(BuyerStep5View.class, Res.get("portfolio.pending.step5.completed"));
|
||||
|
||||
if (model.getLockTime() > 0) {
|
||||
addWizardsToGridPane(step1);
|
||||
|
|
|
@ -38,6 +38,7 @@ import io.bitsquare.gui.main.overlays.notifications.NotificationCenter;
|
|||
import io.bitsquare.gui.main.overlays.popups.Popup;
|
||||
import io.bitsquare.gui.main.overlays.windows.SelectDepositTxWindow;
|
||||
import io.bitsquare.gui.main.overlays.windows.WalletPasswordWindow;
|
||||
import io.bitsquare.locale.Res;
|
||||
import io.bitsquare.p2p.P2PService;
|
||||
import io.bitsquare.payment.PaymentAccountContractData;
|
||||
import io.bitsquare.trade.BuyerTrade;
|
||||
|
@ -174,7 +175,7 @@ public class PendingTradesDataModel extends ActivatableDataModel {
|
|||
faultHandler.handleFault(errorMessage, throwable);
|
||||
});
|
||||
} else {
|
||||
faultHandler.handleFault("No receiver address defined", null);
|
||||
faultHandler.handleFault(Res.get("portfolio.pending.noReceiverAddressDefined"), null);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -342,7 +343,7 @@ public class PendingTradesDataModel extends ActivatableDataModel {
|
|||
else if (candidates.size() > 1)
|
||||
new SelectDepositTxWindow().transactions(candidates)
|
||||
.onSelect(transaction -> doOpenDispute(isSupportTicket, transaction))
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.show();
|
||||
else
|
||||
log.error("Trade.depositTx is null and we did not find any MultiSig transaction.");
|
||||
|
@ -400,8 +401,7 @@ public class PendingTradesDataModel extends ActivatableDataModel {
|
|||
if (p2PService.isBootstrapped()) {
|
||||
sendOpenNewDisputeMessage(dispute, false);
|
||||
} else {
|
||||
new Popup().information("You need to wait until you are fully connected to the network.\n" +
|
||||
"That might take up to about 2 minutes at startup.").show();
|
||||
new Popup().information(Res.get("popup.warning.notFullyConnected")).show();
|
||||
}
|
||||
} else {
|
||||
log.warn("trade is null at doOpenDispute");
|
||||
|
@ -414,13 +414,11 @@ public class PendingTradesDataModel extends ActivatableDataModel {
|
|||
() -> navigation.navigateTo(MainView.class, DisputesView.class),
|
||||
(errorMessage, throwable) -> {
|
||||
if ((throwable instanceof DisputeAlreadyOpenException)) {
|
||||
errorMessage += "\n\n" +
|
||||
"If you are not sure that the message to the arbitrator arrived (e.g. if you did not got " +
|
||||
"a response after 1 day) feel free to open a dispute again.";
|
||||
errorMessage += "\n\n" + Res.get("portfolio.pending.openAgainDispute.msg");
|
||||
new Popup().warning(errorMessage)
|
||||
.actionButtonText("Open dispute again")
|
||||
.actionButtonText(Res.get("portfolio.pending.openAgainDispute.button"))
|
||||
.onAction(() -> sendOpenNewDisputeMessage(dispute, true))
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.show();
|
||||
} else {
|
||||
new Popup().warning(errorMessage).show();
|
||||
|
|
|
@ -91,7 +91,7 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
|
|||
tradeIdColumn.setText(Res.get("shared.tradeId"));
|
||||
paymentMethodColumn.setText(Res.get("shared.paymentMethod"));
|
||||
avatarColumn.setText(Res.get(""));
|
||||
|
||||
|
||||
setTradeIdColumnCellFactory();
|
||||
setDateColumnCellFactory();
|
||||
setAmountColumnCellFactory();
|
||||
|
@ -103,7 +103,7 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
|
|||
setAvatarColumnCellFactory();
|
||||
|
||||
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
|
||||
tableView.setPlaceholder(new Label("No pending trades available"));
|
||||
tableView.setPlaceholder(new Label(Res.get("table.placeholder.noItems", Res.get("shared.openTrades"))));
|
||||
tableView.setMinHeight(100);
|
||||
|
||||
tradeIdColumn.setComparator((o1, o2) -> o1.getTrade().getId().compareTo(o2.getTrade().getId()));
|
||||
|
@ -139,15 +139,12 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
|
|||
keyEventEventHandler = event -> {
|
||||
if (new KeyCodeCombination(KeyCode.O, KeyCombination.SHORTCUT_DOWN).match(event) || new KeyCodeCombination(KeyCode.O, KeyCombination.CONTROL_DOWN).match(event)) {
|
||||
Popup popup = new Popup();
|
||||
popup.headLine("Open support ticket")
|
||||
.message("Please use that only in emergency case if you don't get displayed a \"Open support\" or \"Open dispute\" button.\n\n" +
|
||||
"When you open a support ticket the trade will be interrupted and handled by the arbitrator\n\n" +
|
||||
"Unjustified support tickets (e.g. caused by usability problems or questions) will " +
|
||||
"cause a loss of the security deposit by the trader who opened the ticket.")
|
||||
.actionButtonText("Open support ticket")
|
||||
popup.headLine(Res.get("portfolio.pending.openSupportTicket.headline"))
|
||||
.message(Res.get("portfolio.pending.openSupportTicket.msg"))
|
||||
.actionButtonText(Res.get("portfolio.pending.openSupportTicket.headline"))
|
||||
.onAction(model.dataModel::onOpenSupportTicket)
|
||||
.closeButtonText("Cancel")
|
||||
.onClose(() -> popup.hide())
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.onClose(popup::hide)
|
||||
.show();
|
||||
}
|
||||
};
|
||||
|
@ -278,7 +275,7 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
|
|||
if (item != null && !empty) {
|
||||
field = new HyperlinkWithIcon(item.getTrade().getShortId(), true);
|
||||
field.setOnAction(event -> tradeDetailsWindow.show(item.getTrade()));
|
||||
field.setTooltip(new Tooltip("Open popup for details"));
|
||||
field.setTooltip(new Tooltip(Res.get("tooltip.openPopupForDetails")));
|
||||
setGraphic(field);
|
||||
} else {
|
||||
setGraphic(null);
|
||||
|
@ -468,12 +465,13 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
|
|||
String hostName = newItem.getTrade().getTradingPeerNodeAddress().hostName;
|
||||
int numPastTrades = model.getNumPastTrades(newItem.getTrade());
|
||||
boolean hasTraded = numPastTrades > 0;
|
||||
String tooltipText = hasTraded ? "Trading peers onion address: " + hostName + "\n" +
|
||||
"You have already traded " + numPastTrades + " times with that peer." : "Trading peers onion address: " + hostName;
|
||||
Node identIcon = new PeerInfoIcon(hostName, tooltipText, numPastTrades, privateNotificationManager, newItem.getTrade().getOffer());
|
||||
String tooltipText = hasTraded ?
|
||||
Res.get("peerInfoIcon.tooltip.trade.traded", hostName, numPastTrades) :
|
||||
Res.get("peerInfoIcon.tooltip.trade.notTraded", hostName);
|
||||
Node peerInfoIcon = new PeerInfoIcon(hostName, tooltipText, numPastTrades,
|
||||
privateNotificationManager, newItem.getTrade().getOffer());
|
||||
setPadding(new Insets(-2, 0, -2, 0));
|
||||
if (identIcon != null)
|
||||
setGraphic(identIcon);
|
||||
setGraphic(peerInfoIcon);
|
||||
} else {
|
||||
setGraphic(null);
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ package io.bitsquare.gui.main.portfolio.pendingtrades;
|
|||
import io.bitsquare.app.Log;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeWizardItem;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.seller.*;
|
||||
import io.bitsquare.locale.Res;
|
||||
import org.fxmisc.easybind.EasyBind;
|
||||
|
||||
public class SellerSubView extends TradeSubView {
|
||||
|
@ -46,11 +47,12 @@ public class SellerSubView extends TradeSubView {
|
|||
|
||||
@Override
|
||||
protected void addWizards() {
|
||||
step1 = new TradeWizardItem(SellerStep1View.class, "Wait for blockchain confirmation");
|
||||
step2 = new TradeWizardItem(SellerStep2View.class, "Wait until payment has started");
|
||||
step3 = new TradeWizardItem(SellerStep3View.class, "Confirm payment received");
|
||||
step4 = new TradeWizardItem(SellerStep4View.class, "Wait for payout unlock");
|
||||
step5 = new TradeWizardItem(SellerStep5View.class, "Completed");
|
||||
step1 = new TradeWizardItem(SellerStep1View.class, Res.get("portfolio.pending.step1.waitForConf"));
|
||||
step2 = new TradeWizardItem(SellerStep2View.class, Res.get("portfolio.pending.step2_seller.waitPaymentStarted"));
|
||||
step3 = new TradeWizardItem(SellerStep3View.class, Res.get("portfolio.pending.step3_seller.confirmPaymentReceived"));
|
||||
step4 = new TradeWizardItem(SellerStep4View.class, Res.get("portfolio.pending.step4.waitPaymentUnlocked"));
|
||||
step5 = new TradeWizardItem(SellerStep5View.class, Res.get("portfolio.pending.step5.completed"));
|
||||
|
||||
|
||||
if (model.getLockTime() > 0) {
|
||||
addWizardsToGridPane(step1);
|
||||
|
|
|
@ -21,6 +21,7 @@ import io.bitsquare.gui.components.TitledGroupBg;
|
|||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeStepView;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeWizardItem;
|
||||
import io.bitsquare.gui.util.Layout;
|
||||
import io.bitsquare.locale.Res;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.Label;
|
||||
|
@ -86,13 +87,13 @@ public abstract class TradeSubView extends HBox {
|
|||
leftVBox.getChildren().add(leftGridPane);
|
||||
|
||||
leftGridPaneRowIndex = 0;
|
||||
tradeProcessTitledGroupBg = addTitledGroupBg(leftGridPane, leftGridPaneRowIndex, 1, "Trade process");
|
||||
tradeProcessTitledGroupBg = addTitledGroupBg(leftGridPane, leftGridPaneRowIndex, 1, Res.get("portfolio.pending.tradeProcess"));
|
||||
|
||||
addWizards();
|
||||
|
||||
TitledGroupBg noticeTitledGroupBg = addTitledGroupBg(leftGridPane, leftGridPaneRowIndex, 1, "", Layout.GROUP_DISTANCE);
|
||||
Label label = addMultilineLabel(leftGridPane, leftGridPaneRowIndex, "", Layout.FIRST_ROW_AND_GROUP_DISTANCE);
|
||||
openDisputeButton = addButtonAfterGroup(leftGridPane, ++leftGridPaneRowIndex, "Open Dispute");
|
||||
openDisputeButton = addButtonAfterGroup(leftGridPane, ++leftGridPaneRowIndex, Res.get("portfolio.pending.openDispute"));
|
||||
GridPane.setColumnIndex(openDisputeButton, 0);
|
||||
openDisputeButton.setId("open-dispute-button");
|
||||
|
||||
|
|
|
@ -166,8 +166,8 @@ public abstract class TradeStepView extends AnchorPane {
|
|||
}
|
||||
|
||||
protected void addTradeInfoBlock() {
|
||||
tradeInfoTitledGroupBg = addTitledGroupBg(gridPane, gridRow, 4, "Trade information");
|
||||
txIdTextField = addLabelTxIdTextField(gridPane, gridRow, "Deposit transaction ID:", Layout.FIRST_ROW_DISTANCE).second;
|
||||
tradeInfoTitledGroupBg = addTitledGroupBg(gridPane, gridRow, 4, Res.get("portfolio.pending.tradeInformation"));
|
||||
txIdTextField = addLabelTxIdTextField(gridPane, gridRow, Res.getWithCol("shared.depositTransactionId"), Layout.FIRST_ROW_DISTANCE).second;
|
||||
String id = model.dataModel.txId.get();
|
||||
if (!id.isEmpty())
|
||||
txIdTextField.setup(id);
|
||||
|
@ -177,7 +177,7 @@ public abstract class TradeStepView extends AnchorPane {
|
|||
PaymentMethodForm.addAllowedPeriod(gridPane, ++gridRow, model.dataModel.getSellersPaymentAccountContractData(),
|
||||
model.getDateForOpenDispute());
|
||||
|
||||
timeLeftTextField = addLabelTextField(gridPane, ++gridRow, "Remaining time:").second;
|
||||
timeLeftTextField = addLabelTextField(gridPane, ++gridRow, Res.getWithCol("portfolio.pending.remainingTime")).second;
|
||||
|
||||
timeLeftProgressBar = new ProgressBar(0);
|
||||
timeLeftProgressBar.setOpacity(0.7);
|
||||
|
@ -258,31 +258,31 @@ public abstract class TradeStepView extends AnchorPane {
|
|||
|
||||
protected void setInformationHeadline() {
|
||||
if (notificationGroup != null) {
|
||||
notificationGroup.titledGroupBg.setText("Notification");
|
||||
notificationGroup.titledGroupBg.setText(Res.get("portfolio.pending.notification"));
|
||||
}
|
||||
}
|
||||
|
||||
protected void setOpenDisputeHeadline() {
|
||||
if (notificationGroup != null) {
|
||||
notificationGroup.titledGroupBg.setText("Open a dispute");
|
||||
notificationGroup.titledGroupBg.setText(Res.get("portfolio.pending.openDispute"));
|
||||
}
|
||||
}
|
||||
|
||||
protected void setDisputeOpenedHeadline() {
|
||||
if (notificationGroup != null) {
|
||||
notificationGroup.titledGroupBg.setText("Dispute opened");
|
||||
notificationGroup.titledGroupBg.setText(Res.get("portfolio.pending.disputeOpened"));
|
||||
}
|
||||
}
|
||||
|
||||
protected void setRequestSupportHeadline() {
|
||||
if (notificationGroup != null) {
|
||||
notificationGroup.titledGroupBg.setText("Open support ticket");
|
||||
notificationGroup.titledGroupBg.setText(Res.get("portfolio.pending.openSupport"));
|
||||
}
|
||||
}
|
||||
|
||||
protected void setSupportOpenedHeadline() {
|
||||
if (notificationGroup != null) {
|
||||
notificationGroup.titledGroupBg.setText("Support ticket opened");
|
||||
notificationGroup.titledGroupBg.setText(Res.get("portfolio.pending.supportTicketOpened"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -292,15 +292,12 @@ public abstract class TradeStepView extends AnchorPane {
|
|||
|
||||
private void showSupportFields() {
|
||||
if (notificationGroup != null) {
|
||||
notificationGroup.button.setText("Request support");
|
||||
notificationGroup.button.setText(Res.get("portfolio.pending.requestSupport"));
|
||||
notificationGroup.button.setId("open-support-button");
|
||||
notificationGroup.button.setOnAction(e -> model.dataModel.onOpenSupportTicket());
|
||||
}
|
||||
new Popup().warning(trade.errorMessageProperty().getValue()
|
||||
+ "\n\nPlease report the problem to your arbitrator.\n\n" +
|
||||
"He will forward the information to the developers to investigate the problem.\n" +
|
||||
"After the problem has be analyzed you will get back all the funds if funds was locked.\n" +
|
||||
"There will be no arbitration fee charged in case of a software bug.")
|
||||
+ "\n\n" + Res.get("portfolio.pending.error.requestSupport"))
|
||||
.show();
|
||||
|
||||
}
|
||||
|
@ -373,12 +370,10 @@ public abstract class TradeStepView extends AnchorPane {
|
|||
String msg;
|
||||
if (dispute.isSupportTicket()) {
|
||||
setSupportOpenedHeadline();
|
||||
msg = "You opened already a support ticket.\n" +
|
||||
"Please communicate in the \"Support\" screen with the arbitrator.";
|
||||
msg = Res.get("portfolio.pending.supportTicketOpenedMyUser", Res.get("portfolio.pending.communicateWithArbitrator"));
|
||||
} else {
|
||||
setDisputeOpenedHeadline();
|
||||
msg = "You opened already a dispute.\n" +
|
||||
"Please communicate in the \"Support\" screen with the arbitrator.";
|
||||
msg = Res.get("portfolio.pending.disputeOpenedMyUser", Res.get("portfolio.pending.communicateWithArbitrator"));
|
||||
}
|
||||
if (notificationGroup != null)
|
||||
notificationGroup.label.setText(msg);
|
||||
|
@ -392,12 +387,10 @@ public abstract class TradeStepView extends AnchorPane {
|
|||
String msg;
|
||||
if (dispute.isSupportTicket()) {
|
||||
setSupportOpenedHeadline();
|
||||
msg = "Your trading peer opened a support ticket due technical problems.\n" +
|
||||
"Please communicate in the \"Support\" screen with the arbitrator.";
|
||||
msg = Res.get("portfolio.pending.supportTicketOpenedByPeer", Res.get("portfolio.pending.communicateWithArbitrator"));
|
||||
} else {
|
||||
setDisputeOpenedHeadline();
|
||||
msg = "Your trading peer opened a dispute.\n" +
|
||||
"Please communicate in the \"Support\" screen with the arbitrator.";
|
||||
msg = Res.get("portfolio.pending.disputeOpenedByPeer", Res.get("portfolio.pending.communicateWithArbitrator"));
|
||||
}
|
||||
if (notificationGroup != null)
|
||||
notificationGroup.label.setText(msg);
|
||||
|
|
|
@ -19,6 +19,7 @@ package io.bitsquare.gui.main.portfolio.pendingtrades.steps.buyer;
|
|||
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.PendingTradesViewModel;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeStepView;
|
||||
import io.bitsquare.locale.Res;
|
||||
|
||||
public class BuyerStep1View extends TradeStepView {
|
||||
|
||||
|
@ -37,13 +38,12 @@ public class BuyerStep1View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getInfoBlockTitle() {
|
||||
return "Wait for blockchain confirmation";
|
||||
return Res.get("portfolio.pending.step1.waitForConf");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getInfoText() {
|
||||
return "Deposit transaction has been published.\n" +
|
||||
"You need to wait for at least one blockchain confirmation.";
|
||||
return Res.get("portfolio.pending.step1.info", Res.get("shared.You"));
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -53,8 +53,7 @@ public class BuyerStep1View extends TradeStepView {
|
|||
@Override
|
||||
protected String getWarningText() {
|
||||
setWarningHeadline();
|
||||
return "The deposit transaction still did not get confirmed.\n" +
|
||||
"That might happen in rare cases when the funding fee of one trader from the external wallet was too low.";
|
||||
return Res.get("portfolio.pending.step1.warn");
|
||||
}
|
||||
|
||||
|
||||
|
@ -64,10 +63,7 @@ public class BuyerStep1View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getOpenForDisputeText() {
|
||||
return "The deposit transaction still did not get confirmed.\n" +
|
||||
"That might happen in rare cases when the funding fee of one trader from the external wallet was too low.\n" +
|
||||
"The max. period for the trade has elapsed.\n" +
|
||||
"\nPlease contact the arbitrator for opening a dispute.";
|
||||
return Res.get("portfolio.pending.step1.openForDispute");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
package io.bitsquare.gui.main.portfolio.pendingtrades.steps.buyer;
|
||||
|
||||
import ch.qos.logback.core.pattern.util.RegularEscapeUtil;
|
||||
import io.bitsquare.app.DevFlags;
|
||||
import io.bitsquare.common.util.Tuple3;
|
||||
import io.bitsquare.gui.components.BusyAnimation;
|
||||
|
@ -62,66 +63,62 @@ public class BuyerStep2View extends TradeStepView {
|
|||
if (tradeStatePropertySubscription == null) {
|
||||
tradeStatePropertySubscription = EasyBind.subscribe(trade.stateProperty(), state -> {
|
||||
if (state == Trade.State.DEPOSIT_CONFIRMED_IN_BLOCK_CHAIN) {
|
||||
PaymentAccountContractData paymentAccountContractData = model.dataModel.getSellersPaymentAccountContractData();
|
||||
String key = "startPayment" + trade.getId();
|
||||
String message = "";
|
||||
if (paymentAccountContractData instanceof CryptoCurrencyAccountContractData)
|
||||
message = "Your trade has reached at least one blockchain confirmation.\n" +
|
||||
"(You can wait for more confirmations if you want - 6 confirmations are considered as very secure.)\n\n" +
|
||||
"Please transfer from your external " +
|
||||
CurrencyUtil.getNameByCode(trade.getOffer().getCurrencyCode()) + " wallet\n" +
|
||||
model.formatter.formatVolumeWithCode(trade.getTradeVolume()) + " to the BTC seller.\n\n" +
|
||||
"Here are the trading account details of the bitcoin seller:\n" +
|
||||
"" + paymentAccountContractData.getPaymentDetailsForTradePopup() + ".\n\n" +
|
||||
"(You can copy & paste the values from the main screen after closing that popup.)";
|
||||
else if (paymentAccountContractData != null)
|
||||
if (paymentAccountContractData instanceof CashDepositAccountContractData)
|
||||
message = "Your trade has reached at least one blockchain confirmation.\n" +
|
||||
"(You can wait for more confirmations if you want - 6 confirmations are considered as very secure.)\n\n" +
|
||||
"Please go to a bank and pay " +
|
||||
model.formatter.formatVolumeWithCode(trade.getTradeVolume()) + " to the BTC seller.\n\n" +
|
||||
"Here are the trading account details of the BTC seller:\n" +
|
||||
"" + paymentAccountContractData.getPaymentDetailsForTradePopup() + ".\n" +
|
||||
"(You can copy & paste the values from the main screen after closing that popup.)\n\n" +
|
||||
"Please don't forget to add the trade ID \"" + trade.getShortId() +
|
||||
"\" as \"reason for payment\" so the receiver can assign your payment to this trade.\n\n" +
|
||||
"DO NOT use any additional notice in the \"reason for payment\" text like " +
|
||||
"Bitcoin, Btc or Bitsquare.\n\n" +
|
||||
"If your bank charges fees you have to cover those fees.\n\n" +
|
||||
"IMPORTANT REQUIREMENT:\n" +
|
||||
"After you have done the payment write on the paper receipt: NO REFUNDS.\n" +
|
||||
"Then tear it in 2 parts, make a photo and send it to the BTC seller's email address.";
|
||||
else if (paymentAccountContractData instanceof USPostalMoneyOrderAccountContractData)
|
||||
message = "Your trade has reached at least one blockchain confirmation.\n" +
|
||||
"(You can wait for more confirmations if you want - 6 confirmations are considered as very secure.)\n\n" +
|
||||
"Please send " +
|
||||
model.formatter.formatVolumeWithCode(trade.getTradeVolume()) + " by \"US Postal Money Order\" to the BTC seller.\n\n" +
|
||||
"Here are the trading account details of the BTC seller:\n" +
|
||||
"" + paymentAccountContractData.getPaymentDetailsForTradePopup() + ".\n" +
|
||||
"(You can copy & paste the values from the main screen after closing that popup.)\n\n" +
|
||||
"Please don't forget to add the trade ID \"" + trade.getShortId() +
|
||||
"\" as \"reason for payment\" so the receiver can assign your payment to this trade.\n\n" +
|
||||
"DO NOT use any additional notice in the \"reason for payment\" text like " +
|
||||
"Bitcoin, Btc or Bitsquare.";
|
||||
else
|
||||
message = "Your trade has reached at least one blockchain confirmation.\n" +
|
||||
"(You can wait for more confirmations if you want - 6 confirmations are considered as very secure.)\n\n" +
|
||||
"Please go to your online banking web page and pay " +
|
||||
model.formatter.formatVolumeWithCode(trade.getTradeVolume()) + " to the BTC seller.\n\n" +
|
||||
"Here are the trading account details of the BTC seller:\n" +
|
||||
"" + paymentAccountContractData.getPaymentDetailsForTradePopup() + ".\n" +
|
||||
"(You can copy & paste the values from the main screen after closing that popup.)\n\n" +
|
||||
"Please don't forget to add the trade ID \"" + trade.getShortId() +
|
||||
"\" as \"reason for payment\" so the receiver can assign your payment to this trade.\n\n" +
|
||||
"DO NOT use any additional notice in the \"reason for payment\" text like " +
|
||||
"Bitcoin, Btc or Bitsquare.\n\n" +
|
||||
"If your bank charges fees you have to cover those fees.";
|
||||
|
||||
if (!DevFlags.DEV_MODE && preferences.showAgain(key)) {
|
||||
preferences.dontShowAgain(key, true);
|
||||
new Popup().headLine("Attention required for trade with ID " + trade.getShortId())
|
||||
.attention(message)
|
||||
.show();
|
||||
PaymentAccountContractData paymentAccountContractData = model.dataModel.getSellersPaymentAccountContractData();
|
||||
if (paymentAccountContractData != null) {
|
||||
String paymentDetailsForTradePopup = paymentAccountContractData.getPaymentDetailsForTradePopup();
|
||||
String key = "startPayment" + trade.getId();
|
||||
String message = Res.get("portfolio.pending.step2.confReached");
|
||||
String copyPaste = Res.get("portfolio.pending.step2_buyer.copyPaste");
|
||||
String refTextWarn = Res.get("portfolio.pending.step2_buyer.refTextWarn");
|
||||
String accountDetails = Res.get("portfolio.pending.step2_buyer.accountDetails");
|
||||
String tradeId = Res.get("portfolio.pending.step2_buyer.tradeId");
|
||||
String assign = Res.get("portfolio.pending.step2_buyer.assign");
|
||||
String fees = Res.get("portfolio.pending.step2_buyer.fees");
|
||||
String id = trade.getShortId();
|
||||
String amount = model.formatter.formatVolumeWithCode(trade.getTradeVolume());
|
||||
if (paymentAccountContractData instanceof CryptoCurrencyAccountContractData)
|
||||
message += Res.get("portfolio.pending.step2_buyer.altcoin",
|
||||
CurrencyUtil.getNameByCode(trade.getOffer().getCurrencyCode()),
|
||||
amount) +
|
||||
accountDetails +
|
||||
paymentDetailsForTradePopup + ".\n\n" +
|
||||
copyPaste;
|
||||
else if (paymentAccountContractData instanceof CashDepositAccountContractData)
|
||||
message += Res.get("portfolio.pending.step2_buyer.cash",
|
||||
amount) +
|
||||
accountDetails +
|
||||
paymentDetailsForTradePopup + ".\n" +
|
||||
copyPaste + "\n\n" +
|
||||
tradeId + id +
|
||||
assign +
|
||||
refTextWarn + "\n\n" +
|
||||
fees + "\n\n" +
|
||||
Res.get("portfolio.pending.step2_buyer.cash.extra");
|
||||
else if (paymentAccountContractData instanceof USPostalMoneyOrderAccountContractData)
|
||||
message += Res.get("portfolio.pending.step2_buyer.postal", amount) +
|
||||
accountDetails +
|
||||
paymentDetailsForTradePopup + ".\n" +
|
||||
copyPaste + "\n\n" +
|
||||
tradeId + id +
|
||||
assign +
|
||||
refTextWarn;
|
||||
else
|
||||
message += Res.get("portfolio.pending.step2_buyer.bank", amount) +
|
||||
accountDetails +
|
||||
paymentDetailsForTradePopup + ".\n" +
|
||||
copyPaste + "\n\n" +
|
||||
tradeId + id +
|
||||
assign +
|
||||
refTextWarn + "\n\n" +
|
||||
fees;
|
||||
|
||||
if (!DevFlags.DEV_MODE && preferences.showAgain(key)) {
|
||||
preferences.dontShowAgain(key, true);
|
||||
new Popup().headLine(Res.get("popup.attention.forTradeWithId", id))
|
||||
.attention(message)
|
||||
.show();
|
||||
}
|
||||
}
|
||||
} else if (state == Trade.State.BUYER_CONFIRMED_FIAT_PAYMENT_INITIATED && confirmButton.isDisabled()) {
|
||||
showStatusInfo();
|
||||
|
@ -155,9 +152,9 @@ public class BuyerStep2View extends TradeStepView {
|
|||
PaymentAccountContractData paymentAccountContractData = model.dataModel.getSellersPaymentAccountContractData();
|
||||
String paymentMethodName = paymentAccountContractData != null ? paymentAccountContractData.getPaymentMethodName() : "";
|
||||
TitledGroupBg accountTitledGroupBg = addTitledGroupBg(gridPane, ++gridRow, 1,
|
||||
"Start payment using " + Res.get(paymentMethodName),
|
||||
Res.get("portfolio.pending.step2_buyer.startPaymentUsing", Res.get(paymentMethodName)),
|
||||
Layout.GROUP_DISTANCE);
|
||||
TextFieldWithCopyIcon field = addLabelTextFieldWithCopyIcon(gridPane, gridRow, "Amount to transfer:",
|
||||
TextFieldWithCopyIcon field = addLabelTextFieldWithCopyIcon(gridPane, gridRow, Res.get("portfolio.pending.step2_buyer.amountToTransfer"),
|
||||
model.getFiatVolume(),
|
||||
Layout.FIRST_ROW_AND_GROUP_DISTANCE).second;
|
||||
field.setCopyWithoutCurrencyPostFix(true);
|
||||
|
@ -206,7 +203,7 @@ public class BuyerStep2View extends TradeStepView {
|
|||
gridRow = CashDepositForm.addFormForBuyer(gridPane, gridRow, paymentAccountContractData);
|
||||
break;
|
||||
case PaymentMethod.BLOCK_CHAINS_ID:
|
||||
String labelTitle = "Sellers " + CurrencyUtil.getNameByCode(trade.getOffer().getCurrencyCode()) + " address:";
|
||||
String labelTitle = Res.get("portfolio.pending.step2_buyer.sellersAddress", CurrencyUtil.getNameByCode(trade.getOffer().getCurrencyCode()));
|
||||
gridRow = CryptoCurrencyForm.addFormForBuyer(gridPane, gridRow, paymentAccountContractData, labelTitle);
|
||||
break;
|
||||
default:
|
||||
|
@ -214,11 +211,11 @@ public class BuyerStep2View extends TradeStepView {
|
|||
}
|
||||
|
||||
if (!(paymentAccountContractData instanceof CryptoCurrencyAccountContractData))
|
||||
addLabelTextFieldWithCopyIcon(gridPane, ++gridRow, "Reason for payment:", model.dataModel.getReference());
|
||||
addLabelTextFieldWithCopyIcon(gridPane, ++gridRow, Res.getWithCol("shared.reasonForPayment"), model.dataModel.getReference());
|
||||
|
||||
GridPane.setRowSpan(accountTitledGroupBg, gridRow - 3);
|
||||
|
||||
Tuple3<Button, BusyAnimation, Label> tuple3 = addButtonBusyAnimationLabelAfterGroup(gridPane, ++gridRow, "Payment started");
|
||||
Tuple3<Button, BusyAnimation, Label> tuple3 = addButtonBusyAnimationLabelAfterGroup(gridPane, ++gridRow, Res.get("portfolio.pending.step2_buyer.paymentStarted"));
|
||||
confirmButton = tuple3.first;
|
||||
confirmButton.setOnAction(e -> onPaymentStarted());
|
||||
busyAnimation = tuple3.second;
|
||||
|
@ -235,10 +232,7 @@ public class BuyerStep2View extends TradeStepView {
|
|||
@Override
|
||||
protected String getWarningText() {
|
||||
setWarningHeadline();
|
||||
return "You still have not done your " + model.dataModel.getCurrencyCode() + " payment!\n" +
|
||||
"Please note that the trade has to be completed until " +
|
||||
model.getDateForOpenDispute() +
|
||||
" otherwise the trade will be investigated by the arbitrator.";
|
||||
return Res.get("portfolio.pending.step2_buyer.warn", model.dataModel.getCurrencyCode(), model.getDateForOpenDispute());
|
||||
}
|
||||
|
||||
|
||||
|
@ -248,9 +242,7 @@ public class BuyerStep2View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getOpenForDisputeText() {
|
||||
return "You have not completed your payment!\n" +
|
||||
"The max. period for the trade has elapsed.\n" +
|
||||
"\nPlease contact the arbitrator for opening a dispute.";
|
||||
return Res.get("portfolio.pending.step2_buyer.openForDispute");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -269,13 +261,10 @@ public class BuyerStep2View extends TradeStepView {
|
|||
String key = "confirmPaperReceiptSent";
|
||||
if (!DevFlags.DEV_MODE && preferences.showAgain(key)) {
|
||||
Popup popup = new Popup();
|
||||
popup.headLine("Did you sent the paper receipt to the BTC seller?")
|
||||
.feedback("Remember:\n" +
|
||||
"You need to write on the paper receipt: NO REFUNDS.\n" +
|
||||
"Then tear it in 2 parts, make a photo and send it to the BTC seller's email address.")
|
||||
.actionButtonText("Yes, I have sent the paper receipt")
|
||||
popup.headLine(Res.get("portfolio.pending.step2_buyer.paperReceipt.headline"))
|
||||
.feedback(Res.get("portfolio.pending.step2_buyer.paperReceipt.msg"))
|
||||
.onAction(this::showConfirmPaymentStartedPopup)
|
||||
.closeButtonText("No")
|
||||
.closeButtonText(Res.get("shared.no"))
|
||||
.onClose(popup::hide)
|
||||
.dontShowAgainId(key, preferences)
|
||||
.show();
|
||||
|
@ -286,8 +275,7 @@ public class BuyerStep2View extends TradeStepView {
|
|||
showConfirmPaymentStartedPopup();
|
||||
}
|
||||
} else {
|
||||
new Popup().information("You need to wait until you are fully connected to the network.\n" +
|
||||
"That might take up to about 2 minutes at startup.").show();
|
||||
new Popup().information(Res.get("popup.warning.notFullyConnected")).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -295,13 +283,12 @@ public class BuyerStep2View extends TradeStepView {
|
|||
String key = "confirmPaymentStarted";
|
||||
if (!DevFlags.DEV_MODE && preferences.showAgain(key)) {
|
||||
Popup popup = new Popup();
|
||||
popup.headLine("Confirm that you have started the payment")
|
||||
.confirmation("Did you initiate the " + CurrencyUtil.getNameByCode(trade.getOffer().getCurrencyCode()) +
|
||||
" payment to your trading partner?")
|
||||
popup.headLine(Res.get("portfolio.pending.step2_buyer.confirmStart.headline"))
|
||||
.confirmation(Res.get("portfolio.pending.step2_buyer.confirmStart.msg", CurrencyUtil.getNameByCode(trade.getOffer().getCurrencyCode())))
|
||||
.width(700)
|
||||
.actionButtonText("Yes, I have started the payment")
|
||||
.actionButtonText(RegularEscapeUtil.basicEscape("portfolio.pending.step2_buyer.confirmStart.yes"))
|
||||
.onAction(this::confirmPaymentStarted)
|
||||
.closeButtonText("No")
|
||||
.closeButtonText(Res.get("shared.no"))
|
||||
.onClose(popup::hide)
|
||||
.dontShowAgainId(key, preferences)
|
||||
.show();
|
||||
|
@ -322,14 +309,13 @@ public class BuyerStep2View extends TradeStepView {
|
|||
}, errorMessage -> {
|
||||
confirmButton.setDisable(false);
|
||||
hideStatusInfo();
|
||||
new Popup().warning("Sending message to your trading partner failed.\n" +
|
||||
"Please try again and if it continue to fail report a bug.").show();
|
||||
new Popup().warning(Res.get("popup.warning.sendMsgFailed")).show();
|
||||
});
|
||||
}
|
||||
|
||||
private void showStatusInfo() {
|
||||
busyAnimation.play();
|
||||
statusLabel.setText("Sending confirmation...");
|
||||
statusLabel.setText(Res.get("shared.sendingConfirmation"));
|
||||
}
|
||||
|
||||
private void hideStatusInfo() {
|
||||
|
|
|
@ -19,6 +19,7 @@ package io.bitsquare.gui.main.portfolio.pendingtrades.steps.buyer;
|
|||
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.PendingTradesViewModel;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeStepView;
|
||||
import io.bitsquare.locale.Res;
|
||||
|
||||
public class BuyerStep3View extends TradeStepView {
|
||||
|
||||
|
@ -37,13 +38,12 @@ public class BuyerStep3View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getInfoBlockTitle() {
|
||||
return "Wait for BTC seller's payment confirmation";
|
||||
return Res.get("portfolio.pending.step3_buyer.wait.headline");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getInfoText() {
|
||||
return "Waiting for the BTC seller's confirmation " +
|
||||
"for the receipt of the " + model.dataModel.getCurrencyCode() + " payment.";
|
||||
return Res.get("portfolio.pending.step3_buyer.wait.info", model.dataModel.getCurrencyCode());
|
||||
}
|
||||
|
||||
|
||||
|
@ -55,13 +55,9 @@ public class BuyerStep3View extends TradeStepView {
|
|||
protected String getWarningText() {
|
||||
setInformationHeadline();
|
||||
String substitute = model.isBlockChainMethod() ?
|
||||
"on the " + model.dataModel.getCurrencyCode() + "blockchain" :
|
||||
"at your payment provider (e.g. bank)";
|
||||
return "The BTC seller still has not confirmed your payment!\n" +
|
||||
"Please check " + substitute + " if the payment sending was successful.\n" +
|
||||
"If the BTC seller does not confirm the receipt of your payment until " +
|
||||
model.getDateForOpenDispute() +
|
||||
" the trade will be investigated by the arbitrator.";
|
||||
Res.get("portfolio.pending.step3_buyer.warn.part1a", model.dataModel.getCurrencyCode()) :
|
||||
Res.get("portfolio.pending.step3_buyer.warn.part1b");
|
||||
return Res.get("portfolio.pending.step3_buyer.warn.part2", substitute, model.getDateForOpenDispute());
|
||||
}
|
||||
|
||||
|
||||
|
@ -71,9 +67,7 @@ public class BuyerStep3View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getOpenForDisputeText() {
|
||||
return "The BTC seller has not confirmed your payment!\n" +
|
||||
"The max. period for the trade has elapsed.\n" +
|
||||
"Please contact the arbitrator for opening a dispute.";
|
||||
return Res.get("portfolio.pending.step3_buyer.openForDispute");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -19,6 +19,7 @@ package io.bitsquare.gui.main.portfolio.pendingtrades.steps.buyer;
|
|||
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.PendingTradesViewModel;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeStepView;
|
||||
import io.bitsquare.locale.Res;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.layout.GridPane;
|
||||
import org.bitcoinj.core.*;
|
||||
|
@ -94,8 +95,8 @@ public class BuyerStep4View extends TradeStepView {
|
|||
protected void addContent() {
|
||||
addTradeInfoBlock();
|
||||
if (model.getLockTime() > 0) {
|
||||
blockTextField = addLabelTextField(gridPane, gridRow, "Block(s) to wait until lock time elapsed:", "").second;
|
||||
timeTextField = addLabelTextField(gridPane, ++gridRow, "Approx. date when payout gets unlocked:").second;
|
||||
blockTextField = addLabelTextField(gridPane, gridRow, Res.get("portfolio.pending.step4_buyer.blocks"), "").second;
|
||||
timeTextField = addLabelTextField(gridPane, ++gridRow, Res.get("portfolio.pending.step4_buyer.date")).second;
|
||||
GridPane.setRowSpan(tradeInfoTitledGroupBg, 5);
|
||||
} else {
|
||||
GridPane.setRowSpan(tradeInfoTitledGroupBg, 3); //TODO should never reach
|
||||
|
@ -112,20 +113,17 @@ public class BuyerStep4View extends TradeStepView {
|
|||
@Override
|
||||
protected String getInfoBlockTitle() {
|
||||
if (model.getLockTime() > 0)
|
||||
return "Wait until payout lock time is over";
|
||||
return Res.get("portfolio.pending.step4_buyer.wait");
|
||||
else
|
||||
return "Sending payout transaction to peer";
|
||||
return Res.get("portfolio.pending.step4_buyer.send");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getInfoText() {
|
||||
if (model.getLockTime() > 0)
|
||||
return "The payout transaction is signed and finalized by both parties.\n" +
|
||||
"For reducing bank chargeback risks the payout transaction is blocked by a lock time.\n" +
|
||||
"After that lock time is over the payout transaction gets published and you receive " +
|
||||
"your bitcoin.";
|
||||
return Res.get("portfolio.pending.step4_buyer.info");
|
||||
else
|
||||
return "We are sending the payout transaction to the other peer.";
|
||||
return Res.get("portfolio.pending.step4_buyer.sending");
|
||||
}
|
||||
|
||||
|
||||
|
@ -136,10 +134,7 @@ public class BuyerStep4View extends TradeStepView {
|
|||
@Override
|
||||
protected String getWarningText() {
|
||||
setInformationHeadline();
|
||||
return "The payout transaction is still blocked by the lock time!\n" +
|
||||
"If the trade has not been completed on " +
|
||||
model.getDateForOpenDispute() +
|
||||
" the arbitrator will investigate.";
|
||||
return Res.get("portfolio.pending.step4_buyer.warn", model.getDateForOpenDispute());
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -39,6 +39,7 @@ import io.bitsquare.gui.main.portfolio.pendingtrades.PendingTradesViewModel;
|
|||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeStepView;
|
||||
import io.bitsquare.gui.util.BSFormatter;
|
||||
import io.bitsquare.gui.util.Layout;
|
||||
import io.bitsquare.locale.Res;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.control.Button;
|
||||
|
@ -115,28 +116,25 @@ public class BuyerStep5View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected void addContent() {
|
||||
addTitledGroupBg(gridPane, gridRow, 4, "Summary of completed trade ", 0);
|
||||
addTitledGroupBg(gridPane, gridRow, 4, Res.get("portfolio.pending.step5_buyer.groupTitle"), 0);
|
||||
Tuple2<Label, TextField> btcTradeAmountPair = addLabelTextField(gridPane, gridRow, getBtcTradeAmountLabel(), model.getTradeVolume(), Layout.FIRST_ROW_DISTANCE);
|
||||
btcTradeAmountLabel = btcTradeAmountPair.first;
|
||||
|
||||
Tuple2<Label, TextField> fiatTradeAmountPair = addLabelTextField(gridPane, ++gridRow, getFiatTradeAmountLabel(), model.getFiatVolume());
|
||||
fiatTradeAmountLabel = fiatTradeAmountPair.first;
|
||||
|
||||
addLabelTextField(gridPane, ++gridRow, "Total fees paid:", model.getTotalFees());
|
||||
|
||||
addLabelTextField(gridPane, ++gridRow, "Refunded security deposit:", model.getSecurityDeposit());
|
||||
|
||||
addTitledGroupBg(gridPane, ++gridRow, 2, "Withdraw your bitcoins", Layout.GROUP_DISTANCE);
|
||||
addLabelTextField(gridPane, gridRow, "Amount to withdraw:", model.getPayoutAmount(), Layout.FIRST_ROW_AND_GROUP_DISTANCE);
|
||||
withdrawAddressTextField = addLabelInputTextField(gridPane, ++gridRow, "Withdraw to address:").second;
|
||||
addLabelTextField(gridPane, ++gridRow, Res.get("portfolio.pending.step5_buyer.totalPaid"), model.getTotalFees());
|
||||
addLabelTextField(gridPane, ++gridRow, Res.get("portfolio.pending.step5_buyer.refunded"), model.getSecurityDeposit());
|
||||
addTitledGroupBg(gridPane, ++gridRow, 2, Res.get("portfolio.pending.step5_buyer.withdrawBTC"), Layout.GROUP_DISTANCE);
|
||||
addLabelTextField(gridPane, gridRow, Res.get("portfolio.pending.step5_buyer.amount"), model.getPayoutAmount(), Layout.FIRST_ROW_AND_GROUP_DISTANCE);
|
||||
withdrawAddressTextField = addLabelInputTextField(gridPane, ++gridRow, Res.get("portfolio.pending.step5_buyer.withdrawToAddress")).second;
|
||||
|
||||
HBox hBox = new HBox();
|
||||
hBox.setSpacing(10);
|
||||
useSavingsWalletButton = new Button("Move funds to Bitsquare wallet");
|
||||
useSavingsWalletButton = new Button(Res.get("portfolio.pending.step5_buyer.moveToBitsquareWallet"));
|
||||
useSavingsWalletButton.setDefaultButton(false);
|
||||
Label label = new Label("OR");
|
||||
Label label = new Label(Res.get("shared.OR"));
|
||||
label.setPadding(new Insets(5, 0, 0, 0));
|
||||
withdrawToExternalWalletButton = new Button("Withdraw to external wallet");
|
||||
withdrawToExternalWalletButton = new Button(Res.get("portfolio.pending.step5_buyer.withdrawExternal"));
|
||||
withdrawToExternalWalletButton.setDefaultButton(false);
|
||||
hBox.getChildren().addAll(useSavingsWalletButton, label, withdrawToExternalWalletButton);
|
||||
GridPane.setRowIndex(hBox, ++gridRow);
|
||||
|
@ -158,8 +156,8 @@ public class BuyerStep5View extends TradeStepView {
|
|||
String key = "tradeCompleted" + trade.getId();
|
||||
if (!DevFlags.DEV_MODE && preferences.showAgain(key)) {
|
||||
preferences.dontShowAgain(key, true);
|
||||
new Notification().headLine("Trade completed")
|
||||
.notification("You can withdraw your funds now to your external Bitcoin wallet or transfer it to the Bitsquare wallet.")
|
||||
new Notification().headLine(Res.get("notification.tradeCompleted.headline"))
|
||||
.notification(Res.get("notification.tradeCompleted.msg"))
|
||||
.autoClose()
|
||||
.show();
|
||||
}
|
||||
|
@ -182,7 +180,7 @@ public class BuyerStep5View extends TradeStepView {
|
|||
Coin fee = feeEstimationTransaction.getFee();
|
||||
Coin receiverAmount = amount.subtract(fee);
|
||||
if (balance.isZero()) {
|
||||
new Popup().warning("Your funds have already been withdrawn.\nPlease check the transaction history.").show();
|
||||
new Popup().warning(Res.get("portfolio.pending.step5_buyer.alreadyWithdrawn")).show();
|
||||
model.dataModel.tradeManager.addTradeToClosedTrades(trade);
|
||||
} else {
|
||||
if (toAddresses.isEmpty()) {
|
||||
|
@ -195,17 +193,21 @@ public class BuyerStep5View extends TradeStepView {
|
|||
String key = "reviewWithdrawalAtTradeComplete";
|
||||
if (!DevFlags.DEV_MODE && preferences.showAgain(key)) {
|
||||
int txSize = feeEstimationTransaction.bitcoinSerialize().length;
|
||||
new Popup().headLine("Confirm withdrawal request")
|
||||
.confirmation("Sending: " + formatter.formatCoinWithCode(amount) + "\n" +
|
||||
"From address: " + fromAddresses + "\n" +
|
||||
"To receiving address: " + toAddresses + ".\n" +
|
||||
"Required transaction fee is: " + formatter.formatCoinWithCode(fee) + " (" + MathUtils.roundDouble(((double) fee.value / (double) txSize), 2) + " Satoshis/byte)\n" +
|
||||
"Transaction size: " + (txSize / 1000d) + " Kb\n\n" +
|
||||
"The recipient will receive: " + formatter.formatCoinWithCode(receiverAmount) + "\n\n" +
|
||||
"Are you sure you want to withdraw that amount?")
|
||||
.actionButtonText("Yes")
|
||||
double feePerByte = MathUtils.roundDouble(((double) fee.value / (double) txSize), 2);
|
||||
double kb = txSize / 1000d;
|
||||
String recAmount = formatter.formatCoinWithCode(receiverAmount);
|
||||
new Popup().headLine(Res.get("portfolio.pending.step5_buyer.confirmWithdrawal"))
|
||||
.confirmation(Res.get("portfolio.pending.step5_buyer.sendInfo",
|
||||
formatter.formatCoinWithCode(amount),
|
||||
fromAddresses,
|
||||
toAddresses,
|
||||
formatter.formatCoinWithCode(fee),
|
||||
feePerByte,
|
||||
kb,
|
||||
recAmount))
|
||||
.actionButtonText(Res.get("shared.yes"))
|
||||
.onAction(() -> doWithdrawal(amount, fee))
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.onClose(() -> {
|
||||
useSavingsWalletButton.setDisable(false);
|
||||
withdrawToExternalWalletButton.setDisable(false);
|
||||
|
@ -218,9 +220,7 @@ public class BuyerStep5View extends TradeStepView {
|
|||
}
|
||||
|
||||
} else {
|
||||
new Popup()
|
||||
.warning("The amount to transfer is lower than the transaction fee and the min. possible tx value (dust).")
|
||||
.show();
|
||||
new Popup().warning(Res.get("portfolio.pending.step5_buyer.amountTooLow")).show();
|
||||
}
|
||||
}
|
||||
} catch (AddressFormatException e) {
|
||||
|
@ -267,10 +267,9 @@ public class BuyerStep5View extends TradeStepView {
|
|||
private void handleTradeCompleted() {
|
||||
if (!DevFlags.DEV_MODE) {
|
||||
String key = "tradeCompleteWithdrawCompletedInfo";
|
||||
new Popup().headLine("Withdrawal completed")
|
||||
.feedback("Your completed trades are stored under \"Portfolio/History\".\n" +
|
||||
"You can review all your bitcoin transactions under \"Funds/Transactions\"")
|
||||
.actionButtonText("Go to \"Transactions\"")
|
||||
new Popup().headLine(Res.get("portfolio.pending.step5_buyer.withdrawalCompleted.headline"))
|
||||
.feedback(Res.get("portfolio.pending.step5_buyer.withdrawalCompleted.msg"))
|
||||
.actionButtonTextWithGoTo("navigation.funds.transactions")
|
||||
.onAction(() -> model.dataModel.navigation.navigateTo(MainView.class, FundsView.class, TransactionsView.class))
|
||||
.dontShowAgainId(key, preferences)
|
||||
.show();
|
||||
|
@ -286,10 +285,10 @@ public class BuyerStep5View extends TradeStepView {
|
|||
}
|
||||
|
||||
protected String getBtcTradeAmountLabel() {
|
||||
return "You have bought:";
|
||||
return Res.get("portfolio.pending.step5_buyer.bought");
|
||||
}
|
||||
|
||||
protected String getFiatTradeAmountLabel() {
|
||||
return "You have paid:";
|
||||
return Res.get("portfolio.pending.step5_buyer.paid");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ package io.bitsquare.gui.main.portfolio.pendingtrades.steps.seller;
|
|||
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.PendingTradesViewModel;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeStepView;
|
||||
import io.bitsquare.locale.Res;
|
||||
|
||||
public class SellerStep1View extends TradeStepView {
|
||||
|
||||
|
@ -37,14 +38,12 @@ public class SellerStep1View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getInfoBlockTitle() {
|
||||
return "Wait for blockchain confirmation";
|
||||
return Res.get("portfolio.pending.step1.waitForConf");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getInfoText() {
|
||||
return "Deposit transaction has been published.\n" +
|
||||
"The BTC buyer needs to wait for at least one blockchain confirmation before " +
|
||||
"starting the payment.";
|
||||
return Res.get("portfolio.pending.step1.info", Res.get("shared.TheBTCBuyer"));
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -54,8 +53,7 @@ public class SellerStep1View extends TradeStepView {
|
|||
@Override
|
||||
protected String getWarningText() {
|
||||
setWarningHeadline();
|
||||
return "The deposit transaction still did not get confirmed.\n" +
|
||||
"That might happen in rare cases when the funding fee of one trader from the external wallet was too low.";
|
||||
return Res.get("portfolio.pending.step1.warn");
|
||||
}
|
||||
|
||||
|
||||
|
@ -65,10 +63,7 @@ public class SellerStep1View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getOpenForDisputeText() {
|
||||
return "The deposit transaction still did not get confirmed.\n" +
|
||||
"That might happen in rare cases when the funding fee of one trader from the external wallet was too low.\n" +
|
||||
"The max. period for the trade has elapsed.\n" +
|
||||
"\nPlease contact the arbitrator for opening a dispute.";
|
||||
return Res.get("portfolio.pending.step1.openForDispute");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ package io.bitsquare.gui.main.portfolio.pendingtrades.steps.seller;
|
|||
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.PendingTradesViewModel;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeStepView;
|
||||
import io.bitsquare.locale.Res;
|
||||
|
||||
public class SellerStep2View extends TradeStepView {
|
||||
|
||||
|
@ -37,13 +38,12 @@ public class SellerStep2View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getInfoBlockTitle() {
|
||||
return "Wait for payment";
|
||||
return Res.get("portfolio.pending.step2_seller.waitPayment.headline");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getInfoText() {
|
||||
return "The deposit transaction has at least one blockchain confirmation.\n" +
|
||||
"You need to wait until the BTC buyer starts the " + model.dataModel.getCurrencyCode() + " payment.";
|
||||
return Res.get("portfolio.pending.step2_seller.waitPayment.msg", model.dataModel.getCurrencyCode());
|
||||
}
|
||||
|
||||
|
||||
|
@ -54,11 +54,9 @@ public class SellerStep2View extends TradeStepView {
|
|||
@Override
|
||||
protected String getWarningText() {
|
||||
setInformationHeadline();
|
||||
return "The BTC buyer still has not done the " + model.dataModel.getCurrencyCode() + " payment.\n" +
|
||||
"You need to wait until he starts the payment.\n" +
|
||||
"If the trade has not been completed on " +
|
||||
model.getDateForOpenDispute() +
|
||||
" the arbitrator will investigate.";
|
||||
return Res.get("portfolio.pending.step2_seller.warn",
|
||||
model.dataModel.getCurrencyCode(),
|
||||
model.getDateForOpenDispute());
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -67,9 +65,7 @@ public class SellerStep2View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getOpenForDisputeText() {
|
||||
return "The BTC buyer has not started his payment!\n" +
|
||||
"The max. allowed period for the trade has elapsed.\n" +
|
||||
"Please contact the arbitrator for opening a dispute.";
|
||||
return Res.get("portfolio.pending.step2_seller.openForDispute");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -27,6 +27,7 @@ import io.bitsquare.gui.main.portfolio.pendingtrades.PendingTradesViewModel;
|
|||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeStepView;
|
||||
import io.bitsquare.gui.util.Layout;
|
||||
import io.bitsquare.locale.CurrencyUtil;
|
||||
import io.bitsquare.locale.Res;
|
||||
import io.bitsquare.payment.*;
|
||||
import io.bitsquare.trade.Contract;
|
||||
import io.bitsquare.trade.Trade;
|
||||
|
@ -69,49 +70,29 @@ public class SellerStep3View extends TradeStepView {
|
|||
String message;
|
||||
String tradeVolumeWithCode = model.formatter.formatVolumeWithCode(trade.getTradeVolume());
|
||||
String currencyName = CurrencyUtil.getNameByCode(trade.getOffer().getCurrencyCode());
|
||||
String part1 = Res.get("portfolio.pending.step3_seller.part", currencyName);
|
||||
String id = trade.getShortId();
|
||||
if (paymentAccountContractData instanceof CryptoCurrencyAccountContractData) {
|
||||
String address = ((CryptoCurrencyAccountContractData) paymentAccountContractData).getAddress();
|
||||
message = "Your trading partner has confirmed that he initiated the " + currencyName + " payment.\n\n" +
|
||||
"Please check on your favorite " + currencyName +
|
||||
" blockchain explorer if the transaction to your receiving address\n" +
|
||||
"" + address + "\n" +
|
||||
"has already sufficient blockchain confirmations.\n" +
|
||||
"The payment amount has to be " + tradeVolumeWithCode + "\n\n" +
|
||||
"You can copy & paste your " + currencyName + " address from the main screen after " +
|
||||
"closing that popup.";
|
||||
message = Res.get("portfolio.pending.step3_seller.altcoin", part1, currencyName, address, tradeVolumeWithCode, currencyName);
|
||||
} else {
|
||||
if (paymentAccountContractData instanceof USPostalMoneyOrderAccountContractData)
|
||||
message = "Your trading partner has confirmed that he initiated the " + currencyName + " payment.\n\n" +
|
||||
"Please check if you have received " +
|
||||
tradeVolumeWithCode + " with \"US Postal Money Order\" from the BTC buyer.\n\n" +
|
||||
"The trade ID (\"reason for payment\" text) of the transaction is: \"" + trade.getShortId() + "\"";
|
||||
message = Res.get("portfolio.pending.step3_seller.postal", part1, tradeVolumeWithCode, id);
|
||||
else
|
||||
message = "Your trading partner has confirmed that he initiated the " + currencyName + " payment.\n\n" +
|
||||
"Please go to your online banking web page and check if you have received " +
|
||||
tradeVolumeWithCode + " from the BTC buyer.\n\n" +
|
||||
"The trade ID (\"reason for payment\" text) of the transaction is: \"" + trade.getShortId() + "\"";
|
||||
message = Res.get("portfolio.pending.step3_seller.bank", currencyName, tradeVolumeWithCode, id);
|
||||
|
||||
String part = Res.get("portfolio.pending.step3_seller.openDispute");
|
||||
if (paymentAccountContractData instanceof CashDepositAccountContractData)
|
||||
message += "\n\nBecause the payment is done via Cash/ATM Deposit the BTC buyer has to write \"NO REFUND\" " +
|
||||
"on the paper receipt, tear it in 2 parts and send you a photo by email.\n\n" +
|
||||
"To avoid chargeback risk, only confirm if you received the email and if you are " +
|
||||
"sure the paper receipt is valid.\n" +
|
||||
"If you are not sure, please don't confirm but open a dispute " +
|
||||
"by entering \"cmd + o\" or \"ctrl + o\".";
|
||||
message = message + Res.get("portfolio.pending.step3_seller.cash", part);
|
||||
|
||||
Optional<String> optionalHolderName = getOptionalHolderName();
|
||||
if (optionalHolderName.isPresent()) {
|
||||
message = message + "\n\n" +
|
||||
"Please also verify that the senders name in your bank statement matches that one from the " +
|
||||
"trade contract:\n" +
|
||||
"Senders name: " + optionalHolderName.get() + "\n\n" +
|
||||
"If the name is not the same as the one displayed here, please don't confirm but open a dispute " +
|
||||
"by entering \"cmd + o\" or \"ctrl + o\".";
|
||||
message = message + Res.get("portfolio.pending.step3_seller.bankCheck" + optionalHolderName.get(), part);
|
||||
}
|
||||
}
|
||||
if (!DevFlags.DEV_MODE && preferences.showAgain(key)) {
|
||||
preferences.dontShowAgain(key, true);
|
||||
new Popup().headLine("Attention required for trade with ID " + trade.getShortId())
|
||||
new Popup().headLine(Res.get("popup.attention.forTradeWithId", id))
|
||||
.attention(message)
|
||||
.show();
|
||||
}
|
||||
|
@ -145,9 +126,9 @@ public class SellerStep3View extends TradeStepView {
|
|||
protected void addContent() {
|
||||
addTradeInfoBlock();
|
||||
|
||||
TitledGroupBg titledGroupBg = addTitledGroupBg(gridPane, ++gridRow, 3, "Confirm payment receipt", Layout.GROUP_DISTANCE);
|
||||
TitledGroupBg titledGroupBg = addTitledGroupBg(gridPane, ++gridRow, 3, Res.get("portfolio.pending.step3_seller.confirmPaymentReceipt"), Layout.GROUP_DISTANCE);
|
||||
|
||||
TextFieldWithCopyIcon field = addLabelTextFieldWithCopyIcon(gridPane, gridRow, "Amount to receive:",
|
||||
TextFieldWithCopyIcon field = addLabelTextFieldWithCopyIcon(gridPane, gridRow, Res.get("portfolio.pending.step3_seller.amountToReceive"),
|
||||
model.getFiatVolume(), Layout.FIRST_ROW_AND_GROUP_DISTANCE).second;
|
||||
field.setCopyWithoutCurrencyPostFix(true);
|
||||
|
||||
|
@ -164,14 +145,14 @@ public class SellerStep3View extends TradeStepView {
|
|||
if (myPaymentAccountContractData instanceof CryptoCurrencyAccountContractData) {
|
||||
myPaymentDetails = ((CryptoCurrencyAccountContractData) myPaymentAccountContractData).getAddress();
|
||||
peersPaymentDetails = ((CryptoCurrencyAccountContractData) peersPaymentAccountContractData).getAddress();
|
||||
myTitle = "Your " + nameByCode + " address:";
|
||||
peersTitle = "Buyers " + nameByCode + " address:";
|
||||
myTitle = Res.get("portfolio.pending.step3_seller.yourAddress");
|
||||
peersTitle = Res.get("portfolio.pending.step3_seller.buyersAddress", nameByCode);
|
||||
isBlockChain = true;
|
||||
} else {
|
||||
myPaymentDetails = myPaymentAccountContractData.getPaymentDetails();
|
||||
peersPaymentDetails = peersPaymentAccountContractData.getPaymentDetails();
|
||||
myTitle = "Your trading account:";
|
||||
peersTitle = "Buyers trading account:";
|
||||
myTitle = Res.get("portfolio.pending.step3_seller.yourAccount");
|
||||
peersTitle = Res.get("portfolio.pending.step3_seller.buyersAccount");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -184,11 +165,11 @@ public class SellerStep3View extends TradeStepView {
|
|||
peersPaymentDetailsTextField.setTooltip(new Tooltip(peersPaymentDetails));
|
||||
|
||||
if (!isBlockChain) {
|
||||
addLabelTextFieldWithCopyIcon(gridPane, ++gridRow, "Reason for payment:", model.dataModel.getReference());
|
||||
addLabelTextFieldWithCopyIcon(gridPane, ++gridRow, Res.getWithCol("shared.reasonForPayment"), model.dataModel.getReference());
|
||||
GridPane.setRowSpan(titledGroupBg, 4);
|
||||
}
|
||||
|
||||
Tuple3<Button, BusyAnimation, Label> tuple = addButtonBusyAnimationLabelAfterGroup(gridPane, ++gridRow, "Confirm payment receipt");
|
||||
Tuple3<Button, BusyAnimation, Label> tuple = addButtonBusyAnimationLabelAfterGroup(gridPane, ++gridRow, Res.get("portfolio.pending.step3_seller.confirmReceipt"));
|
||||
confirmButton = tuple.first;
|
||||
confirmButton.setOnAction(e -> onPaymentReceived());
|
||||
busyAnimation = tuple.second;
|
||||
|
@ -205,14 +186,11 @@ public class SellerStep3View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getInfoText() {
|
||||
String currencyCode = model.dataModel.getCurrencyCode();
|
||||
if (model.isBlockChainMethod()) {
|
||||
return "The BTC buyer has started the " + model.dataModel.getCurrencyCode() + " payment.\n" +
|
||||
"Check for blockchain confirmations at your altcoin wallet or block explorer and " +
|
||||
"confirm the payment when you have sufficient blockchain confirmations.";
|
||||
return Res.get("portfolio.pending.step3_seller.buyerStartedPayment", Res.get("portfolio.pending.step3_seller.buyerStartedPayment.altcoin", currencyCode));
|
||||
} else {
|
||||
return "The BTC buyer has started the " + model.dataModel.getCurrencyCode() + " payment.\n" +
|
||||
"Check at your trading account (e.g. bank account) and confirm when you have " +
|
||||
"received the payment.";
|
||||
return Res.get("portfolio.pending.step3_seller.buyerStartedPayment", Res.get("portfolio.pending.step3_seller.buyerStartedPayment.fiat", currencyCode));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -225,13 +203,11 @@ public class SellerStep3View extends TradeStepView {
|
|||
protected String getWarningText() {
|
||||
setWarningHeadline();
|
||||
String substitute = model.isBlockChainMethod() ?
|
||||
"on the " + model.dataModel.getCurrencyCode() + "blockchain" :
|
||||
"at your payment provider (e.g. bank)";
|
||||
return "You still have not confirmed the receipt of the payment!\n" +
|
||||
"Please check " + substitute + " if you have received the payment.\n" +
|
||||
"If you do not confirm receipt until " +
|
||||
model.getDateForOpenDispute() +
|
||||
" the trade will be investigated by the arbitrator.";
|
||||
Res.get("portfolio.pending.step3_seller.warn.part1a", model.dataModel.getCurrencyCode()) :
|
||||
Res.get("portfolio.pending.step3_seller.warn.part1b");
|
||||
return Res.get("portfolio.pending.step3_seller.warn.part2", substitute, model.getDateForOpenDispute());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -241,9 +217,7 @@ public class SellerStep3View extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getOpenForDisputeText() {
|
||||
return "You have not confirmed the receipt of the payment!\n" +
|
||||
"The max. period for the trade has elapsed.\n" +
|
||||
"Please contact the arbitrator for opening a dispute.";
|
||||
return Res.get("portfolio.pending.step3_seller.openForDispute");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -263,35 +237,29 @@ public class SellerStep3View extends TradeStepView {
|
|||
String key = "confirmPaymentReceived";
|
||||
if (!DevFlags.DEV_MODE && preferences.showAgain(key)) {
|
||||
PaymentAccountContractData paymentAccountContractData = model.dataModel.getSellersPaymentAccountContractData();
|
||||
String message = "Have you received the " + CurrencyUtil.getNameByCode(model.dataModel.getCurrencyCode()) +
|
||||
" payment from your trading partner?\n\n";
|
||||
String message = Res.get("portfolio.pending.step3_seller.onPaymentReceived.part1", CurrencyUtil.getNameByCode(model.dataModel.getCurrencyCode()));
|
||||
if (!(paymentAccountContractData instanceof CryptoCurrencyAccountContractData)) {
|
||||
message += "The trade ID (\"reason for payment\" text) of the transaction is: \"" + trade.getShortId() + "\"\n\n";
|
||||
message += Res.get("portfolio.pending.step3_seller.onPaymentReceived.fiat", trade.getShortId());
|
||||
|
||||
Optional<String> optionalHolderName = getOptionalHolderName();
|
||||
if (optionalHolderName.isPresent()) {
|
||||
message += "Please also verify that the senders name in your bank statement matches that one from the trade contract:\n" +
|
||||
"Senders name: " + optionalHolderName.get() + "\n\n" +
|
||||
"If the name is not the same as the one displayed here, please don't confirm but open a " +
|
||||
"dispute by entering \"cmd + o\" or \"ctrl + o\".\n\n";
|
||||
message += Res.get("portfolio.pending.step3_seller.onPaymentReceived.name", optionalHolderName.get());
|
||||
}
|
||||
}
|
||||
message += "Please note, that as soon you have confirmed the receipt, the locked trade amount will be released " +
|
||||
"to the BTC buyer and the security deposit will be refunded.";
|
||||
message += Res.get("portfolio.pending.step3_seller.onPaymentReceived.note");
|
||||
new Popup()
|
||||
.headLine("Confirm that you have received the payment")
|
||||
.headLine(Res.get("portfolio.pending.step3_seller.onPaymentReceived.confirm.headline"))
|
||||
.confirmation(message)
|
||||
.width(700)
|
||||
.actionButtonText("Yes, I have received the payment")
|
||||
.actionButtonText(Res.get("portfolio.pending.step3_seller.onPaymentReceived.confirm.yes"))
|
||||
.onAction(this::confirmPaymentReceived)
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.show();
|
||||
} else {
|
||||
confirmPaymentReceived();
|
||||
}
|
||||
} else {
|
||||
new Popup().information("You need to wait until you are fully connected to the network.\n" +
|
||||
"That might take up to about 2 minutes at startup.").show();
|
||||
new Popup().information(Res.get("popup.warning.notFullyConnected")).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -308,14 +276,13 @@ public class SellerStep3View extends TradeStepView {
|
|||
}, errorMessage -> {
|
||||
confirmButton.setDisable(false);
|
||||
hideStatusInfo();
|
||||
new Popup().warning("Sending message to your trading partner failed.\n" +
|
||||
"Please try again and if it continue to fail report a bug.").show();
|
||||
new Popup().warning(Res.get("popup.warning.sendMsgFailed")).show();
|
||||
});
|
||||
}
|
||||
|
||||
private void showStatusInfo() {
|
||||
busyAnimation.play();
|
||||
statusLabel.setText("Sending confirmation...");
|
||||
statusLabel.setText(Res.get("shared.sendingConfirmation"));
|
||||
}
|
||||
|
||||
private void hideStatusInfo() {
|
||||
|
|
|
@ -19,6 +19,7 @@ package io.bitsquare.gui.main.portfolio.pendingtrades.steps.seller;
|
|||
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.PendingTradesViewModel;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.TradeStepView;
|
||||
import io.bitsquare.locale.Res;
|
||||
|
||||
public class SellerStep3bView extends TradeStepView {
|
||||
|
||||
|
@ -38,14 +39,12 @@ public class SellerStep3bView extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getInfoBlockTitle() {
|
||||
return "Wait until peer finalizes the payout transaction";
|
||||
return Res.get("portfolio.pending.step3b_seller.waitFinalize");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getInfoText() {
|
||||
return "We requested from the trading peer to sign and finalize the payout transaction.\n" +
|
||||
"It might be that the other peer is offline, so we need to wait until he finalizes the " +
|
||||
"transaction when he goes online again.";
|
||||
return Res.get("portfolio.pending.step3b_seller.info");
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -55,11 +54,7 @@ public class SellerStep3bView extends TradeStepView {
|
|||
@Override
|
||||
protected String getWarningText() {
|
||||
setInformationHeadline();
|
||||
return "The trading peer has not finalized the payout transaction!\n" +
|
||||
"He might be offline. You need to wait until he finalizes the payout transaction.\n" +
|
||||
"If the trade has not been completed on " +
|
||||
model.getDateForOpenDispute() +
|
||||
" the arbitrator will investigate.";
|
||||
return Res.get("portfolio.pending.step3b_seller.warn", model.getDateForOpenDispute());
|
||||
}
|
||||
|
||||
|
||||
|
@ -69,9 +64,7 @@ public class SellerStep3bView extends TradeStepView {
|
|||
|
||||
@Override
|
||||
protected String getOpenForDisputeText() {
|
||||
return "The trading peer has not finalized the payout transaction!\n" +
|
||||
"The max. period for the trade has elapsed.\n" +
|
||||
"Please contact the arbitrator for opening a dispute.";
|
||||
return Res.get("portfolio.pending.step3b_seller.openForDispute");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -19,6 +19,7 @@ package io.bitsquare.gui.main.portfolio.pendingtrades.steps.seller;
|
|||
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.PendingTradesViewModel;
|
||||
import io.bitsquare.gui.main.portfolio.pendingtrades.steps.buyer.BuyerStep5View;
|
||||
import io.bitsquare.locale.Res;
|
||||
|
||||
public class SellerStep5View extends BuyerStep5View {
|
||||
|
||||
|
@ -32,11 +33,11 @@ public class SellerStep5View extends BuyerStep5View {
|
|||
|
||||
@Override
|
||||
protected String getBtcTradeAmountLabel() {
|
||||
return "You have sold:";
|
||||
return Res.get("portfolio.pending.step5_seller.sold");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getFiatTradeAmountLabel() {
|
||||
return "You have received:";
|
||||
return Res.get("portfolio.pending.step5_seller.received");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -150,7 +150,7 @@ public class NetworkSettingsView extends ActivatableViewAndModel<GridPane, Activ
|
|||
preferences.setUseTorForBitcoinJ(selected);
|
||||
UserThread.runAfter(BitsquareApp.shutDownHandler::run, 500, TimeUnit.MILLISECONDS);
|
||||
})
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.onClose(() -> useTorForBtcJCheckBox.setSelected(!selected))
|
||||
.show();
|
||||
}
|
||||
|
@ -185,7 +185,7 @@ public class NetworkSettingsView extends ActivatableViewAndModel<GridPane, Activ
|
|||
}
|
||||
UserThread.runAfter(BitsquareApp.shutDownHandler::run, 500, TimeUnit.MILLISECONDS);
|
||||
})
|
||||
.closeButtonText("Cancel")
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.onClose(() -> btcNodes.setText(btcNodesPreFocusText))
|
||||
.show();
|
||||
}
|
||||
|
|
|
@ -5,6 +5,95 @@
|
|||
# In some cases we use enum values or constants to map to display strings
|
||||
|
||||
|
||||
####################################################################
|
||||
# Shared
|
||||
####################################################################
|
||||
|
||||
shared.readMore=Read more
|
||||
shared.openHelp=Open Help
|
||||
shared.warning=Warning
|
||||
shared.error=Error
|
||||
shared.close=Close
|
||||
shared.cancel=Cancel
|
||||
shared.ok=OK
|
||||
shared.yes=Yes
|
||||
shared.no=No
|
||||
shared.iUnderstand=I understand
|
||||
shared.na=N/A
|
||||
shared.shutDown=Shut down
|
||||
shared.reportBug=Report bug at Github issues
|
||||
shared.openSettings=Open settings for editing
|
||||
shared.buyBitcoin=Buy bitcoin
|
||||
shared.sellBitcoin=Sell bitcoin
|
||||
shared.buyCurrency=Buy {0}
|
||||
shared.sellCurrency=Sell {0}
|
||||
shared.buyingBTCWith=buying BTC with {0}
|
||||
shared.sellingBTCFor=selling BTC for {0}
|
||||
shared.buyingCurrency=buying {0} (selling BTC)
|
||||
shared.sellingCurrency=selling {0} (buying BTC)
|
||||
shared.buy=buy
|
||||
shared.sell=sell
|
||||
shared.spend=spend
|
||||
shared.bitcoin=bitcoin
|
||||
shared.P2P=P2P
|
||||
shared.offers=offers
|
||||
shared.openOffers=open offers
|
||||
shared.trades=trades
|
||||
shared.openTrades=open trades
|
||||
shared.dateTime=Date/Time
|
||||
shared.price=Price
|
||||
shared.priceWithCur=Price in {0}
|
||||
shared.priceInCurForCur=Price in {0} for 1 {1}
|
||||
shared.amount=Amount
|
||||
shared.amountWithCur=Amount in {0}
|
||||
shared.volumeWithCur=Volume in {0}
|
||||
shared.sumWithCur=Sum in {0}
|
||||
shared.currency=Currency
|
||||
shared.market=Market
|
||||
shared.paymentMethod=Payment method
|
||||
shared.tradeCurrency=Trade currency
|
||||
shared.tradeType=Trade type
|
||||
shared.details=Details
|
||||
shared.address=Address
|
||||
shared.balanceWithCur=Balance in {0}
|
||||
shared.txId=Transaction ID
|
||||
shared.confirmations=Confirmations
|
||||
shared.revert=Revert Tx
|
||||
shared.select=Select
|
||||
shared.usage=Usage
|
||||
shared.state=Status
|
||||
shared.tradeId=Trade ID
|
||||
shared.offerId=Offer ID
|
||||
shared.direction=Direction
|
||||
shared.bankName=Bank name
|
||||
shared.acceptedBanks=Accepted banks
|
||||
shared.amountMinMax=Amount (min - max)
|
||||
shared.remove=Remove
|
||||
shared.goTo=Go to {0}
|
||||
shared.BTCMinMax=BTC (min - max)
|
||||
shared.removeOffer=Remove offer
|
||||
shared.dontRemoveOffer=Don't remove offer
|
||||
shared.openLargeQRWindow=Open large QR-Code window
|
||||
shared.tradingAccount=Trading account
|
||||
shared.faq=Visit FAQ web page
|
||||
shared.yesCancel=Yes, cancel
|
||||
shared.nextStep=Next step
|
||||
shared.selectTradingAccount=Select trading account
|
||||
shared.fundFromSavingsWalletButton=Transfer funds from Bitsquare wallet
|
||||
shared.fundFromExternalWalletButton=Open your external wallet for funding
|
||||
shared.openDefaultWalletFailed=Opening a default bitcoin wallet application has failed. Perhaps you don't have one installed?
|
||||
shared.distanceInPercent=Distance in % from market price
|
||||
shared.enterPercentageValue=Enter % value
|
||||
shared.OR=OR
|
||||
shared.notEnoughFunds=You don't have enough funds in your Bitsquare wallet.\nYou need {0} but you have only {1} in your Bitsquare wallet.\n\nPlease fund that trade from an external Bitcoin wallet or fund your Bitsquare wallet at \"Funds/Deposit funds\".
|
||||
shared.waitingForFunds=Waiting for funds...
|
||||
shared.depositTransactionId=Deposit transaction ID
|
||||
shared.TheBTCBuyer=The BTC buyer
|
||||
shared.You=You
|
||||
shared.reasonForPayment=Reason for payment
|
||||
shared.sendingConfirmation=Sending confirmation...
|
||||
|
||||
|
||||
####################################################################
|
||||
# UI views
|
||||
####################################################################
|
||||
|
@ -244,9 +333,141 @@ takeOffer.error.disputed=\n\nThe trade is handled already by an arbitrator.\nPle
|
|||
portfolio.tab.openOffers=My open offers
|
||||
portfolio.tab.pendingTrades=Open trades
|
||||
portfolio.tab.history=History
|
||||
portfolio.tab.failed=Failed
|
||||
|
||||
portfolio.pending.step1.waitForConf=Wait for blockchain confirmation
|
||||
portfolio.pending.step2_buyer.startPayment=Start payment
|
||||
portfolio.pending.step2_seller.waitPaymentStarted=Wait until payment has started
|
||||
portfolio.pending.step3_buyer.waitPaymentArrived=Wait until payment arrived
|
||||
portfolio.pending.step3_seller.confirmPaymentReceived=Confirm payment received
|
||||
portfolio.pending.step4.waitPaymentUnlocked=Wait for payout unlock
|
||||
portfolio.pending.step5.completed=Completed
|
||||
|
||||
portfolio.pending.step1.info=Deposit transaction has been published.\n{0} needs to wait for at least one blockchain confirmation before starting the payment.
|
||||
portfolio.pending.step1.warn=The deposit transaction still did not get confirmed.\nThat might happen in rare cases when the funding fee of one trader from the external wallet was too low.
|
||||
portfolio.pending.step1.openForDispute=The deposit transaction still did not get confirmed.\nThat might happen in rare cases when the funding fee of one trader from the external wallet was too low.\nThe max. period for the trade has elapsed.\n\nPlease contact the arbitrator for opening a dispute.
|
||||
|
||||
portfolio.pending.step2.confReached=Your trade has reached at least one blockchain confirmation.\n(You can wait for more confirmations if you want - 6 confirmations are considered as very secure.)\n\n
|
||||
|
||||
portfolio.pending.step2_buyer.copyPaste=(You can copy & paste the values from the main screen after closing that popup.)
|
||||
portfolio.pending.step2_buyer.refTextWarn=DO NOT use any additional notice in the \"reason for payment\" text like Bitcoin, Btc or Bitsquare.
|
||||
portfolio.pending.step2_buyer.accountDetails=Here are the trading account details of the BTC seller:\n
|
||||
portfolio.pending.step2_buyer.tradeId=Please don't forget to add the trade ID \"
|
||||
portfolio.pending.step2_buyer.assign= as \"reason for payment\" so the receiver can assign your payment to this trade.\n\n
|
||||
portfolio.pending.step2_buyer.fees=If your bank charges fees you have to cover those fees.
|
||||
portfolio.pending.step2_buyer.altcoin=Please transfer from your external {0} wallet\n{1} to the BTC seller.\n\n
|
||||
portfolio.pending.step2_buyer.cash=Please go to a bank and pay {0} to the BTC seller.\n\n
|
||||
portfolio.pending.step2_buyer.cash.extra=IMPORTANT REQUIREMENT:\nAfter you have done the payment write on the paper receipt: NO REFUNDS.\nThen tear it in 2 parts, make a photo and send it to the BTC seller's email address.
|
||||
portfolio.pending.step2_buyer.postal=Please send {0} by \"US Postal Money Order\" to the BTC seller." + "\n\n"
|
||||
portfolio.pending.step2_buyer.bank=Please go to your online banking web page and pay {0} to the BTC seller.\n\n
|
||||
portfolio.pending.step2_buyer.startPaymentUsing=Start payment using {0}
|
||||
portfolio.pending.step2_buyer.amountToTransfer=Amount to transfer:
|
||||
portfolio.pending.step2_buyer.sellersAddress=Sellers {0} address:
|
||||
portfolio.pending.step2_buyer.paymentStarted=Payment started
|
||||
portfolio.pending.step2_buyer.warn=You still have not done your {0} payment!\nPlease note that the trade has to be completed until {1} otherwise the trade will be investigated by the arbitrator.
|
||||
portfolio.pending.step2_buyer.openForDispute=You have not completed your payment!\nThe max. period for the trade has elapsed.\n\nPlease contact the arbitrator for opening a dispute.
|
||||
portfolio.pending.step2_buyer.paperReceipt.headline=Did you sent the paper receipt to the BTC seller?
|
||||
portfolio.pending.step2_buyer.paperReceipt.msg=Remember:\n\
|
||||
You need to write on the paper receipt: NO REFUNDS.\n\
|
||||
Then tear it in 2 parts, make a photo and send it to the BTC seller's email address.
|
||||
portfolio.pending.step2_buyer.confirmStart.headline=Confirm that you have started the payment
|
||||
portfolio.pending.step2_buyer.confirmStart.msg=Did you initiate the {0} payment to your trading partner?
|
||||
portfolio.pending.step2_buyer.confirmStart.yes=Yes, I have started the payment
|
||||
|
||||
portfolio.pending.step2_seller.waitPayment.headline=Wait for payment
|
||||
portfolio.pending.step2_seller.waitPayment.msg=The deposit transaction has at least one blockchain confirmation.\nYou need to wait until the BTC buyer starts the {0} payment.
|
||||
portfolio.pending.step2_seller.warn=The BTC buyer still has not done the {0} payment.\nYou need to wait until he starts the payment.\nIf the trade has not been completed on {1} the arbitrator will investigate.
|
||||
portfolio.pending.step2_seller.openForDispute=The BTC buyer has not started his payment!\nThe max. allowed period for the trade has elapsed.\nPlease contact the arbitrator for opening a dispute.
|
||||
|
||||
portfolio.pending.step3_buyer.wait.headline=Wait for BTC seller's payment confirmation
|
||||
portfolio.pending.step3_buyer.wait.info=Waiting for the BTC seller's confirmation for the receipt of the {0} payment.
|
||||
portfolio.pending.step3_buyer.warn.part1a=on the {0} blockchain
|
||||
portfolio.pending.step3_buyer.warn.part1b=at your payment provider (e.g. bank)
|
||||
portfolio.pending.step3_buyer.warn.part2=The BTC seller still has not confirmed your payment!\nPlease check {0} if the payment sending was successful.\nIf the BTC seller does not confirm the receipt of your payment until {1} the trade will be investigated by the arbitrator.
|
||||
portfolio.pending.step3_buyer.openForDispute=The BTC seller has not confirmed your payment!\nThe max. period for the trade has elapsed.\nPlease contact the arbitrator for opening a dispute.
|
||||
portfolio.pending.step3_seller.part=Your trading partner has confirmed that he initiated the {0} payment.\n\n
|
||||
portfolio.pending.step3_seller.altcoin={0}Please check on your favorite {1} blockchain explorer if the transaction to your receiving address\n{2}\nhas already sufficient blockchain confirmations.\nThe payment amount has to be {3}\n\nYou can copy & paste your {4} address from the main screen after "closing that popup.
|
||||
portfolio.pending.step3_seller.postal={0}Please check if you have received {1} with \"US Postal Money Order\" from the BTC buyer.\n\nThe trade ID (\"reason for payment\" text) of the transaction is: \"{2}\"
|
||||
portfolio.pending.step3_seller.bank=Your trading partner has confirmed that he initiated the {0} payment.\n\nPlease go to your online banking web page and check if you have received {1} from the BTC buyer.\n\nThe trade ID (\"reason for payment\" text) of the transaction is: \"{2}\"
|
||||
portfolio.pending.step3_seller.cash=\n\nBecause the payment is done via Cash Deposit the BTC buyer has to write \"NO REFUND\" on the paper receipt, tear it in 2 parts and send you a photo by email.\n\nTo avoid chargeback risk, only confirm if you received the email and if you are sure the paper receipt is valid.\nIf you are not sure, {0}
|
||||
portfolio.pending.step3_seller.bankCheck=\n\nPlease also verify that the senders name in your bank statement matches that one from the trade contract:\nSenders name: {0}\n\nIf the name is not the same as the one displayed here, {1}
|
||||
portfolio.pending.step3_seller.openDispute=please don't confirm but open a dispute by entering \"cmd + o\" or \"ctrl + o\".
|
||||
portfolio.pending.step3_seller.confirmPaymentReceipt=Confirm payment receipt
|
||||
portfolio.pending.step3_seller.amountToReceive=Amount to receive:
|
||||
portfolio.pending.step3_seller.yourAddress=Your {0} address:
|
||||
portfolio.pending.step3_seller.buyersAddress=Buyers {0} address:
|
||||
portfolio.pending.step3_seller.yourAccount=Your trading account:
|
||||
portfolio.pending.step3_seller.buyersAccount=Buyers trading account:
|
||||
portfolio.pending.step3_seller.confirmReceipt=Confirm payment receipt
|
||||
portfolio.pending.step3_seller.buyerStartedPayment=The BTC buyer has started the {0} payment.\n{0}
|
||||
portfolio.pending.step3_seller.buyerStartedPayment.altcoin=Check for blockchain confirmations at your altcoin wallet or block explorer and confirm the payment when you have sufficient blockchain confirmations.
|
||||
portfolio.pending.step3_seller.buyerStartedPayment.fiat=Check at your trading account (e.g. bank account) and confirm when you have received the payment.
|
||||
portfolio.pending.step3_seller.warn.part1a=on the {0} blockchain
|
||||
portfolio.pending.step3_seller.warn.part1b=at your payment provider (e.g. bank)
|
||||
portfolio.pending.step3_seller.warn.part2=You still have not confirmed the receipt of the payment!\nPlease check {0} if you have received the payment.\nIf you do not confirm receipt until {1} the trade will be investigated by the arbitrator.
|
||||
portfolio.pending.step3_seller.openForDispute=You have not confirmed the receipt of the payment!\nThe max. period for the trade has elapsed.\nPlease contact the arbitrator for opening a dispute.
|
||||
portfolio.pending.step3_seller.onPaymentReceived.part1=Have you received the {0} payment from your trading partner?\n\n
|
||||
portfolio.pending.step3_seller.onPaymentReceived.fiat=The trade ID (\"reason for payment\" text) of the transaction is: \"{0}\"\n\n"
|
||||
portfolio.pending.step3_seller.onPaymentReceived.name=Please also verify that the senders name in your bank statement matches that one from the trade contract:\nSenders name: {0}\n\nIf the name is not the same as the one displayed here, please don't confirm but open a dispute by entering \"cmd + o\" or \"ctrl + o\".\n\n
|
||||
portfolio.pending.step3_seller.onPaymentReceived.note=Please note, that as soon you have confirmed the receipt, the locked trade amount will be released to the BTC buyer and the security deposit will be refunded.
|
||||
portfolio.pending.step3_seller.onPaymentReceived.confirm.headline=Confirm that you have received the payment
|
||||
portfolio.pending.step3_seller.onPaymentReceived.confirm.yes=Yes, I have received the payment
|
||||
|
||||
portfolio.pending.step3b_seller.waitFinalize=Wait until peer finalizes the payout transaction
|
||||
portfolio.pending.step3b_seller.info=We requested from the trading peer to sign and finalize the payout transaction.\nIt might be that the other peer is offline, so we need to wait until he finalizes the transaction when he goes online again.
|
||||
portfolio.pending.step3b_seller.warn=The trading peer has not finalized the payout transaction!\nHe might be offline. You need to wait until he finalizes the payout transaction.\nIf the trade has not been completed on {0} the arbitrator will investigate.
|
||||
portfolio.pending.step3b_seller.openForDispute=The trading peer has not finalized the payout transaction!\nThe max. period for the trade has elapsed.\nPlease contact the arbitrator for opening a dispute.
|
||||
|
||||
portfolio.pending.step4_buyer.blocks=Block(s) to wait until lock time elapsed:
|
||||
portfolio.pending.step4_buyer.date=Approx. date when payout gets unlocked:
|
||||
portfolio.pending.step4_buyer.wait=Wait until payout lock time is over
|
||||
portfolio.pending.step4_buyer.send=Sending payout transaction to peer
|
||||
portfolio.pending.step4_buyer.info=The payout transaction is signed and finalized by both parties.\nFor reducing bank chargeback risks the payout transaction is blocked by a lock time.\nAfter that lock time is over the payout transaction gets published and you receive your bitcoin.
|
||||
portfolio.pending.step4_buyer.sending=We are sending the payout transaction to the other peer.
|
||||
portfolio.pending.step4_buyer.warn=The payout transaction is still blocked by the lock time!\nIf the trade has not been completed on {0} the arbitrator will investigate.
|
||||
|
||||
portfolio.pending.step5_buyer.groupTitle=Summary of completed trade
|
||||
portfolio.pending.step5_buyer.totalPaid=Total fees paid:
|
||||
portfolio.pending.step5_buyer.refunded=Refunded security deposit:
|
||||
portfolio.pending.step5_buyer.withdrawBTC=Withdraw your bitcoins
|
||||
portfolio.pending.step5_buyer.amount=Amount to withdraw:
|
||||
portfolio.pending.step5_buyer.withdrawToAddress=Withdraw to address:
|
||||
portfolio.pending.step5_buyer.moveToBitsquareWallet=Move funds to Bitsquare wallet
|
||||
portfolio.pending.step5_buyer.withdrawExternal=Withdraw to external wallet
|
||||
portfolio.pending.step5_buyer.alreadyWithdrawn=Your funds have already been withdrawn.\nPlease check the transaction history.
|
||||
portfolio.pending.step5_buyer.confirmWithdrawal=Confirm withdrawal request
|
||||
portfolio.pending.step5_buyer.sendInfo="Sending: {0}\nFrom address: {1}\nTo receiving address: {2}.\nRequired transaction fee is: {3} ({4} Satoshis/byte)\nTransaction size: {5} Kb\n\nThe recipient will receive: {6}\n\nAre you sure you want to withdraw that amount?"
|
||||
portfolio.pending.step5_buyer.amountTooLow=The amount to transfer is lower than the transaction fee and the min. possible tx value (dust).
|
||||
portfolio.pending.step5_buyer.withdrawalCompleted.headline=Withdrawal completed
|
||||
portfolio.pending.step5_buyer.withdrawalCompleted.msg="Your completed trades are stored under \"Portfolio/History\".\nYou can review all your bitcoin transactions under \"Funds/Transactions\""
|
||||
portfolio.pending.step5_buyer.bought=You have bought:
|
||||
portfolio.pending.step5_buyer.paid=You have paid:
|
||||
|
||||
portfolio.pending.step5_seller.sold=You have sold:
|
||||
portfolio.pending.step5_seller.received=You have received:
|
||||
|
||||
portfolio.pending.role=My role
|
||||
portfolio.pending.tradeInformation=Trade information
|
||||
portfolio.pending.remainingTime=Remaining time
|
||||
portfolio.pending.tradeProcess=Trade process
|
||||
portfolio.pending.openAgainDispute.msg=If you are not sure that the message to the arbitrator arrived (e.g. if you did not got a response after 1 day) feel free to open a dispute again.
|
||||
portfolio.pending.openAgainDispute.button=Open dispute again
|
||||
portfolio.pending.openSupportTicket.headline=Open support ticket
|
||||
portfolio.pending.openSupportTicket.msg=Please use that only in emergency case if you don't get displayed a \"Open support\" or \"Open dispute\" button.\n\nWhen you open a support ticket the trade will be interrupted and handled by the arbitrator
|
||||
portfolio.pending.notification=Notification
|
||||
portfolio.pending.openDispute=Open a dispute
|
||||
portfolio.pending.disputeOpened=Dispute opened
|
||||
portfolio.pending.openSupport ticket=Open support ticket
|
||||
portfolio.pending.supportTicketOpened=Support ticket opened
|
||||
portfolio.pending.requestSupport=Request support
|
||||
portfolio.pending.error.requestSupport=Please report the problem to your arbitrator.\n\nHe will forward the information to the developers to investigate the problem.\nAfter the problem has be analyzed you will get back all the funds if funds was locked.
|
||||
portfolio.pending.communicateWithArbitrator=Please communicate in the \"Support\" screen with the arbitrator.
|
||||
portfolio.pending.supportTicketOpenedMyUser=You opened already a support ticket.\n{0}
|
||||
portfolio.pending.disputeOpenedMyUser=You opened already a dispute.\n{0}
|
||||
portfolio.pending.disputeOpenedByPeer=Your trading peer opened a dispute\n{0}
|
||||
portfolio.pending.supportTicketOpenedByPeer=Your trading peer opened a support ticket.\n{0}
|
||||
portfolio.pending.noReceiverAddressDefined=No receiver address defined
|
||||
|
||||
|
||||
####################################################################
|
||||
# Funds
|
||||
|
@ -310,90 +531,72 @@ daoView.tab.compensation=Compensation
|
|||
daoView.tab.voting=Voting
|
||||
|
||||
|
||||
|
||||
####################################################################
|
||||
# Shared
|
||||
# Notifications
|
||||
####################################################################
|
||||
|
||||
shared.readMore=Read more
|
||||
shared.openHelp=Open Help
|
||||
shared.warning=Warning
|
||||
shared.error=Error
|
||||
shared.close=Close
|
||||
shared.cancel=Cancel
|
||||
shared.ok=OK
|
||||
shared.yes=Yes
|
||||
shared.no=No
|
||||
shared.iUnderstand=I understand
|
||||
shared.na=N/A
|
||||
shared.shutDown=Shut down
|
||||
shared.reportBug=Report bug at Github issues
|
||||
notification.walletUpdate.headline=Trading wallet update
|
||||
notification.walletUpdate.msg=Your trading wallet is sufficiently funded.\nAmount: {0}
|
||||
notification.takeOffer.walletUpdate.msg=Your trading wallet was already sufficiently funded from an earlier take offer attempt.\nAmount: {0}
|
||||
notification.tradeCompleted.headline=Trade completed
|
||||
notification.tradeCompleted.msg=You can withdraw your funds now to your external Bitcoin wallet or transfer it to the Bitsquare wallet.
|
||||
|
||||
shared.openSettings=Open settings for editing
|
||||
shared.buyBitcoin=Buy bitcoin
|
||||
shared.sellBitcoin=Sell bitcoin
|
||||
shared.buyCurrency=Buy {0}
|
||||
shared.sellCurrency=Sell {0}
|
||||
shared.buyingBTCWith=buying BTC with {0}
|
||||
shared.sellingBTCFor=selling BTC for {0}
|
||||
shared.buyingCurrency=buying {0} (selling BTC)
|
||||
shared.sellingCurrency=selling {0} (buying BTC)
|
||||
|
||||
shared.buy=buy
|
||||
shared.sell=sell
|
||||
shared.spend=spend
|
||||
|
||||
shared.bitcoin=bitcoin
|
||||
shared.P2P=P2P
|
||||
shared.offers=offers
|
||||
shared.trades=trades
|
||||
####################################################################
|
||||
# Popups
|
||||
####################################################################
|
||||
|
||||
shared.dateTime=Date/Time
|
||||
shared.price=Price
|
||||
shared.priceWithCur=Price in {0}
|
||||
shared.priceInCurForCur=Price in {0} for 1 {1}
|
||||
shared.amount=Amount
|
||||
shared.amountWithCur=Amount in {0}
|
||||
shared.volumeWithCur=Volume in {0}
|
||||
shared.sumWithCur=Sum in {0}
|
||||
shared.currency=Currency
|
||||
shared.market=Market
|
||||
shared.paymentMethod=Payment method
|
||||
shared.tradeCurrency=Trade currency
|
||||
shared.tradeType=Trade type
|
||||
shared.details=Details
|
||||
shared.address=Address
|
||||
shared.balanceWithCur=Balance in {0}
|
||||
shared.txId=Transaction ID
|
||||
shared.confirmations=Confirmations
|
||||
shared.revert=Revert Tx
|
||||
shared.select=Select
|
||||
shared.usage=Usage
|
||||
shared.state=Status
|
||||
shared.tradeId=Trade ID
|
||||
shared.offerId=Offer ID
|
||||
shared.direction=Direction
|
||||
shared.bankName=Bank name
|
||||
shared.acceptedBanks=Accepted banks
|
||||
shared.amountMinMax=Amount (min - max)
|
||||
shared.remove=Remove
|
||||
shared.goTo=Go to {0}
|
||||
shared.BTCMinMax=BTC (min - max)
|
||||
shared.removeOffer=Remove offer
|
||||
shared.dontRemoveOffer=Don't remove offer
|
||||
shared.openLargeQRWindow=Open large QR-Code window
|
||||
shared.tradingAccount=Trading account
|
||||
shared.faq=Visit FAQ web page
|
||||
shared.yesCancel=Yes, cancel
|
||||
shared.nextStep=Next step
|
||||
shared.selectTradingAccount=Select trading account
|
||||
shared.fundFromSavingsWalletButton=Transfer funds from Bitsquare wallet
|
||||
shared.fundFromExternalWalletButton=Open your external wallet for funding
|
||||
shared.openDefaultWalletFailed=Opening a default bitcoin wallet application has failed. Perhaps you don't have one installed?
|
||||
shared.distanceInPercent=Distance in % from market price
|
||||
shared.enterPercentageValue=Enter % value
|
||||
shared.OR=OR
|
||||
shared.notEnoughFunds=You don't have enough funds in your Bitsquare wallet.\nYou need {0} but you have only {1} in your Bitsquare wallet.\n\nPlease fund that trade from an external Bitcoin wallet or fund your Bitsquare wallet at \"Funds/Deposit funds\".
|
||||
shared.waitingForFunds=Waiting for funds...
|
||||
popup.headline.notification=Notification
|
||||
popup.headline.instruction=Please note:
|
||||
popup.headline.attention=Attention
|
||||
popup.headline.backgroundInfo=Background information
|
||||
popup.headline.feedback=Completed
|
||||
popup.headline.confirmation=Confirmation
|
||||
popup.headline.information=Information
|
||||
popup.headline.warning=Warning
|
||||
popup.headline.error=Error
|
||||
|
||||
popup.error.fatalStartupException=A fatal exception occurred at startup.
|
||||
popup.error.walletException=Cannot open wallet because of an exception:\n{0}
|
||||
popup.error.tryRestart=Please try to restart you application and check your network connection to see if you can resolve the issue.
|
||||
|
||||
popup.warning.walletNotInitialized=The wallet is not initialized yet
|
||||
popup.warning.wrongVersion=You probably have the wrong Bitsquare version for this computer.\nYour computer's architecture is: {0}.\nThe Bitsquare binary you installed is: {1}.\nPlease shut down and re-install the correct version ({2}).
|
||||
popup.warning.incompatibleDB=We detected incompatible data base files!\n\nThose database file(s) are not compatible with our current code base:\n{0}\n\nWe made a backup of the corrupted file(s) and applied the default values to a newdatabase version.\n\nThe backup is located at:\n{1}/db/backup_of_corrupted_data.\n\nPlease check if you have the latest version of Bitsquare installed.\nYou can download it at:\nhttps://bitsquare.io/downloads\n\nPlease restart the application.
|
||||
popup.warning.cannotConnectAtStartup=You still did not get connected to the {0} network.\nIf you use Tor for Bitcoin it might be that you got an unstable Tor circuit.\nYou can wait longer or try to restart.
|
||||
popup.warning.unknownProblemAtStartup=There is an unknown problem at startup.\nPlease restart and if the problem continues file a bug report.
|
||||
popup.warning.startupFailed.timeout=The application could not startup after 4 minutes.\n\n{0}
|
||||
popup.warning.startupFailed.twoInstances=Bitsquare is already running. You cannot run two instances of Bitsquare.
|
||||
popup.warning.cryptoTestFailed=Seems that you use a self compiled binary and have not following the build instructions in https://github.com/bitsquare/bitsquare/blob/master/doc/build.md#7-enable-unlimited-strength-for-cryptographic-keys.\n\nIf that is not the case and you use the official Bitsquare binary, please file a bug report to the Github page.\nError={0}
|
||||
popup.warning.noBountyCastle=There is a problem with the crypto libraries. BountyCastle is not available.
|
||||
popup.warning.oldOffers.msg=You have open offers which have been created with an older version of Bitsquare.\nPlease remove those offers as they are not valid anymore.\n\nOffers (ID): {0}
|
||||
popup.warning.oldOffers.buttonText=Remove outdated offer(s)
|
||||
popup.warning.tradePeriod.halfReached=Your trade with ID {0} has reached the half of the max. allowed trading period and is still not completed.\n\nThe trade period ends on {1}\n\nPlease check your trade state at \"Portfolio/Open trades\" for further information.
|
||||
popup.warning.tradePeriod.ended=Your trade with ID {0} has reached the max. allowed trading period and is not completed.\n\nThe trade period ended on {1}\n\nPlease check your trade at \"Portfolio/Open trades\" for contacting the arbitrator.
|
||||
popup.warning.noTradingAccountSetup.headline=You have not setup a trading account
|
||||
popup.warning.noTradingAccountSetup.msg=You need to setup a national currency or altcoin account before you can create an offer.\nDo you want to setup an account?
|
||||
popup.warning.noArbitratorSelected.headline=You don't have an arbitrator selected.
|
||||
popup.warning.noArbitratorSelected.msg=You need to setup at least one arbitrator to be able to trade.\nDo you want to do this now?
|
||||
popup.warning.notFullyConnected=You need to wait until you are fully connected to the network.\nThat might take up to about 2 minutes at startup.
|
||||
popup.warning.removeOffer=Are you sure you want to remove that offer?\nThe offer fee of {0} will be lost if you remove that offer.
|
||||
popup.warning.tooLargePercentageValue=You cannot set a percentage of 100% or larger.
|
||||
popup.warning.examplePercentageValue=Please enter a percentage number like \"5.4\" for 5.4%
|
||||
popup.warning.noPriceFeedAvailable=There is no price feed available for that currency. You cannot use a percent based price.\nPlease select the fixed price.
|
||||
popup.warning.sendMsgFailed=Sending message to your trading partner failed.\nPlease try again and if it continue to fail report a bug.
|
||||
|
||||
popup.info.securityDepositInfo=To ensure that both traders follow the trade protocol they need to pay a security deposit.\n\nThe deposit will stay in your local trading wallet until the offer gets accepted by another trader.\nIt will be refunded to you after the trade has successfully completed.\n\nPlease note that you need to keep you application running if you have an open offer.\nWhen another trader wants to take your offer it requires that your application is online and able to react.\nBe sure that you have standby mode deactivated as that would disconnect your client from the network (standby of the monitor is not a problem).
|
||||
|
||||
popup.privateNotification.headline=Important private notification!
|
||||
|
||||
popup.securityRecommendation.headline=Important security recommendation
|
||||
popup.securityRecommendation.msg=We would like to remind you to consider using password protection for your wallet if you have not already enabled that.\n\nIt is also highly recommended to write down the wallet seed words. Those seed words are like a master password for recovering your Bitcoin wallet.\nAt the \"Wallet Seed\" section you find more information.\n\nAdditionally you should backup the complete application data folder at the \"Backup\" section.
|
||||
|
||||
popup.shutDownInProgress.headline=Shut down in progress
|
||||
popup.shutDownInProgress.msg=Shutting down application can take a few seconds.\nPlease don't interrupt this process.
|
||||
|
||||
popup.attention.forTradeWithId=Attention required for trade with ID {0}
|
||||
|
||||
|
||||
####################################################################
|
||||
|
@ -411,8 +614,13 @@ table.placeholder.noData=Currently there is no data available
|
|||
button.buy=I want to buy bitcoin
|
||||
button.sell=I want to sell bitcoin
|
||||
|
||||
peerInfoIcon.tooltip.traded=Offerer's onion address: {0}\nYou have already traded {1} times with that offerer.
|
||||
peerInfoIcon.tooltip.notTraded=Offerer's onion address: {0}
|
||||
peerInfoIcon.tooltip.offer.traded=Offerer's onion address: {0}\nYou have already traded {1} times with that offerer.
|
||||
peerInfoIcon.tooltip.offer.notTraded=Offerer's onion address: {0}
|
||||
|
||||
peerInfoIcon.tooltip.trade.traded=Trading peer's onion address: {0}\nYou have already traded {1} times with that peer.
|
||||
peerInfoIcon.tooltip.trade.notTraded=Trading peer's onion address: {0}
|
||||
|
||||
tooltip.openPopupForDetails=Open popup for details
|
||||
|
||||
|
||||
####################################################################
|
||||
|
@ -426,8 +634,7 @@ navigation.portfolio.myOpenOffers=\"Portfolio/My open offers\"
|
|||
navigation.portfolio.pending=\"Portfolio/Open trades\"
|
||||
navigation.funds.depositFunds=\"Funds/Deposit funds\"
|
||||
navigation.settings.preferences=\"Settings/Preferences\"
|
||||
|
||||
|
||||
navigation.funds.transactions=\"Funds/Transactions\"
|
||||
|
||||
|
||||
####################################################################
|
||||
|
@ -559,68 +766,4 @@ validation.accountNr=Account number must consist of {0} numbers.
|
|||
validation.accountNrChars=Account number must consist of {0} characters.
|
||||
|
||||
|
||||
####################################################################
|
||||
# Notifications
|
||||
####################################################################
|
||||
|
||||
notification.walletUpdate.headline=Trading wallet update
|
||||
notification.walletUpdate.msg=Your trading wallet is sufficiently funded.\nAmount: {0}
|
||||
notification.takeOffer.walletUpdate.msg=Your trading wallet was already sufficiently funded from an earlier take offer attempt.\nAmount: {0}
|
||||
|
||||
|
||||
|
||||
####################################################################
|
||||
# Popups
|
||||
####################################################################
|
||||
|
||||
popup.headline.notification=Notification
|
||||
popup.headline.instruction=Please note:
|
||||
popup.headline.attention=Attention
|
||||
popup.headline.backgroundInfo=Background information
|
||||
popup.headline.feedback=Completed
|
||||
popup.headline.confirmation=Confirmation
|
||||
popup.headline.information=Information
|
||||
popup.headline.warning=Warning
|
||||
popup.headline.error=Error
|
||||
|
||||
popup.error.fatalStartupException=A fatal exception occurred at startup.
|
||||
popup.error.walletException=Cannot open wallet because of an exception:\n{0}
|
||||
popup.error.tryRestart=Please try to restart you application and check your network connection to see if you can resolve the issue.
|
||||
|
||||
popup.warning.walletNotInitialized=The wallet is not initialized yet
|
||||
popup.warning.wrongVersion=You probably have the wrong Bitsquare version for this computer.\nYour computer's architecture is: {0}.\nThe Bitsquare binary you installed is: {1}.\nPlease shut down and re-install the correct version ({2}).
|
||||
popup.warning.incompatibleDB=We detected incompatible data base files!\n\nThose database file(s) are not compatible with our current code base:\n{0}\n\nWe made a backup of the corrupted file(s) and applied the default values to a newdatabase version.\n\nThe backup is located at:\n{1}/db/backup_of_corrupted_data.\n\nPlease check if you have the latest version of Bitsquare installed.\nYou can download it at:\nhttps://bitsquare.io/downloads\n\nPlease restart the application.
|
||||
popup.warning.cannotConnectAtStartup=You still did not get connected to the {0} network.\nIf you use Tor for Bitcoin it might be that you got an unstable Tor circuit.\nYou can wait longer or try to restart.
|
||||
popup.warning.unknownProblemAtStartup=There is an unknown problem at startup.\nPlease restart and if the problem continues file a bug report.
|
||||
popup.warning.startupFailed.timeout=The application could not startup after 4 minutes.\n\n{0}
|
||||
popup.warning.startupFailed.twoInstances=Bitsquare is already running. You cannot run two instances of Bitsquare.
|
||||
popup.warning.cryptoTestFailed=Seems that you use a self compiled binary and have not following the build instructions in https://github.com/bitsquare/bitsquare/blob/master/doc/build.md#7-enable-unlimited-strength-for-cryptographic-keys.\n\nIf that is not the case and you use the official Bitsquare binary, please file a bug report to the Github page.\nError={0}
|
||||
popup.warning.noBountyCastle=There is a problem with the crypto libraries. BountyCastle is not available.
|
||||
popup.warning.oldOffers.msg=You have open offers which have been created with an older version of Bitsquare.\nPlease remove those offers as they are not valid anymore.\n\nOffers (ID): {0}
|
||||
popup.warning.oldOffers.buttonText=Remove outdated offer(s)
|
||||
popup.warning.tradePeriod.halfReached=Your trade with ID {0} has reached the half of the max. allowed trading period and is still not completed.\n\nThe trade period ends on {1}\n\nPlease check your trade state at \"Portfolio/Open trades\" for further information.
|
||||
popup.warning.tradePeriod.ended=Your trade with ID {0} has reached the max. allowed trading period and is not completed.\n\nThe trade period ended on {1}\n\nPlease check your trade at \"Portfolio/Open trades\" for contacting the arbitrator.
|
||||
popup.warning.noTradingAccountSetup.headline=You have not setup a trading account
|
||||
popup.warning.noTradingAccountSetup.msg=You need to setup a national currency or altcoin account before you can create an offer.\nDo you want to setup an account?
|
||||
popup.warning.noArbitratorSelected.headline=You don't have an arbitrator selected.
|
||||
popup.warning.noArbitratorSelected.msg=You need to setup at least one arbitrator to be able to trade.\nDo you want to do this now?
|
||||
popup.warning.notFullyConnected=You need to wait until you are fully connected to the network.\nThat might take up to about 2 minutes at startup.
|
||||
popup.warning.removeOffer=Are you sure you want to remove that offer?\nThe offer fee of {0} will be lost if you remove that offer.
|
||||
popup.warning.tooLargePercentageValue=You cannot set a percentage of 100% or larger.
|
||||
popup.warning.examplePercentageValue=Please enter a percentage number like \"5.4\" for 5.4%
|
||||
popup.warning.noPriceFeedAvailable=There is no price feed available for that currency. You cannot use a percent based price.\nPlease select the fixed price.
|
||||
|
||||
popup.info.securityDepositInfo=To ensure that both traders follow the trade protocol they need to pay a security deposit.\n\nThe deposit will stay in your local trading wallet until the offer gets accepted by another trader.\nIt will be refunded to you after the trade has successfully completed.\n\nPlease note that you need to keep you application running if you have an open offer.\nWhen another trader wants to take your offer it requires that your application is online and able to react.\nBe sure that you have standby mode deactivated as that would disconnect your client from the network (standby of the monitor is not a problem).
|
||||
|
||||
popup.privateNotification.headline=Important private notification!
|
||||
|
||||
popup.securityRecommendation.headline=Important security recommendation
|
||||
popup.securityRecommendation.msg=We would like to remind you to consider using password protection for your wallet if you have not already enabled that.\n\nIt is also highly recommended to write down the wallet seed words. Those seed words are like a master password for recovering your Bitcoin wallet.\nAt the \"Wallet Seed\" section you find more information.\n\nAdditionally you should backup the complete application data folder at the \"Backup\" section.
|
||||
|
||||
popup.shutDownInProgress.headline=Shut down in progress
|
||||
popup.shutDownInProgress.msg=Shutting down application can take a few seconds.\nPlease don't interrupt this process.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue