UIThreadAwareBindingsExtension.groovy
001 /*
002  * SPDX-License-Identifier: Apache-2.0
003  *
004  * Copyright 2008-2017 the original author or authors.
005  *
006  * Licensed under the Apache License, Version 2.0 (the "License");
007  * you may not use this file except in compliance with the License.
008  * You may obtain a copy of the License at
009  *
010  *     http://www.apache.org/licenses/LICENSE-2.0
011  *
012  * Unless required by applicable law or agreed to in writing, software
013  * distributed under the License is distributed on an "AS IS" BASIS,
014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015  * See the License for the specific language governing permissions and
016  * limitations under the License.
017  */
018 package griffon.javafx
019 
020 import griffon.javafx.beans.binding.UIThreadAwareBindings
021 import groovy.transform.CompileStatic
022 import javafx.beans.InvalidationListener
023 import javafx.beans.Observable
024 import javafx.beans.binding.BooleanBinding
025 import javafx.beans.binding.DoubleBinding
026 import javafx.beans.binding.FloatBinding
027 import javafx.beans.binding.IntegerBinding
028 import javafx.beans.binding.LongBinding
029 import javafx.beans.binding.ObjectBinding
030 import javafx.beans.binding.StringBinding
031 import javafx.beans.property.BooleanProperty
032 import javafx.beans.property.DoubleProperty
033 import javafx.beans.property.FloatProperty
034 import javafx.beans.property.IntegerProperty
035 import javafx.beans.property.ListProperty
036 import javafx.beans.property.LongProperty
037 import javafx.beans.property.MapProperty
038 import javafx.beans.property.ObjectProperty
039 import javafx.beans.property.Property
040 import javafx.beans.property.SetProperty
041 import javafx.beans.property.StringProperty
042 import javafx.beans.value.ChangeListener
043 import javafx.beans.value.ObservableBooleanValue
044 import javafx.beans.value.ObservableDoubleValue
045 import javafx.beans.value.ObservableFloatValue
046 import javafx.beans.value.ObservableIntegerValue
047 import javafx.beans.value.ObservableLongValue
048 import javafx.beans.value.ObservableStringValue
049 import javafx.beans.value.ObservableValue
050 import javafx.collections.ListChangeListener
051 import javafx.collections.MapChangeListener
052 import javafx.collections.ObservableList
053 import javafx.collections.ObservableMap
054 import javafx.collections.ObservableSet
055 import javafx.collections.SetChangeListener
056 
057 import javax.annotation.Nonnull
058 import java.util.function.Consumer
059 
060 /**
061  @author Andres Almiray
062  @since 2.13.0
063  */
064 @CompileStatic
065 final class UIThreadAwareBindingsExtension {
066     @Nonnull
067     static <T> ChangeListener<T> uiThreadAwareBind(
068         @Nonnull Property<T> property, @Nonnull ObservableValue<T> observable) {
069         UIThreadAwareBindings.uiThreadAwareBind(property, observable)
070     }
071 
072     @Nonnull
073     static <T> ChangeListener<T> uiThreadAwareChangeListener(
074         @Nonnull ObservableValue<T> observable, @Nonnull ChangeListener<T> listener) {
075         UIThreadAwareBindings.uiThreadAwareChangeListener(observable, listener)
076     }
077 
078     @Nonnull
079     static <T> ChangeListener<T> uiThreadAwareChangeListener(@Nonnull ChangeListener<T> listener) {
080         UIThreadAwareBindings.uiThreadAwareChangeListener(listener)
081     }
082 
083     @Nonnull
084     static <T> ChangeListener<T> uiThreadAwareChangeListener(
085         @Nonnull ObservableValue<T> observable, @Nonnull Consumer<T> consumer) {
086         UIThreadAwareBindings.uiThreadAwareChangeListener(observable, consumer)
087     }
088 
089     @Nonnull
090     static <T> ChangeListener<T> uiThreadAwareChangeListener(@Nonnull Consumer<T> consumer) {
091         UIThreadAwareBindings.uiThreadAwareChangeListener(consumer)
092     }
093 
094     @Nonnull
095     static <T> ChangeListener<T> uiThreadAwareChangeListener(
096         @Nonnull ObservableValue<T> observable, @Nonnull Runnable runnable) {
097         UIThreadAwareBindings.uiThreadAwareChangeListener(observable, runnable)
098     }
099 
100     @Nonnull
101     static <T> ChangeListener<T> uiThreadAwareChangeListener(@Nonnull Runnable runnable) {
102         UIThreadAwareBindings.uiThreadAwareChangeListener(runnable)
103     }
104 
105     @Nonnull
106     static InvalidationListener uiThreadAwareInvalidationListener(
107         @Nonnull Observable observable, @Nonnull InvalidationListener listener) {
108         UIThreadAwareBindings.uiThreadAwareInvalidationListener(observable, listener)
109     }
110 
111     @Nonnull
112     static InvalidationListener uiThreadAwareInvalidationListener(@Nonnull InvalidationListener listener) {
113         UIThreadAwareBindings.uiThreadAwareInvalidationListener(listener)
114     }
115 
116     @Nonnull
117     static InvalidationListener uiThreadAwareInvalidationListener(
118         @Nonnull Observable observable, @Nonnull Consumer<Observable> consumer) {
119         UIThreadAwareBindings.uiThreadAwareInvalidationListener(observable, consumer)
120     }
121 
122     @Nonnull
123     static InvalidationListener uiThreadAwareInvalidationListener(@Nonnull Consumer<Observable> consumer) {
124         UIThreadAwareBindings.uiThreadAwareInvalidationListener(consumer)
125     }
126 
127     @Nonnull
128     static InvalidationListener uiThreadAwareInvalidationListener(
129         @Nonnull Observable observable, @Nonnull Runnable runnable) {
130         UIThreadAwareBindings.uiThreadAwareInvalidationListener(observable, runnable)
131     }
132 
133     @Nonnull
134     static InvalidationListener uiThreadAwareInvalidationListener(@Nonnull Runnable runnable) {
135         UIThreadAwareBindings.uiThreadAwareInvalidationListener(runnable)
136     }
137 
138     @Nonnull
139     static <E> ListChangeListener<E> uiThreadAwareListChangeListener(
140         @Nonnull ObservableList<E> observable, @Nonnull ListChangeListener<E> listener) {
141         UIThreadAwareBindings.uiThreadAwareListChangeListener(observable, listener)
142     }
143 
144     @Nonnull
145     static <E> ListChangeListener<E> uiThreadAwareListChangeListener(@Nonnull ListChangeListener<E> listener) {
146         UIThreadAwareBindings.uiThreadAwareListChangeListener(listener)
147     }
148 
149     @Nonnull
150     static <E> ListChangeListener<E> uiThreadAwareListChangeListener(
151         @Nonnull ObservableList<E> observable, @Nonnull Consumer<ListChangeListener.Change<? extends E>> consumer) {
152         UIThreadAwareBindings.uiThreadAwareListChangeListener(observable, consumer)
153     }
154 
155     @Nonnull
156     static <E> ListChangeListener<E> uiThreadAwareListChangeListener(
157         @Nonnull Consumer<ListChangeListener.Change<? extends E>> consumer) {
158         UIThreadAwareBindings.uiThreadAwareListChangeListener(consumer)
159     }
160 
161     @Nonnull
162     static <E> ListChangeListener<E> uiThreadAwareListChangeListener(
163         @Nonnull ObservableList<E> observable, @Nonnull Runnable runnable) {
164         UIThreadAwareBindings.uiThreadAwareListChangeListener(observable, runnable)
165     }
166 
167     @Nonnull
168     static <E> ListChangeListener<E> uiThreadAwareListChangeListener(@Nonnull Runnable runnable) {
169         UIThreadAwareBindings.uiThreadAwareListChangeListener(runnable)
170     }
171 
172     @Nonnull
173     static <K, V> MapChangeListener<K, V> uiThreadAwareMapChangeListener(
174         @Nonnull ObservableMap<K, V> observable, @Nonnull MapChangeListener<K, V> listener) {
175         UIThreadAwareBindings.uiThreadAwareMapChangeListener(observable, listener)
176     }
177 
178     @Nonnull
179     static <K, V> MapChangeListener<K, V> uiThreadAwareMapChangeListener(@Nonnull MapChangeListener<K, V> listener) {
180         UIThreadAwareBindings.uiThreadAwareMapChangeListener(listener)
181     }
182 
183     @Nonnull
184     static <K, V> MapChangeListener<K, V> uiThreadAwareMapChangeListener(
185         @Nonnull ObservableMap<K, V> observable,
186         @Nonnull Consumer<MapChangeListener.Change<? extends K, ? extends V>> consumer) {
187         UIThreadAwareBindings.uiThreadAwareMapChangeListener(observable, consumer)
188     }
189 
190     @Nonnull
191     static <K, V> MapChangeListener<K, V> uiThreadAwareMapChangeListener(
192         @Nonnull Consumer<MapChangeListener.Change<? extends K, ? extends V>> consumer) {
193         UIThreadAwareBindings.uiThreadAwareMapChangeListener(consumer)
194     }
195 
196     @Nonnull
197     static <K, V> MapChangeListener<K, V> uiThreadAwareMapChangeListener(
198         @Nonnull ObservableMap<K, V> observable, @Nonnull Runnable runnable) {
199         UIThreadAwareBindings.uiThreadAwareMapChangeListener(observable, runnable)
200     }
201 
202     @Nonnull
203     static <K, V> MapChangeListener<K, V> uiThreadAwareMapChangeListener(@Nonnull Runnable runnable) {
204         UIThreadAwareBindings.uiThreadAwareMapChangeListener(runnable)
205     }
206 
207     @Nonnull
208     static <E> SetChangeListener<E> uiThreadAwareSetChangeListener(
209         @Nonnull ObservableSet<E> observable, @Nonnull SetChangeListener<E> listener) {
210         UIThreadAwareBindings.uiThreadAwareSetChangeListener(observable, listener)
211     }
212 
213     @Nonnull
214     static <E> SetChangeListener<E> uiThreadAwareSetChangeListener(@Nonnull SetChangeListener<E> listener) {
215         UIThreadAwareBindings.uiThreadAwareSetChangeListener(listener)
216     }
217 
218     @Nonnull
219     static <E> SetChangeListener<E> uiThreadAwareSetChangeListener(
220         @Nonnull ObservableSet<E> observable, @Nonnull Consumer<SetChangeListener.Change<? extends E>> consumer) {
221         UIThreadAwareBindings.uiThreadAwareSetChangeListener(observable, consumer)
222     }
223 
224     @Nonnull
225     static <E> SetChangeListener<E> uiThreadAwareSetChangeListener(
226         @Nonnull Consumer<SetChangeListener.Change<? extends E>> consumer) {
227         UIThreadAwareBindings.uiThreadAwareSetChangeListener(consumer)
228     }
229 
230     @Nonnull
231     static <E> SetChangeListener<E> uiThreadAwareSetChangeListener(
232         @Nonnull ObservableSet<E> observable, @Nonnull Runnable runnable) {
233         UIThreadAwareBindings.uiThreadAwareSetChangeListener(observable, runnable)
234     }
235 
236     @Nonnull
237     static <E> SetChangeListener<E> uiThreadAwareSetChangeListener(@Nonnull Runnable runnable) {
238         UIThreadAwareBindings.uiThreadAwareSetChangeListener(runnable)
239     }
240 
241     @Nonnull
242     static BooleanProperty uiThreadAware(@Nonnull BooleanProperty observable) {
243         UIThreadAwareBindings.uiThreadAwareBooleanProperty(observable)
244     }
245 
246     @Nonnull
247     static IntegerProperty uiThreadAware(@Nonnull IntegerProperty observable) {
248         UIThreadAwareBindings.uiThreadAwareIntegerProperty(observable)
249     }
250 
251     @Nonnull
252     static LongProperty uiThreadAware(@Nonnull LongProperty observable) {
253         UIThreadAwareBindings.uiThreadAwareLongProperty(observable)
254     }
255 
256     @Nonnull
257     static FloatProperty uiThreadAware(@Nonnull FloatProperty observable) {
258         UIThreadAwareBindings.uiThreadAwareFloatProperty(observable)
259     }
260 
261     @Nonnull
262     static DoubleProperty uiThreadAware(@Nonnull DoubleProperty observable) {
263         UIThreadAwareBindings.uiThreadAwareDoubleProperty(observable)
264     }
265 
266     @Nonnull
267     static StringProperty uiThreadAware(@Nonnull StringProperty observable) {
268         UIThreadAwareBindings.uiThreadAwareStringProperty(observable)
269     }
270 
271     @Nonnull
272     static Property<Boolean> uiThreadAwarePropertyBoolean(@Nonnull Property<Boolean> observable) {
273         UIThreadAwareBindings.uiThreadAwarePropertyBoolean(observable)
274     }
275 
276     @Nonnull
277     static Property<Integer> uiThreadAwarePropertyInteger(@Nonnull Property<Integer> observable) {
278         UIThreadAwareBindings.uiThreadAwarePropertyInteger(observable)
279     }
280 
281     @Nonnull
282     static Property<Long> uiThreadAwarePropertyLong(@Nonnull Property<Long> observable) {
283         UIThreadAwareBindings.uiThreadAwarePropertyLong(observable)
284     }
285 
286     @Nonnull
287     static Property<Float> uiThreadAwarePropertyFloat(@Nonnull Property<Float> observable) {
288         UIThreadAwareBindings.uiThreadAwarePropertyFloat(observable)
289     }
290 
291     @Nonnull
292     static Property<Double> uiThreadAwarePropertyDouble(@Nonnull Property<Double> observable) {
293         UIThreadAwareBindings.uiThreadAwarePropertyDouble(observable)
294     }
295 
296     @Nonnull
297     static Property<String> uiThreadAwarePropertyString(@Nonnull Property<String> observable) {
298         UIThreadAwareBindings.uiThreadAwarePropertyString(observable)
299     }
300 
301     @Nonnull
302     static <T> ObjectProperty<T> uiThreadAware(@Nonnull ObjectProperty<T> observable) {
303         UIThreadAwareBindings.uiThreadAwareObjectProperty(observable)
304     }
305 
306     @Nonnull
307     static <E> ListProperty<E> uiThreadAware(@Nonnull ListProperty<E> observable) {
308         UIThreadAwareBindings.uiThreadAwareListProperty(observable)
309     }
310 
311     @Nonnull
312     static <E> SetProperty<E> uiThreadAware(@Nonnull SetProperty<E> observable) {
313         UIThreadAwareBindings.uiThreadAwareSetProperty(observable)
314     }
315 
316     @Nonnull
317     static <K, V> MapProperty<K, V> uiThreadAware(@Nonnull MapProperty<K, V> observable) {
318         UIThreadAwareBindings.uiThreadAwareMapProperty(observable)
319     }
320 
321     @Nonnull
322     static <T> ObservableValue<T> uiThreadAware(@Nonnull ObservableValue<T> observable) {
323         UIThreadAwareBindings.uiThreadAwareObservable(observable)
324     }
325 
326     @Nonnull
327     static ObservableStringValue uiThreadAware(@Nonnull ObservableStringValue observable) {
328         UIThreadAwareBindings.uiThreadAwareObservableString(observable)
329     }
330 
331     @Nonnull
332     static ObservableBooleanValue uiThreadAware(@Nonnull ObservableBooleanValue observable) {
333         UIThreadAwareBindings.uiThreadAwareObservableBoolean(observable)
334     }
335 
336     @Nonnull
337     static ObservableIntegerValue uiThreadAware(@Nonnull ObservableIntegerValue observable) {
338         UIThreadAwareBindings.uiThreadAwareObservableInteger(observable)
339     }
340 
341     @Nonnull
342     static ObservableLongValue uiThreadAware(@Nonnull ObservableLongValue observable) {
343         UIThreadAwareBindings.uiThreadAwareObservableLong(observable)
344     }
345 
346     @Nonnull
347     static ObservableFloatValue uiThreadAware(@Nonnull ObservableFloatValue observable) {
348         UIThreadAwareBindings.uiThreadAwareObservableFloat(observable)
349     }
350 
351     @Nonnull
352     static ObservableDoubleValue uiThreadAware(@Nonnull ObservableDoubleValue observable) {
353         UIThreadAwareBindings.uiThreadAwareObservableDouble(observable)
354     }
355 
356     @Nonnull
357     static BooleanBinding uiThreadAware(@Nonnull BooleanBinding observable) {
358         UIThreadAwareBindings.uiThreadAwareBooleanBinding(observable)
359     }
360 
361     @Nonnull
362     static IntegerBinding uiThreadAware(@Nonnull IntegerBinding observable) {
363         UIThreadAwareBindings.uiThreadAwareIntegerBinding(observable)
364     }
365 
366     @Nonnull
367     static LongBinding uiThreadAware(@Nonnull LongBinding observable) {
368         UIThreadAwareBindings.uiThreadAwareLongBinding(observable)
369     }
370 
371     @Nonnull
372     static FloatBinding uiThreadAware(@Nonnull FloatBinding observable) {
373         UIThreadAwareBindings.uiThreadAwareFloatBinding(observable)
374     }
375 
376     @Nonnull
377     static DoubleBinding uiThreadAware(@Nonnull DoubleBinding observable) {
378         UIThreadAwareBindings.uiThreadAwareDoubleBinding(observable)
379     }
380 
381     @Nonnull
382     static StringBinding uiThreadAware(@Nonnull StringBinding observable) {
383         UIThreadAwareBindings.uiThreadAwareStringBinding(observable)
384     }
385 
386     @Nonnull
387     static <T> ObjectBinding<T> uiThreadAware(@Nonnull ObjectBinding<T> observable) {
388         UIThreadAwareBindings.uiThreadAwareObjectBinding(observable)
389     }
390 }