Search in sources :

Example 6 with Offer

use of io.bitsquare.trade.offer.Offer in project bitsquare by bitsquare.

the class OfferBookViewModel method getPaymentMethodToolTip.

String getPaymentMethodToolTip(OfferBookListItem item) {
    String result = "";
    if (item != null) {
        Offer offer = item.getOffer();
        result = "Payment method: " + BSResources.get(offer.getPaymentMethod().getId());
        result += "\nCurrency: " + CurrencyUtil.getNameAndCode(offer.getCurrencyCode());
        String methodCountryCode = offer.getCountryCode();
        if (methodCountryCode != null) {
            String bankId = offer.getBankId();
            if (bankId != null && !bankId.equals("null")) {
                if (BankUtil.isBankIdRequired(methodCountryCode))
                    result += "\nOfferer's bank ID: " + bankId;
                else if (BankUtil.isBankNameRequired(methodCountryCode))
                    result += "\nOfferer's bank name: " + bankId;
            }
        }
        if (methodCountryCode != null)
            result += "\nOfferer's seat of bank country: " + CountryUtil.getNameByCode(methodCountryCode);
        List<String> acceptedCountryCodes = offer.getAcceptedCountryCodes();
        List<String> acceptedBanks = offer.getAcceptedBankIds();
        if (acceptedCountryCodes != null && !acceptedCountryCodes.isEmpty()) {
            if (CountryUtil.containsAllSepaEuroCountries(acceptedCountryCodes))
                result += "\nAccepted seat of bank countries (taker): All Euro countries";
            else
                result += "\nAccepted seat of bank countries (taker):\n" + CountryUtil.getNamesByCodesString(acceptedCountryCodes);
        } else if (acceptedBanks != null && !acceptedBanks.isEmpty()) {
            if (offer.getPaymentMethod().equals(PaymentMethod.SAME_BANK))
                result += "\nBank name: " + acceptedBanks.get(0);
            else if (offer.getPaymentMethod().equals(PaymentMethod.SPECIFIC_BANKS))
                result += "\nAccepted banks: " + Joiner.on(", ").join(acceptedBanks);
        }
    }
    return result;
}
Also used : Offer(io.bitsquare.trade.offer.Offer)

Example 7 with Offer

use of io.bitsquare.trade.offer.Offer in project bitsquare by bitsquare.

the class OfferBookViewModel method getPrice.

String getPrice(OfferBookListItem item) {
    if ((item == null))
        return "";
    Offer offer = item.getOffer();
    Fiat price = offer.getPrice();
    if (price != null) {
        String postFix = "";
        if (offer.getUseMarketBasedPrice()) {
            postFix = " (" + formatter.formatPercentagePrice(offer.getMarketPriceMargin()) + ")";
        }
        if (showAllTradeCurrenciesProperty.get())
            return formatter.formatPrice(price) + postFix;
        else
            return formatter.formatPrice(price) + postFix;
    } else {
        return "N/A";
    }
}
Also used : Offer(io.bitsquare.trade.offer.Offer) Fiat(org.bitcoinj.utils.Fiat)

Example 8 with Offer

use of io.bitsquare.trade.offer.Offer in project bitsquare by bitsquare.

the class OfferBookChartView method getOfferTable.

