use of jgnash.engine.ExchangeRateHistoryNode in project jgnash by ccavanaugh.
the class EditExchangeRatesController method handleDeleteAction.
@FXML
private void handleDeleteAction() {
final Engine engine = EngineFactory.getEngine(EngineFactory.DEFAULT);
Objects.requireNonNull(engine);
// Create a defensive list of the selected history nodes
final List<ExchangeRateHistoryNode> historyNodes = new ArrayList<>(exchangeRateTable.getSelectionModel().getSelectedItems());
for (final ExchangeRateHistoryNode historyNode : historyNodes) {
engine.removeExchangeRateHistory(selectedExchangeRate.get(), historyNode);
}
}
use of jgnash.engine.ExchangeRateHistoryNode in project jgnash by ccavanaugh.
the class CurrencyExchangeDialog method updateForm.
private void updateForm() {
int row = table.getSelectedRow();
if (row >= 0) {
ExchangeRateHistoryNode node = getSelectedExchangeRate().getHistory().get(row);
rateField.setDecimal(node.getRate());
dateField.setDate(node.getLocalDate());
}
}
use of jgnash.engine.ExchangeRateHistoryNode in project jgnash by ccavanaugh.
the class EditExchangeRatesController method initialize.
@FXML
void initialize() {
exchangeRateField.scaleProperty().set(MathConstants.EXCHANGE_RATE_ACCURACY);
exchangeRateTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
exchangeRateTable.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
final TableColumn<ExchangeRateHistoryNode, LocalDate> dateColumn = new TableColumn<>(resources.getString("Column.Date"));
dateColumn.setCellValueFactory(param -> new SimpleObjectProperty<>(param.getValue().getLocalDate()));
dateColumn.setCellFactory(cell -> new ShortDateTableCell<>());
exchangeRateTable.getColumns().add(dateColumn);
final NumberFormat decimalFormat = NumberFormat.getInstance();
if (decimalFormat instanceof DecimalFormat) {
decimalFormat.setMinimumFractionDigits(MathConstants.EXCHANGE_RATE_ACCURACY);
decimalFormat.setMaximumFractionDigits(MathConstants.EXCHANGE_RATE_ACCURACY);
}
final TableColumn<ExchangeRateHistoryNode, BigDecimal> rateColumn = new TableColumn<>(resources.getString("Column.ExchangeRate"));
rateColumn.setCellValueFactory(param -> {
if (param == null || selectedExchangeRate.get() == null) {
return null;
}
if (selectedExchangeRate.get().getRateId().startsWith(baseCurrencyComboBox.getValue().getSymbol())) {
return new SimpleObjectProperty<>(param.getValue().getRate());
}
return new SimpleObjectProperty<>(BigDecimal.ONE.divide(param.getValue().getRate(), MathConstants.mathContext));
});
rateColumn.setCellFactory(cell -> new BigDecimalTableCell<>(decimalFormat));
exchangeRateTable.getColumns().add(rateColumn);
baseCurrencyComboBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> handleExchangeRateSelectionChange());
targetCurrencyComboBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> handleExchangeRateSelectionChange());
selectedHistoryNode.bind(exchangeRateTable.getSelectionModel().selectedItemProperty());
deleteButton.disableProperty().bind(selectedHistoryNode.isNull());
clearButton.disableProperty().bind(exchangeRateField.textProperty().isEmpty());
addButton.disableProperty().bind(exchangeRateField.textProperty().isEmpty().or(Bindings.equal(baseCurrencyComboBox.getSelectionModel().selectedItemProperty(), targetCurrencyComboBox.getSelectionModel().selectedItemProperty())));
selectedExchangeRate.addListener((observable, oldValue, newValue) -> Platform.runLater(EditExchangeRatesController.this::loadExchangeRateHistory));
selectedHistoryNode.addListener((observable, oldValue, newValue) -> Platform.runLater(EditExchangeRatesController.this::updateForm));
MessageBus.getInstance().registerListener(this, MessageChannel.COMMODITY);
// Install a listener to unregister from the message bus when the window closes
parent.addListener((observable, oldValue, scene) -> {
if (scene != null) {
scene.windowProperty().addListener((observable1, oldValue1, window) -> window.addEventHandler(WindowEvent.WINDOW_HIDING, event -> {
handleStopAction();
Logger.getLogger(EditExchangeRatesController.class.getName()).info("Unregistered from the message bus");
MessageBus.getInstance().unregisterListener(EditExchangeRatesController.this, MessageChannel.COMMODITY);
}));
}
});
}
use of jgnash.engine.ExchangeRateHistoryNode in project jgnash by ccavanaugh.
the class CurrencyExchangeDialog method removeExchangeRates.
private void removeExchangeRates() {
ExchangeRate rate = getSelectedExchangeRate();
if (rate != null) {
int[] rows = table.getSelectedRows();
List<ExchangeRateHistoryNode> history = rate.getHistory();
/* Capture a list of references */
ExchangeRateHistoryNode[] temp = new ExchangeRateHistoryNode[rows.length];
for (int i = 0; i < rows.length; i++) {
temp[i] = history.get(rows[i]);
}
final Engine engine = EngineFactory.getEngine(EngineFactory.DEFAULT);
if (engine != null) {
for (int i = rows.length - 1; i >= 0; i--) {
engine.removeExchangeRateHistory(rate, temp[i]);
}
}
}
}
Aggregations