1 /* 2 * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package javafx.collections; 26 27 import com.sun.javafx.collections.ArrayListenerHelper; 28 import javafx.beans.InvalidationListener; 29 30 /** 31 * Abstract class that serves as a base class for {@link ObservableArray} implementations. 32 * The base class provides listener handling functionality by implementing 33 * {@code addListener} and {@code removeListener} methods. 34 * {@link #fireChange(boolean, int, int) } method is provided 35 * for notifying the listeners. 36 * @param <T> actual array instance type 37 * @see ObservableArray 38 * @see ArrayChangeListener 39 * @since JavaFX 8.0 40 */ 41 public abstract class ObservableArrayBase<T extends ObservableArray<T>> implements ObservableArray<T> { 42 43 private ArrayListenerHelper<T> listenerHelper; 44 45 @Override public final void addListener(InvalidationListener listener) { 46 listenerHelper = ArrayListenerHelper.<T>addListener(listenerHelper, (T) this, listener); 47 } 48 49 @Override public final void removeListener(InvalidationListener listener) { 50 listenerHelper = ArrayListenerHelper.removeListener(listenerHelper, listener); 51 } 52 53 @Override public final void addListener(ArrayChangeListener<T> listener) { 54 listenerHelper = ArrayListenerHelper.<T>addListener(listenerHelper, (T) this, listener); 55 } 56 57 @Override public final void removeListener(ArrayChangeListener<T> listener) { 58 listenerHelper = ArrayListenerHelper.removeListener(listenerHelper, listener); 59 } 60 61 /** 62 * Notifies all listeners of a change 63 * @param change 64 */ 65 protected final void fireChange(boolean sizeChanged, int from, int to) { 66 ArrayListenerHelper.fireValueChangedEvent(listenerHelper, sizeChanged, from, to); 67 } 68 }