Search in sources :

Example 26 with Popup

use of bisq.desktop.main.overlays.popups.Popup in project bisq-desktop by bisq-network.

the class WalletPasswordWindow method addButtons.

private void addButtons() {
    BusyAnimation busyAnimation = new BusyAnimation(false);
    Label deriveStatusLabel = new AutoTooltipLabel();
    unlockButton = new AutoTooltipButton(Res.get("shared.unlock"));
    unlockButton.setDefaultButton(true);
    unlockButton.setDisable(true);
    unlockButton.setOnAction(e -> {
        String password = passwordTextField.getText();
        checkArgument(password.length() < 500, Res.get("password.tooLong"));
        KeyCrypterScrypt keyCrypterScrypt = walletsManager.getKeyCrypterScrypt();
        if (keyCrypterScrypt != null) {
            busyAnimation.play();
            deriveStatusLabel.setText(Res.get("password.deriveKey"));
            ScryptUtil.deriveKeyWithScrypt(keyCrypterScrypt, password, aesKey -> {
                if (walletsManager.checkAESKey(aesKey)) {
                    if (aesKeyHandler != null)
                        aesKeyHandler.onAesKey(aesKey);
                    hide();
                } else {
                    busyAnimation.stop();
                    deriveStatusLabel.setText("");
                    UserThread.runAfter(() -> new Popup<>().warning(Res.get("password.wrongPw")).onClose(this::blurAgain).show(), Transitions.DEFAULT_DURATION, TimeUnit.MILLISECONDS);
                }
            });
        } else {
            log.error("wallet.getKeyCrypter() is null, that must not happen.");
        }
    });
    forgotPasswordButton = new AutoTooltipButton(Res.get("password.forgotPassword"));
    forgotPasswordButton.setOnAction(e -> {
        forgotPasswordButton.setDisable(true);
        unlockButton.setDefaultButton(false);
        showRestoreScreen();
    });
    Button cancelButton = new AutoTooltipButton(Res.get("shared.cancel"));
    cancelButton.setOnAction(event -> {
        hide();
        closeHandlerOptional.ifPresent(Runnable::run);
    });
    HBox hBox = new HBox();
    hBox.setMinWidth(560);
    hBox.setSpacing(10);
    GridPane.setRowIndex(hBox, ++rowIndex);
    GridPane.setColumnIndex(hBox, 1);
    hBox.setAlignment(Pos.CENTER_LEFT);
    if (hideCloseButton)
        hBox.getChildren().addAll(unlockButton, forgotPasswordButton, busyAnimation, deriveStatusLabel);
    else
        hBox.getChildren().addAll(unlockButton, cancelButton);
    gridPane.getChildren().add(hBox);
    ColumnConstraints columnConstraints1 = new ColumnConstraints();
    columnConstraints1.setHalignment(HPos.RIGHT);
    columnConstraints1.setHgrow(Priority.SOMETIMES);
    ColumnConstraints columnConstraints2 = new ColumnConstraints();
    columnConstraints2.setHgrow(Priority.ALWAYS);
    gridPane.getColumnConstraints().addAll(columnConstraints1, columnConstraints2);
}
Also used : HBox(javafx.scene.layout.HBox) BusyAnimation(bisq.desktop.components.BusyAnimation) Button(javafx.scene.control.Button) AutoTooltipButton(bisq.desktop.components.AutoTooltipButton) FormBuilder.addButton(bisq.desktop.util.FormBuilder.addButton) ColumnConstraints(javafx.scene.layout.ColumnConstraints) Popup(bisq.desktop.main.overlays.popups.Popup) AutoTooltipLabel(bisq.desktop.components.AutoTooltipLabel) Label(javafx.scene.control.Label) AutoTooltipLabel(bisq.desktop.components.AutoTooltipLabel) KeyCrypterScrypt(org.bitcoinj.crypto.KeyCrypterScrypt) AutoTooltipButton(bisq.desktop.components.AutoTooltipButton)

