Spec-Zone .ru
спецификации, руководства, описания, API
|
001/* 002 * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. 003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 004 * 005 * This code is free software; you can redistribute it and/or modify it 006 * under the terms of the GNU General Public License version 2 only, as 007 * published by the Free Software Foundation. Oracle designates this 008 * particular file as subject to the "Classpath" exception as provided 009 * by Oracle in the LICENSE file that accompanied this code. 010 * 011 * This code is distributed in the hope that it will be useful, but WITHOUT 012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 014 * version 2 for more details (a copy is included in the LICENSE file that 015 * accompanied this code). 016 * 017 * You should have received a copy of the GNU General Public License version 018 * 2 along with this work; if not, write to the Free Software Foundation, 019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 020 * 021 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 022 * or visit www.oracle.com if you need additional information or have any 023 * questions. 024 */ 025 026package javafx.beans.property; 027 028import javafx.beans.InvalidationListener; 029import javafx.beans.value.ChangeListener; 030 031import com.sun.javafx.binding.ExpressionHelper; 032 033/** 034 * Base class for all readonly properties wrapping an arbitrary {@code Object}. This class provides a default 035 * implementation to attach listener. 036 * 037 * @see ReadOnlyObjectProperty 038 * 039 * @param <T> the type of the wrapped {@code Object} 040 */ 041public abstract class ReadOnlyObjectPropertyBase<T> extends ReadOnlyObjectProperty<T> { 042 043 ExpressionHelper<T> helper; 044 045 @Override 046 public void addListener(InvalidationListener listener) { 047 helper = ExpressionHelper.addListener(helper, this, listener); 048 } 049 050 @Override 051 public void removeListener(InvalidationListener listener) { 052 helper = ExpressionHelper.removeListener(helper, listener); 053 } 054 055 @Override 056 public void addListener(ChangeListener<? super T> listener) { 057 helper = ExpressionHelper.addListener(helper, this, listener); 058 } 059 060 @Override 061 public void removeListener(ChangeListener<? super T> listener) { 062 helper = ExpressionHelper.removeListener(helper, listener); 063 } 064 065 /** 066 * Sends notifications to all attached 067 * {@link javafx.beans.InvalidationListener InvalidationListeners} and 068 * {@link javafx.beans.value.ChangeListener ChangeListeners}. 069 * 070 * This method needs to be called, if the value of this property changes. 071 */ 072 protected void fireValueChangedEvent() { 073 ExpressionHelper.fireValueChangedEvent(helper); 074 } 075 076}