/*
 * Copyright (c) 2011, 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.property;

import java.util.List;
import java.util.ListIterator;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.ListExpression;
import javafx.collections.ObservableList;

Superclass for all readonly properties wrapping an ObservableList.
Type parameters:
  • <E> – the type of the List elements
See Also:
Since:JavaFX 2.1
/** * Superclass for all readonly properties wrapping an {@link javafx.collections.ObservableList}. * * @see javafx.collections.ObservableList * @see javafx.beans.value.ObservableListValue * @see javafx.beans.binding.ListExpression * @see ReadOnlyProperty * * @param <E> the type of the {@code List} elements * @since JavaFX 2.1 */
public abstract class ReadOnlyListProperty<E> extends ListExpression<E> implements ReadOnlyProperty<ObservableList<E>> {
The constructor of ReadOnlyListProperty.
/** * The constructor of {@code ReadOnlyListProperty}. */
public ReadOnlyListProperty() { }
Creates a bidirectional content binding of the ObservableList, that is wrapped in this ReadOnlyListProperty, and another ObservableList.

A bidirectional content binding ensures that the content of two ObservableLists is the same. If the content of one of the lists changes, the other one will be updated automatically.

Params:
  • list – the ObservableList this property should be bound to
Throws:
/** * Creates a bidirectional content binding of the {@link javafx.collections.ObservableList}, that is * wrapped in this {@code ReadOnlyListProperty}, and another {@code ObservableList}. * <p> * A bidirectional content binding ensures that the content of two {@code ObservableLists} is the * same. If the content of one of the lists changes, the other one will be updated automatically. * * @param list the {@code ObservableList} this property should be bound to * @throws NullPointerException if {@code list} is {@code null} * @throws IllegalArgumentException if {@code list} is the same list that this {@code ReadOnlyListProperty} points to */
public void bindContentBidirectional(ObservableList<E> list) { Bindings.bindContentBidirectional(this, list); }
Deletes a bidirectional content binding between the ObservableList, that is wrapped in this ReadOnlyListProperty, and another Object.
Params:
  • object – the Object to which the bidirectional binding should be removed
Throws:
/** * Deletes a bidirectional content binding between the {@link javafx.collections.ObservableList}, that is * wrapped in this {@code ReadOnlyListProperty}, and another {@code Object}. * * @param object the {@code Object} to which the bidirectional binding should be removed * @throws NullPointerException if {@code object} is {@code null} * @throws IllegalArgumentException if {@code object} is the same list that this {@code ReadOnlyListProperty} points to */
public void unbindContentBidirectional(Object object) { Bindings.unbindContentBidirectional(this, object); }
Creates a content binding between the ObservableList, that is wrapped in this ReadOnlyListProperty, and another ObservableList.

A content binding ensures that the content of the wrapped ObservableLists is the same as that of the other list. If the content of the other list changes, the wrapped list will be updated automatically. Once the wrapped list is bound to another list, you must not change it directly.

Params:
  • list – the ObservableList this property should be bound to
Throws:
/** * Creates a content binding between the {@link javafx.collections.ObservableList}, that is * wrapped in this {@code ReadOnlyListProperty}, and another {@code ObservableList}. * <p> * A content binding ensures that the content of the wrapped {@code ObservableLists} is the * same as that of the other list. If the content of the other list changes, the wrapped list will be updated * automatically. Once the wrapped list is bound to another list, you must not change it directly. * * @param list the {@code ObservableList} this property should be bound to * @throws NullPointerException if {@code list} is {@code null} * @throws IllegalArgumentException if {@code list} is the same list that this {@code ReadOnlyListProperty} points to */
public void bindContent(ObservableList<E> list) { Bindings.bindContent(this, list); }
Deletes a content binding between the ObservableList, that is wrapped in this ReadOnlyListProperty, and another Object.
Params:
  • object – the Object to which the binding should be removed
Throws:
/** * Deletes a content binding between the {@link javafx.collections.ObservableList}, that is * wrapped in this {@code ReadOnlyListProperty}, and another {@code Object}. * * @param object the {@code Object} to which the binding should be removed * @throws NullPointerException if {@code object} is {@code null} * @throws IllegalArgumentException if {@code object} is the same list that this {@code ReadOnlyListProperty} points to */
public void unbindContent(Object object) { Bindings.unbindContent(this, object); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof List)) { return false; } final List list = (List)obj; if (size() != list.size()) { return false; } ListIterator<E> e1 = listIterator(); ListIterator e2 = list.listIterator(); while (e1.hasNext() && e2.hasNext()) { E o1 = e1.next(); Object o2 = e2.next(); if (!(o1==null ? o2==null : o1.equals(o2))) return false; } return true; } @Override public int hashCode() { int hashCode = 1; for (E e : this) hashCode = 31*hashCode + (e==null ? 0 : e.hashCode()); return hashCode; }
Returns a string representation of this ReadOnlyListProperty object.
Returns:a string representation of this ReadOnlyListProperty object.
/** * Returns a string representation of this {@code ReadOnlyListProperty} object. * @return a string representation of this {@code ReadOnlyListProperty} object. */
@Override public String toString() { final Object bean = getBean(); final String name = getName(); final StringBuilder result = new StringBuilder( "ReadOnlyListProperty ["); if (bean != null) { result.append("bean: ").append(bean).append(", "); } if ((name != null) && !name.equals("")) { result.append("name: ").append(name).append(", "); } result.append("value: ").append(get()).append("]"); return result.toString(); } }