001 /*
002 * Copyright 2008-2017 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package griffon.javafx.beans.binding;
017
018 import javafx.beans.InvalidationListener;
019 import javafx.beans.value.ChangeListener;
020 import javafx.beans.value.ObservableNumberValue;
021
022 import javax.annotation.Nonnull;
023
024 /**
025 * @author Andres Almiray
026 * @since 2.9.0
027 */
028 class AbstractUIThreadAwareObservableNumberValue<T> implements ObservableNumberValue, UIThreadAware {
029 private final ObservableNumberValue delegate;
030
031 AbstractUIThreadAwareObservableNumberValue(ObservableNumberValue delegate) {
032 this.delegate = delegate;
033 }
034
035 @Nonnull
036 public ObservableNumberValue getDelegate() {
037 return delegate;
038 }
039
040 @Override
041 public int intValue() {
042 return delegate.intValue();
043 }
044
045 @Override
046 public long longValue() {
047 return delegate.longValue();
048 }
049
050 @Override
051 public float floatValue() {
052 return delegate.floatValue();
053 }
054
055 @Override
056 public double doubleValue() {
057 return delegate.doubleValue();
058 }
059
060 @Override
061 public Number getValue() {
062 return delegate.getValue();
063 }
064
065 @Override
066 public void addListener(ChangeListener<? super Number> listener) {
067 if (listener instanceof UIThreadAware) {
068 delegate.addListener(listener);
069 } else {
070 delegate.addListener(new UIThreadAwareChangeListener<>(listener));
071 }
072 }
073
074 @Override
075 public void removeListener(ChangeListener<? super Number> listener) {
076 if (listener instanceof UIThreadAware) {
077 delegate.removeListener(listener);
078 } else {
079 delegate.removeListener(new UIThreadAwareChangeListener<>(listener));
080 }
081 }
082
083 @Override
084 public void addListener(InvalidationListener listener) {
085 if (listener instanceof UIThreadAware) {
086 delegate.addListener(listener);
087 } else {
088 delegate.addListener(new UIThreadAwareInvalidationListener(listener));
089 }
090 }
091
092 @Override
093 public void removeListener(InvalidationListener listener) {
094 if (listener instanceof UIThreadAware) {
095 delegate.removeListener(listener);
096 } else {
097 delegate.removeListener(new UIThreadAwareInvalidationListener(listener));
098 }
099 }
100
101 @Override
102 public boolean equals(Object o) {
103 return this == o || delegate.equals(o);
104 }
105
106 @Override
107 public int hashCode() {
108 return delegate.hashCode();
109 }
110
111 @Override
112 public String toString() {
113 return getClass().getName() + ":" + delegate.toString();
114 }
115 }
|