mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-09-28 23:31:43 +12:00
Improve options validation display
This commit is contained in:
parent
ce6a56d234
commit
d1953fbe10
3 changed files with 24 additions and 11 deletions
|
@ -57,7 +57,7 @@ dependencies {
|
|||
implementation 'io.xpipe:modulefs:0.1.4'
|
||||
implementation 'com.jfoenix:jfoenix:9.0.10'
|
||||
implementation 'org.controlsfx:controlsfx:11.1.2'
|
||||
implementation 'net.synedra:validatorfx:0.3.1'
|
||||
implementation 'net.synedra:validatorfx:0.4.2'
|
||||
implementation ('io.github.mkpaz:atlantafx-base:2.0.1') {
|
||||
exclude group: 'org.openjfx', module: 'javafx-base'
|
||||
exclude group: 'org.openjfx', module: 'javafx-controls'
|
||||
|
|
|
@ -30,6 +30,8 @@ public class OptionsBuilder {
|
|||
private ObservableValue<String> description;
|
||||
private String longDescription;
|
||||
private Comp<?> comp;
|
||||
private Comp<?> lastCompHeadReference;
|
||||
private ObservableValue<String> lastNameReference;
|
||||
|
||||
public Validator buildEffectiveValidator() {
|
||||
return new ChainedValidator(allValidators);
|
||||
|
@ -85,22 +87,31 @@ public class OptionsBuilder {
|
|||
description = null;
|
||||
longDescription = null;
|
||||
name = null;
|
||||
lastNameReference = null;
|
||||
comp = null;
|
||||
lastCompHeadReference = null;
|
||||
entries.add(entry);
|
||||
}
|
||||
|
||||
public OptionsBuilder sub(OptionsBuilder builder) {
|
||||
props.addAll(builder.props);
|
||||
allValidators.add(builder.buildEffectiveValidator());
|
||||
pushComp(builder.buildComp());
|
||||
return this;
|
||||
return sub(builder, null);
|
||||
}
|
||||
|
||||
public OptionsBuilder sub(OptionsBuilder builder, Property<?> prop) {
|
||||
props.addAll(builder.props);
|
||||
allValidators.add(builder.buildEffectiveValidator());
|
||||
props.add(prop);
|
||||
if (prop != null) {
|
||||
props.add(prop);
|
||||
}
|
||||
var c = builder.lastCompHeadReference;
|
||||
var n = builder.lastNameReference;
|
||||
pushComp(builder.buildComp());
|
||||
if (c != null) {
|
||||
lastCompHeadReference = c;
|
||||
}
|
||||
if (n != null) {
|
||||
lastNameReference = n;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -124,23 +135,23 @@ public class OptionsBuilder {
|
|||
}
|
||||
|
||||
public OptionsBuilder decorate(Check c) {
|
||||
comp.apply(s -> c.decorates(s.get()));
|
||||
lastCompHeadReference.apply(s -> c.decorates(s.get()));
|
||||
return this;
|
||||
}
|
||||
|
||||
public OptionsBuilder disable() {
|
||||
comp.disable(new SimpleBooleanProperty(true));
|
||||
lastCompHeadReference.disable(new SimpleBooleanProperty(true));
|
||||
return this;
|
||||
}
|
||||
|
||||
public OptionsBuilder nonNull() {
|
||||
var e = name;
|
||||
var e = lastNameReference;
|
||||
var p = props.get(props.size() - 1);
|
||||
return decorate(Validator.nonNull(ownValidator, e, p));
|
||||
}
|
||||
|
||||
public OptionsBuilder nonNull(Validator v) {
|
||||
var e = name;
|
||||
var e = lastNameReference;
|
||||
var p = props.get(props.size() - 1);
|
||||
return decorate(Validator.nonNull(v, e, p));
|
||||
}
|
||||
|
@ -148,6 +159,7 @@ public class OptionsBuilder {
|
|||
private void pushComp(Comp<?> comp) {
|
||||
finishCurrent();
|
||||
this.comp = comp;
|
||||
this.lastCompHeadReference = comp;
|
||||
}
|
||||
|
||||
public OptionsBuilder stringArea(Property<String> prop, boolean lazy) {
|
||||
|
@ -196,6 +208,7 @@ public class OptionsBuilder {
|
|||
public OptionsBuilder name(String nameKey) {
|
||||
finishCurrent();
|
||||
name = AppI18n.observable(nameKey);
|
||||
lastNameReference = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ dependencies {
|
|||
compileOnly project(':core')
|
||||
compileOnly project(':beacon')
|
||||
compileOnly project(':app')
|
||||
compileOnly 'net.synedra:validatorfx:0.3.1'
|
||||
compileOnly 'net.synedra:validatorfx:0.4.2'
|
||||
compileOnly ('io.github.mkpaz:atlantafx-base:2.0.1') {
|
||||
exclude group: 'org.openjfx', module: 'javafx-base'
|
||||
exclude group: 'org.openjfx', module: 'javafx-controls'
|
||||
|
|
Loading…
Reference in a new issue