Search in sources :

Example 1 with CurrencyListItem

use of io.bitsquare.gui.util.CurrencyListItem in project bitsquare by bitsquare.

the class TradesChartsView method activate.

@Override
protected void activate() {
    // root.getParent() is null at initialize
    tabPaneSelectionModel = GUIUtil.getParentOfType(root, TabPane.class).getSelectionModel();
    selectedTabIndexListener = (observable, oldValue, newValue) -> model.setSelectedTabIndex((int) newValue);
    model.setSelectedTabIndex(tabPaneSelectionModel.getSelectedIndex());
    tabPaneSelectionModel.selectedIndexProperty().addListener(selectedTabIndexListener);
    currencyComboBox.setItems(model.getCurrencyListItems());
    currencyComboBox.setVisibleRowCount(25);
    if (model.showAllTradeCurrenciesProperty.get())
        currencyComboBox.getSelectionModel().select(0);
    else if (model.getSelectedCurrencyListItem().isPresent())
        currencyComboBox.getSelectionModel().select(model.getSelectedCurrencyListItem().get());
    currencyComboBox.setOnAction(e -> {
        CurrencyListItem selectedItem = currencyComboBox.getSelectionModel().getSelectedItem();
        if (selectedItem != null)
            model.onSetTradeCurrency(selectedItem.tradeCurrency);
    });
    toggleGroup.getToggles().get(model.tickUnit.ordinal()).setSelected(true);
    model.priceItems.addListener(itemsChangeListener);
    toggleGroup.selectedToggleProperty().addListener(timeUnitChangeListener);
    priceAxisY.widthProperty().addListener(priceAxisYWidthListener);
    volumeAxisY.widthProperty().addListener(volumeAxisYWidthListener);
    model.tradeStatisticsByCurrency.addListener(tradeStatisticsByCurrencyListener);
    priceAxisY.labelProperty().bind(priceColumnLabel);
    priceColumn.textProperty().bind(priceColumnLabel);
    currencySelectionBinding = EasyBind.combine(model.showAllTradeCurrenciesProperty, model.selectedTradeCurrencyProperty, (showAll, selectedTradeCurrency) -> {
        priceChart.setVisible(!showAll);
        priceChart.setManaged(!showAll);
        priceColumn.setSortable(!showAll);
        if (showAll) {
            volumeColumn.setText("Amount");
            priceColumnLabel.set("Price");
            if (!tableView.getColumns().contains(marketColumn))
                tableView.getColumns().add(1, marketColumn);
        } else {
            priceSeries.setName(selectedTradeCurrency.getName());
            String code = selectedTradeCurrency.getCode();
            volumeColumn.setText("Amount in " + code);
            priceColumnLabel.set(formatter.getPriceWithCurrencyCode(code));
            if (tableView.getColumns().contains(marketColumn))
                tableView.getColumns().remove(marketColumn);
        }
        return null;
    });
    currencySelectionSubscriber = currencySelectionBinding.subscribe((observable, oldValue, newValue) -> {
    });
    sortedList = new SortedList<>(model.tradeStatisticsByCurrency);
    sortedList.comparatorProperty().bind(tableView.comparatorProperty());
    tableView.setItems(sortedList);
    priceChart.setAnimated(model.preferences.getUseAnimations());
    volumeChart.setAnimated(model.preferences.getUseAnimations());
    priceAxisX.setTickLabelFormatter(getTimeAxisStringConverter());
    volumeAxisX.setTickLabelFormatter(getTimeAxisStringConverter());
    nrOfTradeStatisticsLabel.setText("Trades: " + model.tradeStatisticsByCurrency.size());
    UserThread.runAfter(this::updateChartData, 100, TimeUnit.MILLISECONDS);
}
Also used : MathUtils(io.bitsquare.common.util.MathUtils) Pos(javafx.geometry.Pos) javafx.scene.control(javafx.scene.control) Date(java.util.Date) SimpleStringProperty(javafx.beans.property.SimpleStringProperty) Coin(org.bitcoinj.core.Coin) LoggerFactory(org.slf4j.LoggerFactory) CandleStickChart(io.bitsquare.gui.main.market.trades.charts.price.CandleStickChart) FXCollections(javafx.collections.FXCollections) XYChart(javafx.scene.chart.XYChart) VBox(javafx.scene.layout.VBox) GUIUtil(io.bitsquare.gui.util.GUIUtil) Inject(javax.inject.Inject) Insets(javafx.geometry.Insets) ReadOnlyObjectWrapper(javafx.beans.property.ReadOnlyObjectWrapper) ListChangeListener(javafx.collections.ListChangeListener) TradeStatistics(io.bitsquare.trade.statistics.TradeStatistics) MonadicBinding(org.fxmisc.easybind.monadic.MonadicBinding) Callback(javafx.util.Callback) BSFormatter(io.bitsquare.gui.util.BSFormatter) SortedList(javafx.collections.transformation.SortedList) Pane(javafx.scene.layout.Pane) HBox(javafx.scene.layout.HBox) Logger(org.slf4j.Logger) VolumeChart(io.bitsquare.gui.main.market.trades.charts.volume.VolumeChart) CurrencyListItem(io.bitsquare.gui.util.CurrencyListItem) UserThread(io.bitsquare.common.UserThread) Fiat(org.bitcoinj.utils.Fiat) StringConverter(javafx.util.StringConverter) Subscription(org.fxmisc.easybind.Subscription) ActivatableViewAndModel(io.bitsquare.gui.common.view.ActivatableViewAndModel) TimeUnit(java.util.concurrent.TimeUnit) Priority(javafx.scene.layout.Priority) EasyBind(org.fxmisc.easybind.EasyBind) NumberAxis(javafx.scene.chart.NumberAxis) FxmlView(io.bitsquare.gui.common.view.FxmlView) CurrencyUtil(io.bitsquare.locale.CurrencyUtil) StringProperty(javafx.beans.property.StringProperty) ChangeListener(javafx.beans.value.ChangeListener) NotNull(org.jetbrains.annotations.NotNull) BSResources(io.bitsquare.locale.BSResources) CurrencyListItem(io.bitsquare.gui.util.CurrencyListItem)

