mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-09-20 13:04:40 -04:00
run trade charts view listeners on user thread to fix npe
This commit is contained in:
parent
fff0fa0186
commit
5720ee74b0
1 changed files with 38 additions and 35 deletions
|
@ -208,29 +208,29 @@ public class TradesChartsView extends ActivatableViewAndModel<VBox, TradesCharts
|
||||||
|
|
||||||
root.getChildren().addAll(toolBox, priceChartPane, volumeChartPane, tableView, footer);
|
root.getChildren().addAll(toolBox, priceChartPane, volumeChartPane, tableView, footer);
|
||||||
|
|
||||||
timeUnitChangeListener = (observable, oldValue, newValue) -> {
|
timeUnitChangeListener = (observable, oldValue, newValue) -> UserThread.execute(() -> {
|
||||||
if (newValue != null) {
|
if (newValue != null) {
|
||||||
model.setTickUnit((TradesChartsViewModel.TickUnit) newValue.getUserData());
|
model.setTickUnit((TradesChartsViewModel.TickUnit) newValue.getUserData());
|
||||||
priceAxisX.setTickLabelFormatter(getTimeAxisStringConverter());
|
priceAxisX.setTickLabelFormatter(getTimeAxisStringConverter());
|
||||||
volumeAxisX.setTickLabelFormatter(getTimeAxisStringConverter());
|
volumeAxisX.setTickLabelFormatter(getTimeAxisStringConverter());
|
||||||
volumeInUsdAxisX.setTickLabelFormatter(getTimeAxisStringConverter());
|
volumeInUsdAxisX.setTickLabelFormatter(getTimeAxisStringConverter());
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
priceAxisYWidthListener = (observable, oldValue, newValue) -> {
|
priceAxisYWidthListener = (observable, oldValue, newValue) -> UserThread.execute(() -> {
|
||||||
priceAxisYWidth = (double) newValue;
|
priceAxisYWidth = (double) newValue;
|
||||||
layoutChart();
|
layoutChart();
|
||||||
};
|
});
|
||||||
volumeAxisYWidthListener = (observable, oldValue, newValue) -> {
|
volumeAxisYWidthListener = (observable, oldValue, newValue) -> UserThread.execute(() -> {
|
||||||
volumeAxisYWidth = (double) newValue;
|
volumeAxisYWidth = (double) newValue;
|
||||||
layoutChart();
|
layoutChart();
|
||||||
};
|
});
|
||||||
tradeStatisticsByCurrencyListener = c -> {
|
tradeStatisticsByCurrencyListener = c -> UserThread.execute(() -> {
|
||||||
nrOfTradeStatisticsLabel.setText(Res.get("market.trades.nrOfTrades", model.tradeStatisticsByCurrency.size()));
|
nrOfTradeStatisticsLabel.setText(Res.get("market.trades.nrOfTrades", model.tradeStatisticsByCurrency.size()));
|
||||||
fillList();
|
fillList();
|
||||||
};
|
});
|
||||||
parentHeightListener = (observable, oldValue, newValue) -> layout();
|
parentHeightListener = (observable, oldValue, newValue) -> UserThread.execute(this::layout);
|
||||||
|
|
||||||
priceColumnLabelListener = (o, oldVal, newVal) -> priceColumn.setGraphic(new AutoTooltipLabel(newVal));
|
priceColumnLabelListener = (o, oldVal, newVal) -> UserThread.execute(() -> priceColumn.setGraphic(new AutoTooltipLabel(newVal)));
|
||||||
|
|
||||||
// Need to render on next frame as otherwise there are issues in the chart rendering
|
// Need to render on next frame as otherwise there are issues in the chart rendering
|
||||||
itemsChangeListener = c -> UserThread.execute(this::updateChartData);
|
itemsChangeListener = c -> UserThread.execute(this::updateChartData);
|
||||||
|
@ -238,31 +238,34 @@ public class TradesChartsView extends ActivatableViewAndModel<VBox, TradesCharts
|
||||||
currencySelectionBinding = EasyBind.combine(
|
currencySelectionBinding = EasyBind.combine(
|
||||||
model.showAllTradeCurrenciesProperty, model.selectedTradeCurrencyProperty,
|
model.showAllTradeCurrenciesProperty, model.selectedTradeCurrencyProperty,
|
||||||
(showAll, selectedTradeCurrency) -> {
|
(showAll, selectedTradeCurrency) -> {
|
||||||
priceChart.setVisible(!showAll);
|
UserThread.execute(() -> {
|
||||||
priceChart.setManaged(!showAll);
|
priceChart.setVisible(!showAll);
|
||||||
priceColumn.setSortable(!showAll);
|
priceChart.setManaged(!showAll);
|
||||||
|
priceColumn.setSortable(!showAll);
|
||||||
|
|
||||||
if (showAll) {
|
if (showAll) {
|
||||||
volumeColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.amount")));
|
volumeColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.amount")));
|
||||||
priceColumnLabel.set(Res.get("shared.price"));
|
priceColumnLabel.set(Res.get("shared.price"));
|
||||||
if (!tableView.getColumns().contains(marketColumn))
|
if (!tableView.getColumns().contains(marketColumn))
|
||||||
tableView.getColumns().add(1, marketColumn);
|
tableView.getColumns().add(1, marketColumn);
|
||||||
|
|
||||||
|
volumeChart.setPrefHeight(volumeChart.getMaxHeight());
|
||||||
|
volumeInUsdChart.setPrefHeight(volumeInUsdChart.getMaxHeight());
|
||||||
|
} else {
|
||||||
|
volumeChart.setPrefHeight(volumeChart.getMinHeight());
|
||||||
|
volumeInUsdChart.setPrefHeight(volumeInUsdChart.getMinHeight());
|
||||||
|
priceSeries.setName(selectedTradeCurrency.getName());
|
||||||
|
String code = selectedTradeCurrency.getCode();
|
||||||
|
volumeColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.amountWithCur", code)));
|
||||||
|
|
||||||
|
priceColumnLabel.set(CurrencyUtil.getPriceWithCurrencyCode(code));
|
||||||
|
|
||||||
|
tableView.getColumns().remove(marketColumn);
|
||||||
|
}
|
||||||
|
|
||||||
|
layout();
|
||||||
|
});
|
||||||
|
|
||||||
volumeChart.setPrefHeight(volumeChart.getMaxHeight());
|
|
||||||
volumeInUsdChart.setPrefHeight(volumeInUsdChart.getMaxHeight());
|
|
||||||
} else {
|
|
||||||
volumeChart.setPrefHeight(volumeChart.getMinHeight());
|
|
||||||
volumeInUsdChart.setPrefHeight(volumeInUsdChart.getMinHeight());
|
|
||||||
priceSeries.setName(selectedTradeCurrency.getName());
|
|
||||||
String code = selectedTradeCurrency.getCode();
|
|
||||||
volumeColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.amountWithCur", code)));
|
|
||||||
|
|
||||||
priceColumnLabel.set(CurrencyUtil.getPriceWithCurrencyCode(code));
|
|
||||||
|
|
||||||
tableView.getColumns().remove(marketColumn);
|
|
||||||
}
|
|
||||||
|
|
||||||
layout();
|
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -286,14 +289,14 @@ public class TradesChartsView extends ActivatableViewAndModel<VBox, TradesCharts
|
||||||
currencyComboBox.getSelectionModel().select(model.getSelectedCurrencyListItem().get());
|
currencyComboBox.getSelectionModel().select(model.getSelectedCurrencyListItem().get());
|
||||||
currencyComboBox.getEditor().setText(new CurrencyStringConverter(currencyComboBox).toString(currencyComboBox.getSelectionModel().getSelectedItem()));
|
currencyComboBox.getEditor().setText(new CurrencyStringConverter(currencyComboBox).toString(currencyComboBox.getSelectionModel().getSelectedItem()));
|
||||||
|
|
||||||
currencyComboBox.setOnChangeConfirmed(e -> {
|
currencyComboBox.setOnChangeConfirmed(e -> UserThread.execute(() -> {
|
||||||
if (currencyComboBox.getEditor().getText().isEmpty())
|
if (currencyComboBox.getEditor().getText().isEmpty())
|
||||||
currencyComboBox.getSelectionModel().select(SHOW_ALL);
|
currencyComboBox.getSelectionModel().select(SHOW_ALL);
|
||||||
CurrencyListItem selectedItem = currencyComboBox.getSelectionModel().getSelectedItem();
|
CurrencyListItem selectedItem = currencyComboBox.getSelectionModel().getSelectedItem();
|
||||||
if (selectedItem != null) {
|
if (selectedItem != null) {
|
||||||
model.onSetTradeCurrency(selectedItem.tradeCurrency);
|
model.onSetTradeCurrency(selectedItem.tradeCurrency);
|
||||||
}
|
}
|
||||||
});
|
}));
|
||||||
|
|
||||||
toggleGroup.getToggles().get(model.tickUnit.ordinal()).setSelected(true);
|
toggleGroup.getToggles().get(model.tickUnit.ordinal()).setSelected(true);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue