ObservableMapBuffering.java 文件源码

java
阅读 20 收藏 0 点赞 0 评论 0

项目:reta 作者:
/**
 * @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();
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号