private Tuple4<TableView<OfferListItem>, VBox, Button, Label> getOfferTable(Offer.Direction direction) {
    TableView<OfferListItem> tableView = new TableView<>();
    tableView.setMinHeight(109);
    tableView.setPrefHeight(121);
    //530
    tableView.setMinWidth(480);
    // price
    TableColumn<OfferListItem, OfferListItem> priceColumn = new TableColumn<>();
    priceColumn.textProperty().bind(priceColumnLabel);
    //130
    priceColumn.setMinWidth(115);
    //130
    priceColumn.setMaxWidth(115);
    priceColumn.setSortable(false);
    priceColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
    priceColumn.setCellFactory(new Callback<TableColumn<OfferListItem, OfferListItem>, TableCell<OfferListItem, OfferListItem>>() {

        @Override
        public TableCell<OfferListItem, OfferListItem> call(TableColumn<OfferListItem, OfferListItem> column) {
            return new TableCell<OfferListItem, OfferListItem>() {

                private Offer offer;

                ChangeListener<Number> listener = new ChangeListener<Number>() {

                    @Override
                    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                        if (offer != null && offer.getPrice() != null) {
                            setText(formatter.formatPrice(offer.getPrice()));
                            model.priceFeedService.currenciesUpdateFlagProperty().removeListener(listener);
                        }
                    }
                };

                @Override
                public void updateItem(final OfferListItem offerListItem, boolean empty) {
                    super.updateItem(offerListItem, empty);
                    if (offerListItem != null && !empty) {
                        if (offerListItem.offer.getPrice() == null) {
                            this.offer = offerListItem.offer;
                            model.priceFeedService.currenciesUpdateFlagProperty().addListener(listener);
                            setText("N/A");
                        } else {
                            setText(formatter.formatPrice(offerListItem.offer.getPrice()));
                        }
                    } else {
                        if (listener != null)
                            model.priceFeedService.currenciesUpdateFlagProperty().removeListener(listener);
                        this.offer = null;
                        setText("");
                    }
                }
            };
        }
    });
    // volume
    TableColumn<OfferListItem, OfferListItem> volumeColumn = new TableColumn<>();
    //125
    volumeColumn.setMinWidth(115);
    volumeColumn.setSortable(false);
    volumeColumn.textProperty().bind(volumeColumnLabel);
    volumeColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
    volumeColumn.setCellFactory(new Callback<TableColumn<OfferListItem, OfferListItem>, TableCell<OfferListItem, OfferListItem>>() {

        @Override
        public TableCell<OfferListItem, OfferListItem> call(TableColumn<OfferListItem, OfferListItem> column) {
            return new TableCell<OfferListItem, OfferListItem>() {

                private Offer offer;

                ChangeListener<Number> listener = new ChangeListener<Number>() {

                    @Override
                    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                        if (offer != null && offer.getPrice() != null) {
                            setText(formatter.formatVolume(offer.getOfferVolume()));
                            model.priceFeedService.currenciesUpdateFlagProperty().removeListener(listener);
                        }
                    }
                };

                @Override
                public void updateItem(final OfferListItem offerListItem, boolean empty) {
                    super.updateItem(offerListItem, empty);
                    if (offerListItem != null && !empty) {
                        this.offer = offerListItem.offer;
                        if (offer.getPrice() == null) {
                            this.offer = offerListItem.offer;
                            model.priceFeedService.currenciesUpdateFlagProperty().addListener(listener);
                            setText("N/A");
                        } else {
                            setText(formatter.formatVolume(offer.getOfferVolume()));
                        }
                    } else {
                        if (listener != null)
                            model.priceFeedService.currenciesUpdateFlagProperty().removeListener(listener);
                        this.offer = null;
                        setText("");
                    }
                }
            };
        }
    });
    // amount
    TableColumn<OfferListItem, OfferListItem> amountColumn = new TableColumn<>("Amount in BTC");
    //125
    amountColumn.setMinWidth(115);
    amountColumn.setSortable(false);
    amountColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
    amountColumn.setCellFactory(new Callback<TableColumn<OfferListItem, OfferListItem>, TableCell<OfferListItem, OfferListItem>>() {

        @Override
        public TableCell<OfferListItem, OfferListItem> call(TableColumn<OfferListItem, OfferListItem> column) {
            return new TableCell<OfferListItem, OfferListItem>() {

                @Override
                public void updateItem(final OfferListItem offerListItem, boolean empty) {
                    super.updateItem(offerListItem, empty);
                    if (offerListItem != null && !empty)
                        setText(formatter.formatCoin(offerListItem.offer.getAmount()));
                    else
                        setText("");
                }
            };
        }
    });
    // accumulated
    TableColumn<OfferListItem, OfferListItem> accumulatedColumn = new TableColumn<>("Sum in BTC");
    //130
    accumulatedColumn.setMinWidth(100);
    accumulatedColumn.setSortable(false);
    accumulatedColumn.setCellValueFactory((offer) -> new ReadOnlyObjectWrapper<>(offer.getValue()));
    accumulatedColumn.setCellFactory(new Callback<TableColumn<OfferListItem, OfferListItem>, TableCell<OfferListItem, OfferListItem>>() {

        @Override
        public TableCell<OfferListItem, OfferListItem> call(TableColumn<OfferListItem, OfferListItem> column) {
            return new TableCell<OfferListItem, OfferListItem>() {

                @Override
                public void updateItem(final OfferListItem offerListItem, boolean empty) {
                    super.updateItem(offerListItem, empty);
                    if (offerListItem != null && !empty)
                        setText(formatter.formatRoundedDoubleWithPrecision(offerListItem.accumulated, 4));
                    else
                        setText("");
                }
            };
        }
    });
    if (direction == Offer.Direction.BUY) {
        tableView.getColumns().add(accumulatedColumn);
        tableView.getColumns().add(volumeColumn);
        tableView.getColumns().add(amountColumn);
        tableView.getColumns().add(priceColumn);
    } else {
        tableView.getColumns().add(priceColumn);
        tableView.getColumns().add(amountColumn);
        tableView.getColumns().add(volumeColumn);
        tableView.getColumns().add(accumulatedColumn);
    }
    tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
    Label placeholder = new Label("Currently there are no offers available");
    placeholder.setWrapText(true);
    tableView.setPlaceholder(placeholder);
    Label titleLabel = new Label();
    titleLabel.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-alignment: center");
    UserThread.execute(() -> titleLabel.prefWidthProperty().bind(tableView.widthProperty()));
    boolean isSellOffer = direction == Offer.Direction.SELL;
    Button button = new Button();
    ImageView iconView = new ImageView();
    iconView.setId(isSellOffer ? "image-buy-white" : "image-sell-white");
    button.setGraphic(iconView);
    button.setGraphicTextGap(10);
    button.setText(isSellOffer ? "I want to buy bitcoin" : "I want to sell bitcoin");
    button.setMinHeight(40);
    button.setId(isSellOffer ? "buy-button-big" : "sell-button-big");
    button.setOnAction(e -> {
        if (isSellOffer) {
            model.preferences.setBuyScreenCurrencyCode(model.getCurrencyCode());
            navigation.navigateTo(MainView.class, BuyOfferView.class);
        } else {
            model.preferences.setSellScreenCurrencyCode(model.getCurrencyCode());
            navigation.navigateTo(MainView.class, SellOfferView.class);
        }
    });
    VBox vBox = new VBox();
    vBox.setSpacing(10);
    vBox.setFillWidth(true);
    vBox.setMinHeight(190);
    vBox.getChildren().addAll(titleLabel, tableView, button);
    button.prefWidthProperty().bind(vBox.widthProperty());
    return new Tuple4<>(tableView, vBox, button, titleLabel);
}
Also used : ObservableValue(javafx.beans.value.ObservableValue) Tuple4(io.bitsquare.common.util.Tuple4) Offer(io.bitsquare.trade.offer.Offer) ListChangeListener(javafx.collections.ListChangeListener) ChangeListener(javafx.beans.value.ChangeListener) ImageView(javafx.scene.image.ImageView) VBox(javafx.scene.layout.VBox)

