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 }
|