Example 27 with Popup

use of bisq.desktop.main.overlays.popups.Popup in project bisq-desktop by bisq-network.

the class TransactionsView method showStatisticsPopup.

// This method is not intended for the public so we don't translate here
private void showStatisticsPopup() {
    Map<Long, List<Coin>> map = new HashMap<>();
    Map<String, Tuple4<Date, Integer, Integer, Integer>> dataByDayMap = new HashMap<>();
    displayedTransactions.forEach(item -> {
        Coin amountAsCoin = item.getAmountAsCoin();
        List<Coin> amounts;
        long key = amountAsCoin.getValue();
        if (!map.containsKey(key)) {
            amounts = new ArrayList<>();
            map.put(key, amounts);
        } else {
            amounts = map.get(key);
        }
        amounts.add(amountAsCoin);
        DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.US);
        String day = dateFormatter.format(item.getDate());
        // TODO fee is dynamic now
        Coin txFee = Coin.valueOf(20_000);
        Coin createOfferFee = Coin.valueOf(50_000);
        Coin takeOfferFee = Coin.valueOf(100_000);
        if (!dataByDayMap.containsKey(day)) {
            int numOffers = 0;
            int numTrades = 0;
            if (amountAsCoin.compareTo(createOfferFee.subtract(txFee)) == 0)
                numOffers++;
            else if (amountAsCoin.compareTo(takeOfferFee.subtract(txFee)) == 0)
                numTrades++;
            dataByDayMap.put(day, new Tuple4<>(item.getDate(), 1, numOffers, numTrades));
        } else {
            Tuple4<Date, Integer, Integer, Integer> tuple = dataByDayMap.get(day);
            int prev = tuple.second;
            int numOffers = tuple.third;
            int numTrades = tuple.forth;
            if (amountAsCoin.compareTo(createOfferFee.subtract(txFee)) == 0)
                numOffers++;
            else if (amountAsCoin.compareTo(takeOfferFee.subtract(txFee)) == 0)
                numTrades++;
            dataByDayMap.put(day, new Tuple4<>(tuple.first, ++prev, numOffers, numTrades));
        }
    });
    StringBuilder stringBuilder = new StringBuilder();
    map.forEach((key, value) -> {
        // This is not intended for the public so we don't translate here
        stringBuilder.append("No. of transactions for amount ").append(formatter.formatCoinWithCode(Coin.valueOf(key))).append(": ").append(value.size()).append("\n");
    });
    List<Tuple4<String, Date, Integer, Tuple2<Integer, Integer>>> sortedDataByDayList = dataByDayMap.entrySet().stream().map(e -> {
        Tuple4<Date, Integer, Integer, Integer> data = e.getValue();
        return new Tuple4<>(e.getKey(), data.first, data.second, new Tuple2<>(data.third, data.forth));
    }).sorted((o1, o2) -> o2.second.compareTo(o1.second)).collect(Collectors.toList());
    StringBuilder transactionsByDayStringBuilder = new StringBuilder();
    StringBuilder offersStringBuilder = new StringBuilder();
    StringBuilder tradesStringBuilder = new StringBuilder();
    StringBuilder allStringBuilder = new StringBuilder();
    // This is not intended for the public so we don't translate here
    allStringBuilder.append(Res.get("shared.date")).append(";").append("Offers").append(";").append("Trades").append("\n");
    sortedDataByDayList.forEach(tuple4 -> {
        offersStringBuilder.append(tuple4.forth.first).append(",");
        tradesStringBuilder.append(tuple4.forth.second).append(",");
        allStringBuilder.append(tuple4.first).append(";").append(tuple4.forth.first).append(";").append(tuple4.forth.second).append("\n");
        transactionsByDayStringBuilder.append("\n").append(tuple4.first).append(": ").append(tuple4.third).append(" (Offers: ").append(tuple4.forth.first).append(" / Trades: ").append(tuple4.forth.second).append(")");
    });
    // This is not intended for the public so we don't translate here
    String message = stringBuilder.toString() + "\nNo. of transactions by day:" + transactionsByDayStringBuilder.toString();
    new Popup<>().headLine("Statistical info").information(message).actionButtonText("Copy").onAction(() -> Utilities.copyToClipboard(message + "\n\nCSV (Offers):\n" + offersStringBuilder.toString() + "\n\nCSV (Trades):\n" + tradesStringBuilder.toString() + "\n\nCSV (all):\n" + allStringBuilder.toString())).show();
}
Also used : Button(javafx.scene.control.Button) EventHandler(javafx.event.EventHandler) Transaction(org.bitcoinj.core.Transaction) OpenOffer(bisq.core.offer.OpenOffer) Utilities(bisq.common.util.Utilities) HyperlinkWithIcon(bisq.desktop.components.HyperlinkWithIcon) Coin(org.bitcoinj.core.Coin) Date(java.util.Date) CSVEntryConverter(com.googlecode.jcsv.writer.CSVEntryConverter) VBox(javafx.scene.layout.VBox) BSFormatter(bisq.desktop.util.BSFormatter) ReadOnlyObjectWrapper(javafx.beans.property.ReadOnlyObjectWrapper) Res(bisq.core.locale.Res) Locale(java.util.Locale) Map(java.util.Map) TableView(javafx.scene.control.TableView) DateFormat(java.text.DateFormat) SortedList(javafx.collections.transformation.SortedList) Popup(bisq.desktop.main.overlays.popups.Popup) P2PService(bisq.network.p2p.P2PService) AutoTooltipLabel(bisq.desktop.components.AutoTooltipLabel) KeyEvent(javafx.scene.input.KeyEvent) Collectors(java.util.stream.Collectors) ECKey(org.bitcoinj.core.ECKey) FXML(javafx.fxml.FXML) List(java.util.List) Script(org.bitcoinj.script.Script) WalletsSetup(bisq.core.btc.wallet.WalletsSetup) AutoTooltipButton(bisq.desktop.components.AutoTooltipButton) Preferences(bisq.core.user.Preferences) ObservableList(javafx.collections.ObservableList) AwesomeIcon(de.jensd.fx.fontawesome.AwesomeIcon) GUIUtil(bisq.desktop.util.GUIUtil) BtcWalletService(bisq.core.btc.wallet.BtcWalletService) Scene(javafx.scene.Scene) WalletEventListener(org.bitcoinj.wallet.listeners.WalletEventListener) ActivatableView(bisq.desktop.common.view.ActivatableView) TransactionConfidence(org.bitcoinj.core.TransactionConfidence) OfferDetailsWindow(bisq.desktop.main.overlays.windows.OfferDetailsWindow) Wallet(org.bitcoinj.wallet.Wallet) HashMap(java.util.HashMap) Tradable(bisq.core.trade.Tradable) FxmlView(bisq.desktop.common.view.FxmlView) TableColumn(javafx.scene.control.TableColumn) ArrayList(java.util.ArrayList) Tuple4(bisq.common.util.Tuple4) Inject(javax.inject.Inject) Tuple2(bisq.common.util.Tuple2) TableCell(javafx.scene.control.TableCell) AddressWithIconAndDirection(bisq.desktop.components.AddressWithIconAndDirection) Callback(javafx.util.Callback) Tooltip(javafx.scene.control.Tooltip) Nullable(javax.annotation.Nullable) KeyCode(javafx.scene.input.KeyCode) TradeDetailsWindow(bisq.desktop.main.overlays.windows.TradeDetailsWindow) Trade(bisq.core.trade.Trade) Stage(javafx.stage.Stage) Comparator(java.util.Comparator) HashMap(java.util.HashMap) Date(java.util.Date) Tuple4(bisq.common.util.Tuple4) Coin(org.bitcoinj.core.Coin) DateFormat(java.text.DateFormat) SortedList(javafx.collections.transformation.SortedList) List(java.util.List) ObservableList(javafx.collections.ObservableList) ArrayList(java.util.ArrayList)

