mirror of
https://github.com/frosch95/SmartCSV.fx.git
synced 2026-04-11 13:38:23 +02:00
min and max value spinner are dependent
This commit is contained in:
@@ -26,12 +26,14 @@
|
|||||||
|
|
||||||
package ninja.javafx.smartcsv.fx.validation;
|
package ninja.javafx.smartcsv.fx.validation;
|
||||||
|
|
||||||
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.beans.property.SimpleStringProperty;
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
import javafx.beans.property.StringProperty;
|
import javafx.beans.property.StringProperty;
|
||||||
import javafx.beans.value.ChangeListener;
|
import javafx.beans.value.ChangeListener;
|
||||||
import javafx.beans.value.ObservableValue;
|
import javafx.beans.value.ObservableValue;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
|
import javafx.scene.control.SpinnerValueFactory.IntegerSpinnerValueFactory;
|
||||||
import ninja.javafx.smartcsv.fx.FXMLController;
|
import ninja.javafx.smartcsv.fx.FXMLController;
|
||||||
import ninja.javafx.smartcsv.validation.ValidationConfiguration;
|
import ninja.javafx.smartcsv.validation.ValidationConfiguration;
|
||||||
import org.fxmisc.richtext.CodeArea;
|
import org.fxmisc.richtext.CodeArea;
|
||||||
@@ -51,6 +53,7 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
import static java.util.Arrays.asList;
|
import static java.util.Arrays.asList;
|
||||||
import static java.util.stream.Collectors.joining;
|
import static java.util.stream.Collectors.joining;
|
||||||
|
import static javafx.beans.binding.Bindings.when;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* controller for editing column validations
|
* controller for editing column validations
|
||||||
@@ -173,8 +176,7 @@ public class ValidationEditorController extends FXMLController {
|
|||||||
@Override
|
@Override
|
||||||
public void initialize(URL location, ResourceBundle resources) {
|
public void initialize(URL location, ResourceBundle resources) {
|
||||||
|
|
||||||
minLengthSpinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(0, Integer.MAX_VALUE, 0));
|
initMinMaxSpinner();
|
||||||
maxLengthSpinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(0, Integer.MAX_VALUE, 0));
|
|
||||||
|
|
||||||
initSpinner(minLengthSpinner, enableMinLengthRule);
|
initSpinner(minLengthSpinner, enableMinLengthRule);
|
||||||
initSpinner(maxLengthSpinner, enableMaxLengthRule);
|
initSpinner(maxLengthSpinner, enableMaxLengthRule);
|
||||||
@@ -190,22 +192,23 @@ public class ValidationEditorController extends FXMLController {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void listenToExcludingRuleCombinations() {
|
private void initMinMaxSpinner() {
|
||||||
addDependencyListener(enableIntegerRule, enableDoubleRule, enableAlphanumericRule, enableDateRule);
|
IntegerSpinnerValueFactory minValueFactory = new IntegerSpinnerValueFactory(0, Integer.MAX_VALUE, 0);
|
||||||
addDependencyListener(enableDoubleRule, enableIntegerRule, enableAlphanumericRule, enableDateRule);
|
minLengthSpinner.setValueFactory(minValueFactory);
|
||||||
addDependencyListener(enableAlphanumericRule, enableIntegerRule, enableDoubleRule, enableDateRule);
|
IntegerSpinnerValueFactory maxValueFactory = new IntegerSpinnerValueFactory(0, Integer.MAX_VALUE, 0);
|
||||||
addDependencyListener(enableDateRule, enableIntegerRule, enableDoubleRule, enableAlphanumericRule);
|
maxLengthSpinner.setValueFactory(maxValueFactory);
|
||||||
|
|
||||||
|
minValueFactory.maxProperty().bind(
|
||||||
|
when(enableMaxLengthRule.selectedProperty()).
|
||||||
|
then(maxLengthSpinner.valueProperty()).
|
||||||
|
otherwise(Integer.MAX_VALUE));
|
||||||
|
maxValueFactory.minProperty().bind(
|
||||||
|
when(enableMinLengthRule.selectedProperty()).
|
||||||
|
then(minLengthSpinner.valueProperty()).
|
||||||
|
otherwise(0));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addDependencyListener(CheckBox rule, CheckBox... dependentRules) {
|
|
||||||
rule.selectedProperty().addListener((observable, oldValue, newValue) -> {
|
|
||||||
if (newValue) {
|
|
||||||
for (CheckBox dependentRule: dependentRules) {
|
|
||||||
dependentRule.selectedProperty().setValue(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSelectedColumn() {
|
public String getSelectedColumn() {
|
||||||
return selectedColumn.get();
|
return selectedColumn.get();
|
||||||
@@ -291,7 +294,23 @@ public class ValidationEditorController extends FXMLController {
|
|||||||
validationConfiguration.setValueOfRuleFor(selectedColumn.getValue(), null);
|
validationConfiguration.setValueOfRuleFor(selectedColumn.getValue(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void listenToExcludingRuleCombinations() {
|
||||||
|
addDependencyListener(enableIntegerRule, enableDoubleRule, enableAlphanumericRule, enableDateRule);
|
||||||
|
addDependencyListener(enableDoubleRule, enableIntegerRule, enableAlphanumericRule, enableDateRule);
|
||||||
|
addDependencyListener(enableAlphanumericRule, enableIntegerRule, enableDoubleRule, enableDateRule);
|
||||||
|
addDependencyListener(enableDateRule, enableIntegerRule, enableDoubleRule, enableAlphanumericRule);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addDependencyListener(CheckBox rule, CheckBox... dependentRules) {
|
||||||
|
rule.selectedProperty().addListener((observable, oldValue, newValue) -> {
|
||||||
|
if (newValue) {
|
||||||
|
for (CheckBox dependentRule: dependentRules) {
|
||||||
|
dependentRule.selectedProperty().setValue(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateForm() {
|
private void updateForm() {
|
||||||
|
|||||||
Reference in New Issue
Block a user