/*
* 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: - NullPointerException – if
value
is null
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);
}
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);
}
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);
}
}