Example 2 with CurrencyListItem

use of io.bitsquare.gui.util.CurrencyListItem in project bitsquare by bitsquare.

the class OfferBookChartView method activate.

@Override
protected void activate() {
    // root.getParent() is null at initialize
    tabPaneSelectionModel = GUIUtil.getParentOfType(root, TabPane.class).getSelectionModel();
    selectedTabIndexListener = (observable, oldValue, newValue) -> model.setSelectedTabIndex((int) newValue);
    model.setSelectedTabIndex(tabPaneSelectionModel.getSelectedIndex());
    tabPaneSelectionModel.selectedIndexProperty().addListener(selectedTabIndexListener);
    currencyComboBox.setItems(model.getCurrencyListItems());
    currencyComboBox.setVisibleRowCount(25);
    if (model.getSelectedCurrencyListItem().isPresent())
        currencyComboBox.getSelectionModel().select(model.getSelectedCurrencyListItem().get());
    currencyComboBox.setOnAction(e -> {
        CurrencyListItem selectedItem = currencyComboBox.getSelectionModel().getSelectedItem();
        if (selectedItem != null) {
            model.onSetTradeCurrency(selectedItem.tradeCurrency);
            updateChartData();
        }
    });
    model.currencyListItems.addListener(currencyListItemsListener);
    model.getOfferBookListItems().addListener(changeListener);
    tradeCurrencySubscriber = EasyBind.subscribe(model.selectedTradeCurrencyProperty, tradeCurrency -> {
        String code = tradeCurrency.getCode();
        areaChart.setTitle("Offer book for " + formatter.getCurrencyNameAndCurrencyPair(code));
        volumeColumnLabel.set("Amount in " + code);
        xAxis.setTickLabelFormatter(new StringConverter<Number>() {

            @Override
            public String toString(Number object) {
                final double doubleValue = (double) object;
                if (CurrencyUtil.isCryptoCurrency(model.getCurrencyCode())) {
                    final String withPrecision3 = formatter.formatRoundedDoubleWithPrecision(doubleValue, 3);
                    if (withPrecision3.equals("0.000"))
                        return formatter.formatRoundedDoubleWithPrecision(doubleValue, 8);
                    else
                        return withPrecision3;
                } else {
                    return formatter.formatRoundedDoubleWithPrecision(doubleValue, 2);
                }
            }

            @Override
            public Number fromString(String string) {
                return null;
            }
        });
        if (CurrencyUtil.isCryptoCurrency(code)) {
            if (bottomHBox.getChildren().size() == 2 && bottomHBox.getChildren().get(0).getUserData().equals("BUY")) {
                bottomHBox.getChildren().get(0).toFront();
                reverseTableColumns();
            }
            buyOfferHeaderLabel.setText("Offers to sell " + code + " for BTC");
            buyOfferButton.setText("I want to buy " + code + " (sell BTC)");
            sellOfferHeaderLabel.setText("Offers to buy " + code + " with BTC");
            sellOfferButton.setText("I want to sell " + code + " (buy BTC)");
            priceColumnLabel.set("Price in BTC");
        } else {
            if (bottomHBox.getChildren().size() == 2 && bottomHBox.getChildren().get(0).getUserData().equals("SELL")) {
                bottomHBox.getChildren().get(0).toFront();
                reverseTableColumns();
            }
            buyOfferHeaderLabel.setText("Offers to buy BTC with " + code);
            buyOfferButton.setText("I want to sell BTC for " + code);
            sellOfferHeaderLabel.setText("Offers to sell BTC for " + code);
            sellOfferButton.setText("I want to buy BTC with " + code);
            priceColumnLabel.set("Price in " + code);
        }
        xAxis.setLabel(formatter.getPriceWithCurrencyCode(code));
        seriesBuy.setName(buyOfferHeaderLabel.getText() + "   ");
        seriesSell.setName(sellOfferHeaderLabel.getText());
    });
    buyOfferTableView.setItems(model.getTopBuyOfferList());
    sellOfferTableView.setItems(model.getTopSellOfferList());
    buyTableRowSelectionListener = (observable, oldValue, newValue) -> {
        model.preferences.setSellScreenCurrencyCode(model.getCurrencyCode());
        navigation.navigateTo(MainView.class, SellOfferView.class);
    };
    sellTableRowSelectionListener = (observable, oldValue, newValue) -> {
        model.preferences.setBuyScreenCurrencyCode(model.getCurrencyCode());
        navigation.navigateTo(MainView.class, BuyOfferView.class);
    };
    buyOfferTableView.getSelectionModel().selectedItemProperty().addListener(buyTableRowSelectionListener);
    sellOfferTableView.getSelectionModel().selectedItemProperty().addListener(sellTableRowSelectionListener);
    updateChartData();
}
Also used : Pos(javafx.geometry.Pos) MainView(io.bitsquare.gui.main.MainView) javafx.scene.control(javafx.scene.control) SimpleStringProperty(javafx.beans.property.SimpleStringProperty) LoggerFactory(org.slf4j.LoggerFactory) FXCollections(javafx.collections.FXCollections) XYChart(javafx.scene.chart.XYChart) VBox(javafx.scene.layout.VBox) OfferBookListItem(io.bitsquare.gui.main.offer.offerbook.OfferBookListItem) GUIUtil(io.bitsquare.gui.util.GUIUtil) Inject(javax.inject.Inject) Insets(javafx.geometry.Insets) ReadOnlyObjectWrapper(javafx.beans.property.ReadOnlyObjectWrapper) ListChangeListener(javafx.collections.ListChangeListener) Navigation(io.bitsquare.gui.Navigation) Callback(javafx.util.Callback) BSFormatter(io.bitsquare.gui.util.BSFormatter) HBox(javafx.scene.layout.HBox) Logger(org.slf4j.Logger) CurrencyListItem(io.bitsquare.gui.util.CurrencyListItem) UserThread(io.bitsquare.common.UserThread) StringConverter(javafx.util.StringConverter) Subscription(org.fxmisc.easybind.Subscription) ActivatableViewAndModel(io.bitsquare.gui.common.view.ActivatableViewAndModel) BuyOfferView(io.bitsquare.gui.main.offer.BuyOfferView) Priority(javafx.scene.layout.Priority) Offer(io.bitsquare.trade.offer.Offer) EasyBind(org.fxmisc.easybind.EasyBind) Tuple4(io.bitsquare.common.util.Tuple4) ImageView(javafx.scene.image.ImageView) SellOfferView(io.bitsquare.gui.main.offer.SellOfferView) AreaChart(javafx.scene.chart.AreaChart) ObservableValue(javafx.beans.value.ObservableValue) ObservableList(javafx.collections.ObservableList) NumberAxis(javafx.scene.chart.NumberAxis) FxmlView(io.bitsquare.gui.common.view.FxmlView) CurrencyUtil(io.bitsquare.locale.CurrencyUtil) StringProperty(javafx.beans.property.StringProperty) ChangeListener(javafx.beans.value.ChangeListener) Collections(java.util.Collections) CurrencyListItem(io.bitsquare.gui.util.CurrencyListItem) StringConverter(javafx.util.StringConverter)