Example 28 with Popup

use of bisq.desktop.main.overlays.popups.Popup in project bisq-desktop by bisq-network.

the class PreferencesView method initializeGeneralOptions.

// /////////////////////////////////////////////////////////////////////////////////////////
// Initialize
// /////////////////////////////////////////////////////////////////////////////////////////
private void initializeGeneralOptions() {
    TitledGroupBg titledGroupBg = addTitledGroupBg(root, gridRow, 8, Res.get("setting.preferences.general"));
    GridPane.setColumnSpan(titledGroupBg, 4);
    // selectBaseCurrencyNetwork
    // noinspection unchecked
    selectBaseCurrencyNetworkComboBox = addLabelComboBox(root, gridRow, Res.getWithCol("settings.preferences.selectCurrencyNetwork"), Layout.FIRST_ROW_DISTANCE).second;
    selectBaseCurrencyNetworkComboBox.setConverter(new StringConverter<BaseCurrencyNetwork>() {

        @Override
        public String toString(BaseCurrencyNetwork baseCurrencyNetwork) {
            return DevEnv.isDevMode() ? (baseCurrencyNetwork.getCurrencyName() + "_" + baseCurrencyNetwork.getNetwork()) : baseCurrencyNetwork.getCurrencyName();
        }

        @Override
        public BaseCurrencyNetwork fromString(String string) {
            return null;
        }
    });
    // userLanguage
    // noinspection unchecked
    userLanguageComboBox = addLabelComboBox(root, ++gridRow, Res.getWithCol("shared.language")).second;
    // userCountry
    // noinspection unchecked
    userCountryComboBox = addLabelComboBox(root, ++gridRow, Res.getWithCol("shared.country")).second;
    // blockChainExplorer
    // noinspection unchecked
    blockChainExplorerComboBox = addLabelComboBox(root, ++gridRow, Res.get("setting.preferences.explorer")).second;
    // transactionFee
    Tuple3<Label, InputTextField, CheckBox> tuple = addLabelInputTextFieldCheckBox(root, ++gridRow, Res.get("setting.preferences.txFee"), Res.get("setting.preferences.useCustomValue"));
    transactionFeeInputTextField = tuple.second;
    useCustomFeeCheckbox = tuple.third;
    useCustomFeeCheckboxListener = (observable, oldValue, newValue) -> {
        preferences.setUseCustomWithdrawalTxFee(newValue);
        transactionFeeInputTextField.setEditable(newValue);
        if (!newValue) {
            transactionFeeInputTextField.setText(String.valueOf(feeService.getTxFeePerByte().value));
            try {
                preferences.setWithdrawalTxFeeInBytes(feeService.getTxFeePerByte().value);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        preferences.setUseCustomWithdrawalTxFee(newValue);
    };
    transactionFeeFocusedListener = (o, oldValue, newValue) -> {
        if (oldValue && !newValue) {
            String estimatedFee = String.valueOf(feeService.getTxFeePerByte().value);
            try {
                int withdrawalTxFeePerByte = Integer.parseInt(transactionFeeInputTextField.getText());
                final long minFeePerByte = BisqEnvironment.getBaseCurrencyNetwork().getDefaultMinFeePerByte();
                if (withdrawalTxFeePerByte < minFeePerByte) {
                    new Popup<>().warning(Res.get("setting.preferences.txFeeMin", minFeePerByte)).show();
                    transactionFeeInputTextField.setText(estimatedFee);
                } else if (withdrawalTxFeePerByte > 5000) {
                    new Popup<>().warning(Res.get("setting.preferences.txFeeTooLarge")).show();
                    transactionFeeInputTextField.setText(estimatedFee);
                } else {
                    preferences.setWithdrawalTxFeeInBytes(withdrawalTxFeePerByte);
                }
            } catch (NumberFormatException t) {
                log.error(t.toString());
                t.printStackTrace();
                new Popup<>().warning(Res.get("validation.integerOnly")).show();
                transactionFeeInputTextField.setText(estimatedFee);
            } catch (Throwable t) {
                log.error(t.toString());
                t.printStackTrace();
                new Popup<>().warning(Res.get("validation.inputError", t.getMessage())).show();
                transactionFeeInputTextField.setText(estimatedFee);
            }
        }
    };
    transactionFeeChangeListener = (observable, oldValue, newValue) -> transactionFeeInputTextField.setText(String.valueOf(feeService.getTxFeePerByte().value));
    // deviation
    deviationInputTextField = addLabelInputTextField(root, ++gridRow, Res.get("setting.preferences.deviation")).second;
    deviationListener = (observable, oldValue, newValue) -> {
        try {
            double value = formatter.parsePercentStringToDouble(newValue);
            final double maxDeviation = 0.5;
            if (value <= maxDeviation) {
                preferences.setMaxPriceDistanceInPercent(value);
            } else {
                new Popup<>().warning(Res.get("setting.preferences.deviationToLarge", maxDeviation * 100)).show();
                UserThread.runAfter(() -> deviationInputTextField.setText(formatter.formatPercentagePrice(preferences.getMaxPriceDistanceInPercent())), 100, TimeUnit.MILLISECONDS);
            }
        } catch (NumberFormatException t) {
            log.error("Exception at parseDouble deviation: " + t.toString());
            UserThread.runAfter(() -> deviationInputTextField.setText(formatter.formatPercentagePrice(preferences.getMaxPriceDistanceInPercent())), 100, TimeUnit.MILLISECONDS);
        }
    };
    deviationFocusedListener = (observable1, oldValue1, newValue1) -> {
        if (oldValue1 && !newValue1)
            UserThread.runAfter(() -> deviationInputTextField.setText(formatter.formatPercentagePrice(preferences.getMaxPriceDistanceInPercent())), 100, TimeUnit.MILLISECONDS);
    };
    // autoSelectArbitrators
    autoSelectArbitratorsCheckBox = addLabelCheckBox(root, ++gridRow, Res.get("setting.preferences.autoSelectArbitrators"), "").second;
    // ignoreTraders
    ignoreTradersListInputTextField = addLabelInputTextField(root, ++gridRow, Res.get("setting.preferences.ignorePeers")).second;
    ignoreTradersListListener = (observable, oldValue, newValue) -> preferences.setIgnoreTradersList(Arrays.asList(StringUtils.deleteWhitespace(newValue).replace(":9999", "").replace(".onion", "").split(",")));
}
Also used : InputTextField(bisq.desktop.components.InputTextField) AutoTooltipLabel(bisq.desktop.components.AutoTooltipLabel) Label(javafx.scene.control.Label) CheckBox(javafx.scene.control.CheckBox) Popup(bisq.desktop.main.overlays.popups.Popup) BaseCurrencyNetwork(bisq.core.btc.BaseCurrencyNetwork) TitledGroupBg(bisq.desktop.components.TitledGroupBg)

Example 29 with Popup

use of bisq.desktop.main.overlays.popups.Popup in project bisq-desktop by bisq-network.

the class BuyerStep4View method reviewWithdrawal.

@SuppressWarnings("PointlessBooleanExpression")
private void reviewWithdrawal() {
    Coin amount = trade.getPayoutAmount();
    BtcWalletService walletService = model.dataModel.btcWalletService;
    AddressEntry fromAddressesEntry = walletService.getOrCreateAddressEntry(trade.getId(), AddressEntry.Context.TRADE_PAYOUT);
    String fromAddresses = fromAddressesEntry.getAddressString();
    String toAddresses = withdrawAddressTextField.getText();
    if (new BtcAddressValidator().validate(toAddresses).isValid) {
        Coin balance = walletService.getBalanceForAddress(fromAddressesEntry.getAddress());
        try {
            Transaction feeEstimationTransaction = walletService.getFeeEstimationTransaction(fromAddresses, toAddresses, amount, AddressEntry.Context.TRADE_PAYOUT);
            Coin fee = feeEstimationTransaction.getFee();
            // noinspection UnusedAssignment
            Coin receiverAmount = amount.subtract(fee);
            if (balance.isZero()) {
                new Popup<>().warning(Res.get("portfolio.pending.step5_buyer.alreadyWithdrawn")).show();
                model.dataModel.tradeManager.addTradeToClosedTrades(trade);
            } else {
                if (toAddresses.isEmpty()) {
                    validateWithdrawAddress();
                } else if (Restrictions.isAboveDust(amount, fee)) {
                    BSFormatter formatter = model.btcFormatter;
                    int txSize = feeEstimationTransaction.bitcoinSerialize().length;
                    double feePerByte = CoinUtil.getFeePerByte(fee, txSize);
                    double kb = txSize / 1000d;
                    String recAmount = formatter.formatCoinWithCode(receiverAmount);
                    new Popup<>().headLine(Res.get("portfolio.pending.step5_buyer.confirmWithdrawal")).confirmation(Res.get("shared.sendFundsDetailsWithFee", formatter.formatCoinWithCode(amount), fromAddresses, toAddresses, formatter.formatCoinWithCode(fee), feePerByte, kb, recAmount)).actionButtonText(Res.get("shared.yes")).onAction(() -> doWithdrawal(amount, fee)).closeButtonText(Res.get("shared.cancel")).onClose(() -> {
                        useSavingsWalletButton.setDisable(false);
                        withdrawToExternalWalletButton.setDisable(false);
                    }).show();
                } else {
                    new Popup<>().warning(Res.get("portfolio.pending.step5_buyer.amountTooLow")).show();
                }
            }
        } catch (AddressFormatException e) {
            validateWithdrawAddress();
        } catch (AddressEntryException e) {
            log.error(e.getMessage());
        } catch (InsufficientFundsException e) {
            log.error(e.getMessage());
            e.printStackTrace();
            new Popup<>().warning(e.getMessage()).show();
        }
    } else {
        new Popup<>().warning(Res.get("validation.btc.invalidAddress")).show();
    }
}
Also used : BtcAddressValidator(bisq.desktop.util.validation.BtcAddressValidator) Coin(org.bitcoinj.core.Coin) AddressFormatException(org.bitcoinj.core.AddressFormatException) AddressEntryException(bisq.core.btc.AddressEntryException) Transaction(org.bitcoinj.core.Transaction) BtcWalletService(bisq.core.btc.wallet.BtcWalletService) AddressEntry(bisq.core.btc.AddressEntry) Popup(bisq.desktop.main.overlays.popups.Popup) InsufficientFundsException(bisq.core.btc.InsufficientFundsException) BSFormatter(bisq.desktop.util.BSFormatter)

Example 30 with Popup

use of bisq.desktop.main.overlays.popups.Popup in project bisq-desktop by bisq-network.

the class BuyerStep4View method doWithdrawal.

private void doWithdrawal(Coin amount, Coin fee) {
    String toAddress = withdrawAddressTextField.getText();
    ResultHandler resultHandler = this::handleTradeCompleted;
    FaultHandler faultHandler = (errorMessage, throwable) -> {
        useSavingsWalletButton.setDisable(false);
        withdrawToExternalWalletButton.setDisable(false);
        if (throwable != null && throwable.getMessage() != null)
            new Popup<>().error(errorMessage + "\n\n" + throwable.getMessage()).show();
        else
            new Popup<>().error(errorMessage).show();
    };
    if (model.dataModel.btcWalletService.isEncrypted()) {
        UserThread.runAfter(() -> model.dataModel.walletPasswordWindow.onAesKey(aesKey -> doWithdrawRequest(toAddress, amount, fee, aesKey, resultHandler, faultHandler)).show(), 300, TimeUnit.MILLISECONDS);
    } else
        doWithdrawRequest(toAddress, amount, fee, null, resultHandler, faultHandler);
}
Also used : Button(javafx.scene.control.Button) BtcWalletService(bisq.core.btc.wallet.BtcWalletService) Transaction(org.bitcoinj.core.Transaction) Coin(org.bitcoinj.core.Coin) Layout(bisq.desktop.util.Layout) ClosedTradesView(bisq.desktop.main.portfolio.closedtrades.ClosedTradesView) Notification(bisq.desktop.main.overlays.notifications.Notification) BSFormatter(bisq.desktop.util.BSFormatter) Tuple2(bisq.common.util.Tuple2) Insets(javafx.geometry.Insets) InputTextField(bisq.desktop.components.InputTextField) Res(bisq.core.locale.Res) KeyParameter(org.spongycastle.crypto.params.KeyParameter) TitledGroupBg(bisq.desktop.components.TitledGroupBg) GridPane(javafx.scene.layout.GridPane) PendingTradesViewModel(bisq.desktop.main.portfolio.pendingtrades.PendingTradesViewModel) AddressFormatException(org.bitcoinj.core.AddressFormatException) HBox(javafx.scene.layout.HBox) Popup(bisq.desktop.main.overlays.popups.Popup) AddressEntryException(bisq.core.btc.AddressEntryException) Label(javafx.scene.control.Label) FaultHandler(bisq.common.handlers.FaultHandler) AutoTooltipLabel(bisq.desktop.components.AutoTooltipLabel) InsufficientFundsException(bisq.core.btc.InsufficientFundsException) DontShowAgainLookup(bisq.core.user.DontShowAgainLookup) ResultHandler(bisq.common.handlers.ResultHandler) FormBuilder(bisq.desktop.util.FormBuilder) Log(bisq.common.app.Log) TradeStepView(bisq.desktop.main.portfolio.pendingtrades.steps.TradeStepView) TimeUnit(java.util.concurrent.TimeUnit) MainView(bisq.desktop.main.MainView) AddressEntry(bisq.core.btc.AddressEntry) DevEnv(bisq.common.app.DevEnv) AutoTooltipButton(bisq.desktop.components.AutoTooltipButton) UserThread(bisq.common.UserThread) BtcAddressValidator(bisq.desktop.util.validation.BtcAddressValidator) PortfolioView(bisq.desktop.main.portfolio.PortfolioView) Restrictions(bisq.core.btc.Restrictions) CoinUtil(bisq.core.util.CoinUtil) Popup(bisq.desktop.main.overlays.popups.Popup) ResultHandler(bisq.common.handlers.ResultHandler) FaultHandler(bisq.common.handlers.FaultHandler)

Aggregations

Popup (bisq.desktop.main.overlays.popups.Popup)57 Label (javafx.scene.control.Label)22 Coin (org.bitcoinj.core.Coin)17 AutoTooltipLabel (bisq.desktop.components.AutoTooltipLabel)16 Button (javafx.scene.control.Button)16 Res (bisq.core.locale.Res)13 AutoTooltipButton (bisq.desktop.components.AutoTooltipButton)13 Insets (javafx.geometry.Insets)13 InputTextField (bisq.desktop.components.InputTextField)12 BSFormatter (bisq.desktop.util.BSFormatter)12 Transaction (org.bitcoinj.core.Transaction)12 List (java.util.List)11 UserThread (bisq.common.UserThread)10 ChangeListener (javafx.beans.value.ChangeListener)9 BusyAnimation (bisq.desktop.components.BusyAnimation)8 ObservableList (javafx.collections.ObservableList)8 HBox (javafx.scene.layout.HBox)8 Tuple2 (bisq.common.util.Tuple2)7 FxmlView (bisq.desktop.common.view.FxmlView)7 TradeCurrency (bisq.core.locale.TradeCurrency)6