Example 9 with Offer

use of io.bitsquare.trade.offer.Offer in project bitsquare by bitsquare.

the class OfferBookViewModel method getPaymentMethod.

String getPaymentMethod(OfferBookListItem item) {
    String result = "";
    if (item != null) {
        Offer offer = item.getOffer();
        String method = BSResources.get(offer.getPaymentMethod().getId() + "_SHORT");
        String methodCountryCode = offer.getCountryCode();
        if (methodCountryCode != null)
            result = method + " (" + methodCountryCode + ")";
        else
            result = method;
    }
    return result;
}
Also used : Offer(io.bitsquare.trade.offer.Offer)

Example 10 with Offer

use of io.bitsquare.trade.offer.Offer in project bitsquare by bitsquare.

the class OfferBookViewModel method getVolume.

String getVolume(OfferBookListItem item) {
    Offer offer = item.getOffer();
    Fiat offerVolume = offer.getOfferVolume();
    Fiat minOfferVolume = offer.getMinOfferVolume();
    if (offerVolume != null && minOfferVolume != null) {
        String postFix = showAllTradeCurrenciesProperty.get() ? " " + offer.getCurrencyCode() : "";
        if (offerVolume.equals(minOfferVolume))
            return formatter.formatVolume(offerVolume) + postFix;
        else
            return formatter.formatMinVolumeAndVolume(offer) + postFix;
    } else {
        return "N/A";
    }
}
Also used : Offer(io.bitsquare.trade.offer.Offer) Fiat(org.bitcoinj.utils.Fiat)

Aggregations

Offer (io.bitsquare.trade.offer.Offer)27 Fiat (org.bitcoinj.utils.Fiat)8 Coin (org.bitcoinj.core.Coin)7 MainView (io.bitsquare.gui.main.MainView)5 Popup (io.bitsquare.gui.main.overlays.popups.Popup)5 BSFormatter (io.bitsquare.gui.util.BSFormatter)5 ImageView (javafx.scene.image.ImageView)5 AddressEntry (io.bitsquare.btc.AddressEntry)4 WalletService (io.bitsquare.btc.WalletService)4 Navigation (io.bitsquare.gui.Navigation)4 TradeCurrency (io.bitsquare.locale.TradeCurrency)4 ListChangeListener (javafx.collections.ListChangeListener)4 FeePolicy (io.bitsquare.btc.FeePolicy)3 ActivatableViewAndModel (io.bitsquare.gui.common.view.ActivatableViewAndModel)3 FxmlView (io.bitsquare.gui.common.view.FxmlView)3 AccountView (io.bitsquare.gui.main.account.AccountView)3 ArbitratorSelectionView (io.bitsquare.gui.main.account.content.arbitratorselection.ArbitratorSelectionView)3 AccountSettingsView (io.bitsquare.gui.main.account.settings.AccountSettingsView)3 GUIUtil (io.bitsquare.gui.util.GUIUtil)3 FiatCurrency (io.bitsquare.locale.FiatCurrency)3