Aggregations

UserThread (io.bitsquare.common.UserThread)2 ActivatableViewAndModel (io.bitsquare.gui.common.view.ActivatableViewAndModel)2 FxmlView (io.bitsquare.gui.common.view.FxmlView)2 BSFormatter (io.bitsquare.gui.util.BSFormatter)2 CurrencyListItem (io.bitsquare.gui.util.CurrencyListItem)2 GUIUtil (io.bitsquare.gui.util.GUIUtil)2 CurrencyUtil (io.bitsquare.locale.CurrencyUtil)2 ReadOnlyObjectWrapper (javafx.beans.property.ReadOnlyObjectWrapper)2 SimpleStringProperty (javafx.beans.property.SimpleStringProperty)2 StringProperty (javafx.beans.property.StringProperty)2 ChangeListener (javafx.beans.value.ChangeListener)2 FXCollections (javafx.collections.FXCollections)2 ListChangeListener (javafx.collections.ListChangeListener)2 Insets (javafx.geometry.Insets)2 Pos (javafx.geometry.Pos)2 NumberAxis (javafx.scene.chart.NumberAxis)2 XYChart (javafx.scene.chart.XYChart)2 javafx.scene.control (javafx.scene.control)2 HBox (javafx.scene.layout.HBox)2 Priority (javafx.scene.layout.Priority)2