/*
 * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code 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 General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package javafx.beans.binding;

import javafx.beans.value.ObservableStringValue;
import javafx.beans.value.ObservableValue;

import com.sun.javafx.binding.StringFormatter;

StringExpression is an ObservableStringValue plus additional convenience methods to generate bindings in a fluent style.

A concrete sub-class of StringExpression has to implement the method ObservableObjectValue<String>.get(), which provides the actual value of this expression.

Note: all implementation of BooleanBinding returned by the comparisons in this class consider a String that is null equal to an empty String.

Since:JavaFX 2.0
/** * {@code StringExpression} is an * {@link javafx.beans.value.ObservableStringValue} plus additional convenience * methods to generate bindings in a fluent style. * <p> * A concrete sub-class of {@code StringExpression} has to implement the method * {@link javafx.beans.value.ObservableStringValue#get()}, which provides the * actual value of this expression. * <p> * Note: all implementation of {@link javafx.beans.binding.BooleanBinding} * returned by the comparisons in this class consider a {@code String} that is * {@code null} equal to an empty {@code String}. * @since JavaFX 2.0 */
public abstract class StringExpression implements ObservableStringValue { @Override public String getValue() { return get(); }
Returns usually the value of this StringExpression. Only if the value is null an empty String is returned instead.
Returns:the value of this StringExpression or the empty String
/** * Returns usually the value of this {@code StringExpression}. Only if the * value is {@code null} an empty {@code String} is returned instead. * * @return the value of this {@code StringExpression} or the empty * {@code String} */
public final String getValueSafe() { final String value = get(); return value == null ? "" : value; }
Returns a StringExpression that wraps a ObservableValue. If the ObservableValue is already a StringExpression, it will be returned. Otherwise a new StringBinding is created that holds the value of the ObservableValue converted to a String.
Params:
  • value – The source ObservableValue
Throws:
Returns:A StringExpression that wraps the ObservableValue if necessary
/** * Returns a {@code StringExpression} that wraps a * {@link javafx.beans.value.ObservableValue}. If the * {@code ObservableValue} is already a {@code StringExpression}, it will be * returned. Otherwise a new {@link javafx.beans.binding.StringBinding} is * created that holds the value of the {@code ObservableValue} converted to * a {@code String}. * * @param value * The source {@code ObservableValue} * @return A {@code StringExpression} that wraps the {@code ObservableValue} * if necessary * @throws NullPointerException * if {@code value} is {@code null} */
public static StringExpression stringExpression( final ObservableValue<?> value) { if (value == null) { throw new NullPointerException("Value must be specified."); } return StringFormatter.convert(value); }
Returns a StringExpression that holds the value of this StringExpression concatenated with another Object.

If the value of this StringExpression changes, the value of the resulting StringExpression is updated automatically. Also if the other Object is an implementation of ObservableValue, changes in the other Object are reflected automatically in the resulting StringExpression.

Params:
  • other – the other Object
Returns:the new StringExpression
/** * Returns a {@code StringExpression} that holds the value of this * {@code StringExpression} concatenated with another {@code Object}. * <p> * If the value of this {@code StringExpression} changes, the value of the * resulting {@code StringExpression} is updated automatically. Also if the * other {@code Object} is an implementation of * {@link javafx.beans.value.ObservableValue}, changes in the other * {@code Object} are reflected automatically in the resulting * {@code StringExpression}. * * @param other * the other {@code Object} * @return the new {@code StringExpression} */
public StringExpression concat(Object other) { return Bindings.concat(this, other); }
Creates a new BooleanBinding that holds true if this and another ObservableStringValue are equal.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the constant value
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this and another {@link javafx.beans.value.ObservableStringValue} are * equal. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the constant value * @return the new {@code BooleanBinding} */
public BooleanBinding isEqualTo(final ObservableStringValue other) { return Bindings.equal(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is equal to a constant value.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the constant value
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is equal to a constant value. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the constant value * @return the new {@code BooleanBinding} */
public BooleanBinding isEqualTo(final String other) { return Bindings.equal(this, other); }
Creates a new BooleanBinding that holds true if this and another ObservableStringValue are not equal.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the constant value
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this and another {@link javafx.beans.value.ObservableStringValue} are * not equal. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the constant value * @return the new {@code BooleanBinding} */
public BooleanBinding isNotEqualTo(final ObservableStringValue other) { return Bindings.notEqual(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is not equal to a constant value.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the constant value
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is not equal to a constant value. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the constant value * @return the new {@code BooleanBinding} */
public BooleanBinding isNotEqualTo(final String other) { return Bindings.notEqual(this, other); }
Creates a new BooleanBinding that holds true if this and another ObservableStringValue are equal ignoring case.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the second ObservableStringValue
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this and another {@link javafx.beans.value.ObservableStringValue} are * equal ignoring case. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the second {@code ObservableStringValue} * @return the new {@code BooleanBinding} */
public BooleanBinding isEqualToIgnoreCase(final ObservableStringValue other) { return Bindings.equalIgnoreCase(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is equal to a constant value ignoring case.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the constant value
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is equal to a constant value ignoring * case. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the constant value * @return the new {@code BooleanBinding} */
public BooleanBinding isEqualToIgnoreCase(final String other) { return Bindings.equalIgnoreCase(this, other); }
Creates a new BooleanBinding that holds true if this and another ObservableStringValue are not equal ignoring case.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the second ObservableStringValue
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this and another {@link javafx.beans.value.ObservableStringValue} are * not equal ignoring case. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the second {@code ObservableStringValue} * @return the new {@code BooleanBinding} */
public BooleanBinding isNotEqualToIgnoreCase( final ObservableStringValue other) { return Bindings.notEqualIgnoreCase(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is not equal to a constant value ignoring case.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the constant value
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is not equal to a constant value * ignoring case. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the constant value * @return the new {@code BooleanBinding} */
public BooleanBinding isNotEqualToIgnoreCase(final String other) { return Bindings.notEqualIgnoreCase(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is greater than another ObservableStringValue.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the second ObservableStringValue
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is greater than another * {@link javafx.beans.value.ObservableStringValue}. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the second {@code ObservableStringValue} * @return the new {@code BooleanBinding} */
public BooleanBinding greaterThan(final ObservableStringValue other) { return Bindings.greaterThan(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is greater than a constant value.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the constant value
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is greater than a constant value. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the constant value * @return the new {@code BooleanBinding} */
public BooleanBinding greaterThan(final String other) { return Bindings.greaterThan(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is less than another ObservableStringValue.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the second ObservableStringValue
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is less than another * {@link javafx.beans.value.ObservableStringValue}. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the second {@code ObservableStringValue} * @return the new {@code BooleanBinding} */
public BooleanBinding lessThan(final ObservableStringValue other) { return Bindings.lessThan(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is less than a constant value.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the constant value
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is less than a constant value. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the constant value * @return the new {@code BooleanBinding} */
public BooleanBinding lessThan(final String other) { return Bindings.lessThan(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is greater than or equal to another ObservableStringValue.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the second ObservableStringValue
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is greater than or equal to another * {@link javafx.beans.value.ObservableStringValue}. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the second {@code ObservableStringValue} * @return the new {@code BooleanBinding} */
public BooleanBinding greaterThanOrEqualTo(final ObservableStringValue other) { return Bindings.greaterThanOrEqual(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is greater than or equal to a constant value.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the constant value
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is greater than or equal to a constant * value. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the constant value * @return the new {@code BooleanBinding} */
public BooleanBinding greaterThanOrEqualTo(final String other) { return Bindings.greaterThanOrEqual(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is less than or equal to another ObservableStringValue.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the second ObservableStringValue
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is less than or equal to another * {@link javafx.beans.value.ObservableStringValue}. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the second {@code ObservableStringValue} * @return the new {@code BooleanBinding} */
public BooleanBinding lessThanOrEqualTo(final ObservableStringValue other) { return Bindings.lessThanOrEqual(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is less than or equal to a constant value.

Note: In this comparison a String that is null is considered equal to an empty String.

Params:
  • other – the constant value
Returns:the new BooleanBinding
/** * Creates a new {@link javafx.beans.binding.BooleanBinding} that holds {@code true} * if this {@code StringExpression} is less than or equal to a constant * value. * <p> * Note: In this comparison a {@code String} that is {@code null} is * considered equal to an empty {@code String}. * * @param other * the constant value * @return the new {@code BooleanBinding} */
public BooleanBinding lessThanOrEqualTo(final String other) { return Bindings.lessThanOrEqual(this, other); }
Creates a new BooleanBinding that holds true if this StringExpression is null.
Returns:the new BooleanBinding
/** * Creates a new {@link BooleanBinding} that holds {@code true} if this * {@code StringExpression} is {@code null}. * * @return the new {@code BooleanBinding} */
public BooleanBinding isNull() { return Bindings.isNull(this); }
Creates a new BooleanBinding that holds true if this StringExpression is not null.
Returns:the new BooleanBinding
/** * Creates a new {@link BooleanBinding} that holds {@code true} if this * {@code StringExpression} is not {@code null}. * * @return the new {@code BooleanBinding} */
public BooleanBinding isNotNull() { return Bindings.isNotNull(this); }
Creates a new IntegerBinding that holds the length of this StringExpression.

Note: If the value of this StringExpression is null, the length is considered to be 0.

Returns:the new IntegerBinding
Since:JavaFX 8.0
/** * Creates a new {@link IntegerBinding} that holds the length of this * {@code StringExpression}. * <p> * Note: If the value of this {@code StringExpression} is {@code null}, * the length is considered to be {@code 0}. * * @return the new {@code IntegerBinding} * @since JavaFX 8.0 */
public IntegerBinding length() { return Bindings.length(this); }
Creates a new BooleanBinding that holds true if this StringExpression is empty.

Note: If the value of this StringExpression is null, it is considered to be empty.

Returns:the new BooleanBinding
Since:JavaFX 8.0
/** * Creates a new {@link BooleanBinding} that holds {@code true} if this * {@code StringExpression} is empty. * <p> * Note: If the value of this {@code StringExpression} is {@code null}, * it is considered to be empty. * * @return the new {@code BooleanBinding} * @since JavaFX 8.0 */
public BooleanBinding isEmpty() { return Bindings.isEmpty(this); }
Creates a new BooleanBinding that holds true if this StringExpression is not empty.

Note: If the value of this StringExpression is null, it is considered to be empty.

Returns:the new BooleanBinding
Since:JavaFX 8.0
/** * Creates a new {@link BooleanBinding} that holds {@code true} if this * {@code StringExpression} is not empty. * <p> * Note: If the value of this {@code StringExpression} is {@code null}, * it is considered to be empty. * * @return the new {@code BooleanBinding} * @since JavaFX 8.0 */
public BooleanBinding isNotEmpty() { return Bindings.isNotEmpty(this); } }