/**
* @param newBeanType
* bean type
* @param newPropertyName
* bean property name
* @param newSubject
* property value
*/
public ObservableMapBuffering(final Class<?> newBeanType, final String newPropertyName,
final ObservableMap<K, E> newSubject)
{
super(FXCollections.observableHashMap());
if (newBeanType != null || !(newSubject instanceof ReadOnlyProperty<?>))
{
beanType = newBeanType;
}
else
{
final Object bean = ((ReadOnlyProperty<?>) newSubject).getBean();
beanType = (bean != null ? bean.getClass() : null);
}
if (newPropertyName != null || !(newSubject instanceof ReadOnlyProperty<?>))
{
propertyName = newPropertyName;
}
else
{
propertyName = ((ReadOnlyProperty<?>) newSubject).getName();
}
subject = Objects.requireNonNull(newSubject);
putAll(subject);
thisListener = c -> {
// TODO: Workaround for https://bugs.openjdk.java.net/browse/JDK-8136465
if (!reverting)
{
if (equalsBuffering)
{
buffering.setValue(!equalsSubject());
}
else
{
buffering.setValue(true);
}
validate();
}
};
subjectListener = c -> {
// TODO: Workaround for https://bugs.openjdk.java.net/browse/JDK-8136465
if (!committing)
{
if (!buffering.getValue())
{
revert();
}
}
};
addListener(thisListener);
weakSubjectListener = new WeakMapChangeListener<K, E>(subjectListener);
subject.addListener(weakSubjectListener);
validate();
}
ObservableMapBuffering.java 文件源码
java
阅读 20
收藏 0
点赞 0
评论 0
项目:reta
作者:
评论列表
文章目录