![JAR search and dependency download from the Maven repository](/logo.png)
com.netopyr.reduxfx.vscenegraph.property.VProperty Maven / Gradle / Ivy
package com.netopyr.reduxfx.vscenegraph.property;
import io.vavr.control.Option;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public final class VProperty {
public enum Phase {STRUCTURE, HIDE_STAGE, DEFAULT, SHOW_STAGE}
private final Phase phase;
private final boolean isValueDefined;
private final Object value;
private final Option changeListener;
private final Option invalidationListener;
public VProperty(Phase phase,
Object value,
Option changeListener,
Option invalidationListener) {
this.phase = phase;
this.isValueDefined = true;
this.value = value;
this.changeListener = changeListener;
this.invalidationListener = invalidationListener;
}
public VProperty(Phase phase,
Option changeListener,
Option invalidationListener) {
this.phase = phase;
this.isValueDefined = false;
this.value = null;
this.changeListener = changeListener;
this.invalidationListener = invalidationListener;
}
public Phase getPhase() {
return phase;
}
public boolean isValueDefined() {
return isValueDefined;
}
public Object getValue() {
if (!isValueDefined) {
throw new IllegalStateException("No value defined");
}
return value;
}
public Option getChangeListener() {
return changeListener;
}
public Option getInvalidationListener() {
return invalidationListener;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
.append("phase", phase)
.append("isValueDefined", isValueDefined)
.append("value", value)
.append("changeListener", changeListener.stringPrefix())
.append("invalidationListener", invalidationListener.stringPrefix())
.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy