All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.reactfx.inhibeans.property.ReadOnlyBooleanPropertyBase Maven / Gradle / Ivy

There is a newer version: 1.11
Show newest version
package org.reactfx.inhibeans.property;

import org.reactfx.Guard;

/**
 * Inhibitory version of {@link javafx.beans.property.ReadOnlyBooleanPropertyBase}.
 */
@Deprecated
public abstract class ReadOnlyBooleanPropertyBase
extends javafx.beans.property.ReadOnlyBooleanPropertyBase
implements Property {

    private int blocked = 0;
    private boolean fireOnRelease = false;

    @Override
    public Guard block() {
        ++blocked;
        return ((Guard) this::release).closeableOnce();
    }

    private void release() {
        assert blocked > 0;
        if(--blocked == 0 && fireOnRelease) {
            fireOnRelease = false;
            super.fireValueChangedEvent();
        }
    }

    @Override
    protected void fireValueChangedEvent() {
        if(blocked > 0) {
            fireOnRelease = true;
        } else {
            super.fireValueChangedEvent();
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy