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

io.github.palexdev.materialfx.bindings.BindingBuilder Maven / Gradle / Ivy

/*
 * Copyright (C) 2022 Parisi Alessandro
 * This file is part of MaterialFX (https://github.com/palexdev/MaterialFX).
 *
 * MaterialFX is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * MaterialFX is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with MaterialFX.  If not, see .
 */

package io.github.palexdev.materialfx.bindings;

import javafx.beans.value.ObservableValue;

import java.util.function.BiConsumer;

/**
 * Helper class for the {@link BindingManager}.
 * 

* Makes the creation of unidirectional bindings easier with fluent methods. */ public class BindingBuilder { //================================================================================ // Properties //================================================================================ private final ObservableValue target; private ObservableValue source; private BiConsumer updater; //================================================================================ // Constructors //================================================================================ public BindingBuilder(ObservableValue target) { this.target = target; } //================================================================================ // Methods //================================================================================ /** * Sets the binding's source. */ public BindingBuilder to(ObservableValue source) { this.source = source; return this; } /** * Sets the {@link BiConsumer} function responsible for updating the target * when the source changes. */ public BindingBuilder with(BiConsumer updater) { this.updater = updater; return this; } /** * @return the target observable */ public ObservableValue target() { return target; } /** * @return the source observable */ public ObservableValue source() { return source; } /** * @return the target updater */ public BiConsumer targetUpdater() { return updater; } /** * Confirms the creation of the binding by calling {@link BindingManager#apply(BindingBuilder, BindingHelper)}. */ public BindingManager create() { BindingHelper bindingHelper = new BindingHelper<>(); bindingHelper.with(updater); return BindingManager.instance().apply(this, bindingHelper); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy