use of javafx.beans.property.SimpleObjectProperty in project jgnash by ccavanaugh.
the class BudgetGoalsDialogController method initialize.
@FXML
private void initialize() {
buttonBar.buttonOrderProperty().bind(Options.buttonOrderProperty());
endRowSpinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 1));
startRowSpinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 1));
periodComboBox.getItems().addAll(Period.values());
patternComboBox.getItems().addAll(Pattern.values());
patternComboBox.setValue(Pattern.EveryRow);
fillAllDecimalTextField.emptyWhenZeroProperty().set(false);
fillPatternAmountDecimalTextField.emptyWhenZeroProperty().set(false);
fillAllDecimalTextField.setDecimal(BigDecimal.ZERO);
fillPatternAmountDecimalTextField.setDecimal(BigDecimal.ZERO);
goalTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
goalTable.setEditable(true);
final TableColumn<BudgetPeriodDescriptor, String> periodColumn = new TableColumn<>(resources.getString("Column.Period"));
periodColumn.setEditable(false);
periodColumn.setCellValueFactory(param -> {
if (param != null) {
return new SimpleStringProperty(param.getValue().getPeriodDescription());
}
return new SimpleStringProperty("");
});
periodColumn.setSortable(false);
goalTable.getColumns().add(periodColumn);
final TableColumn<BudgetPeriodDescriptor, BigDecimal> amountColumn = new TableColumn<>(resources.getString("Column.Amount"));
amountColumn.setEditable(true);
amountColumn.setSortable(false);
amountColumn.setCellValueFactory(param -> {
if (param != null) {
final BudgetPeriodDescriptor descriptor = param.getValue();
final BigDecimal goal = budgetGoal.get().getGoal(descriptor.getStartPeriod(), descriptor.getEndPeriod());
return new SimpleObjectProperty<>(goal.setScale(accountProperty().get().getCurrencyNode().getScale(), MathConstants.roundingMode));
}
return new SimpleObjectProperty<>(BigDecimal.ZERO);
});
amountColumn.setCellFactory(cell -> new BigDecimalTableCell<>(numberFormat));
/// fTextFieldTableCell.forTableColumn()
amountColumn.setOnEditCommit(event -> {
final BudgetPeriodDescriptor descriptor = event.getTableView().getItems().get(event.getTablePosition().getRow());
budgetGoalProperty().get().setGoal(descriptor.getStartPeriod(), descriptor.getEndPeriod(), event.getNewValue());
});
goalTable.getColumns().add(amountColumn);
periodComboBox.valueProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
budgetGoalProperty().get().setBudgetPeriod(newValue);
final List<BudgetPeriodDescriptor> descriptors = getDescriptors();
goalTable.getItems().setAll(descriptors);
descriptorSize.set(descriptors.size());
}
});
budgetGoalProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
periodComboBox.setValue(newValue.getBudgetPeriod());
}
});
// the spinner factory max values do not like being bound; Set value instead
descriptorSize.addListener((observable, oldValue, newValue) -> {
((SpinnerValueFactory.IntegerSpinnerValueFactory) endRowSpinner.getValueFactory()).setMax(newValue.intValue());
((SpinnerValueFactory.IntegerSpinnerValueFactory) startRowSpinner.getValueFactory()).setMax(newValue.intValue());
endRowSpinner.getValueFactory().setValue(newValue.intValue());
});
// account has changed; update currency related properties
accountProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
final CurrencyNode currencyNode = newValue.getCurrencyNode();
currencyLabel.setText(currencyNode.getSymbol());
fillAllDecimalTextField.scaleProperty().set(currencyNode.getScale());
fillAllDecimalTextField.minScaleProperty().set(currencyNode.getScale());
fillPatternAmountDecimalTextField.scaleProperty().set(currencyNode.getScale());
fillPatternAmountDecimalTextField.minScaleProperty().set(currencyNode.getScale());
final NumberFormat decimalFormat = NumberFormat.getInstance();
if (decimalFormat instanceof DecimalFormat) {
decimalFormat.setMinimumFractionDigits(currencyNode.getScale());
decimalFormat.setMaximumFractionDigits(currencyNode.getScale());
}
numberFormat.set(decimalFormat);
}
});
}
use of javafx.beans.property.SimpleObjectProperty 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);
}));
}
});
}
Aggregations