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.CollectionBindings
021 import groovy.transform.CompileStatic
022 import javafx.beans.binding.NumberBinding
023 import javafx.beans.binding.StringBinding
024 import javafx.beans.value.ObservableValue
025 import javafx.collections.ObservableList
026 import javafx.collections.ObservableMap
027 import javafx.collections.ObservableSet
028
029 import javax.annotation.Nonnull
030 import javax.annotation.Nullable
031 import java.util.function.Function
032 import java.util.function.Supplier
033 import java.util.function.ToDoubleFunction
034
035 /**
036 * @author Andres Almiray
037 * @since 2.13.0
038 */
039 @CompileStatic
040 final class CollectionBindingsExtension {
041 @Nonnull
042 static StringBinding join(@Nonnull ObservableList<?> self, @Nullable String delimiter) {
043 CollectionBindings.joinList(self, delimiter)
044 }
045
046 @Nonnull
047 static <T> StringBinding join(
048 @Nonnull ObservableList<T> self, @Nullable String delimiter, @Nonnull Function<? super T, String> mapper) {
049 CollectionBindings.joinList(self, delimiter, mapper)
050 }
051
052 @Nonnull
053 static StringBinding join(@Nonnull ObservableList<?> self, @Nonnull ObservableValue<String> delimiter) {
054 CollectionBindings.joinList(self, delimiter)
055 }
056
057 @Nonnull
058 static <T> StringBinding join(
059 @Nonnull ObservableList<T> self,
060 @Nonnull ObservableValue<String> delimiter, @Nonnull ObservableValue<Function<? super T, String>> mapper) {
061 CollectionBindings.joinList(self, delimiter, mapper)
062 }
063
064 @Nonnull
065 static StringBinding join(@Nonnull ObservableSet<?> self, @Nullable String delimiter) {
066 CollectionBindings.joinSet(self, delimiter)
067 }
068
069 @Nonnull
070 static <T> StringBinding join(
071 @Nonnull ObservableSet<T> self, @Nullable String delimiter, @Nonnull Function<? super T, String> mapper) {
072 CollectionBindings.joinSet(self, delimiter, mapper)
073 }
074
075 @Nonnull
076 static StringBinding join(@Nonnull ObservableSet<?> self, @Nonnull ObservableValue<String> delimiter) {
077 CollectionBindings.joinSet(self, delimiter)
078 }
079
080 @Nonnull
081 static <T> StringBinding join(
082 @Nonnull ObservableSet<T> self,
083 @Nonnull ObservableValue<String> delimiter, @Nonnull ObservableValue<Function<? super T, String>> mapper) {
084 CollectionBindings.joinSet(self, delimiter, mapper)
085 }
086
087 @Nonnull
088 static <K, V> StringBinding join(@Nonnull ObservableMap<K, V> self, @Nullable String delimiter) {
089 CollectionBindings.joinMap(self, delimiter)
090 }
091
092 @Nonnull
093 static <K, V> StringBinding join(
094 @Nonnull ObservableMap<K, V> self,
095 @Nullable String delimiter, @Nonnull Function<Map.Entry<K, V>, String> mapper) {
096 CollectionBindings.joinMap(self, delimiter, mapper)
097 }
098
099 @Nonnull
100 static <K, V> StringBinding join(@Nonnull ObservableMap<K, V> self, @Nonnull ObservableValue<String> delimiter) {
101 CollectionBindings.joinMap(self, delimiter)
102 }
103
104 @Nonnull
105 static <K, V> StringBinding join(
106 @Nonnull ObservableMap<K, V> self,
107 @Nonnull ObservableValue<String> delimiter,
108 @Nonnull ObservableValue<Function<Map.Entry<K, V>, String>> mapper) {
109 CollectionBindings.joinMap(self, delimiter, mapper)
110 }
111
112 @Nonnull
113 static NumberBinding min(@Nonnull ObservableList<? extends Number> self, @Nonnull Number defaultValue) {
114 CollectionBindings.minInList(self, defaultValue)
115 }
116
117 @Nonnull
118 static NumberBinding min(
119 @Nonnull ObservableList<? extends Number> self, @Nonnull Supplier<? extends Number> supplier) {
120 CollectionBindings.minInList(self, supplier)
121 }
122
123 @Nonnull
124 static NumberBinding max(@Nonnull ObservableList<? extends Number> self, @Nonnull Number defaultValue) {
125 CollectionBindings.maxInList(self, defaultValue)
126 }
127
128 @Nonnull
129 static NumberBinding max(
130 @Nonnull ObservableList<? extends Number> self, @Nonnull Supplier<? extends Number> supplier) {
131 CollectionBindings.maxInList(self, supplier)
132 }
133
134 @Nonnull
135 static NumberBinding average(@Nonnull ObservableList<? extends Number> self, @Nonnull Number defaultValue) {
136 CollectionBindings.averageInList(self, defaultValue)
137 }
138
139 @Nonnull
140 static NumberBinding average(
141 @Nonnull ObservableList<? extends Number> self, @Nonnull Supplier<? extends Number> supplier) {
142 CollectionBindings.averageInList(self, supplier)
143 }
144
145 @Nonnull
146 static NumberBinding sum(@Nonnull ObservableList<? extends Number> self) {
147 CollectionBindings.sumOfList(self)
148 }
149
150 @Nonnull
151 static <T> NumberBinding min(
152 @Nonnull ObservableList<T> self, @Nonnull Number defaultValue, @Nonnull ToDoubleFunction<? super T> mapper) {
153 CollectionBindings.minInList(self, defaultValue, mapper)
154 }
155
156 @Nonnull
157 static <T> NumberBinding min(
158 @Nonnull ObservableList<T> self,
159 @Nonnull Supplier<? extends Number> supplier, @Nonnull ToDoubleFunction<? super T> mapper) {
160 CollectionBindings.minInList(self, supplier, mapper)
161 }
162
163 @Nonnull
164 static <T> NumberBinding max(
165 @Nonnull ObservableList<T> self, @Nonnull Number defaultValue, @Nonnull ToDoubleFunction<? super T> mapper) {
166 CollectionBindings.maxInList(self, defaultValue, mapper)
167 }
168
169 @Nonnull
170 static <T> NumberBinding max(
171 @Nonnull ObservableList<T> self,
172 @Nonnull Supplier<? extends Number> supplier, @Nonnull ToDoubleFunction<? super T> mapper) {
173 CollectionBindings.maxInList(self, supplier, mapper)
174 }
175
176 @Nonnull
177 static <T> NumberBinding average(
178 @Nonnull ObservableList<T> self, @Nonnull Number defaultValue, @Nonnull ToDoubleFunction<? super T> mapper) {
179 CollectionBindings.averageInList(self, defaultValue, mapper)
180 }
181
182 @Nonnull
183 static <T> NumberBinding average(
184 @Nonnull ObservableList<T> self,
185 @Nonnull Supplier<? extends Number> supplier, @Nonnull ToDoubleFunction<? super T> mapper) {
186 CollectionBindings.averageInList(self, supplier, mapper)
187 }
188
189 @Nonnull
190 static <T> NumberBinding sum(@Nonnull ObservableList<T> self, @Nonnull ToDoubleFunction<? super T> mapper) {
191 CollectionBindings.sumOfList(self, mapper)
192 }
193
194 @Nonnull
195 static <T> NumberBinding min(
196 @Nonnull ObservableList<T> self,
197 @Nonnull Number defaultValue, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
198 CollectionBindings.minInList(self, defaultValue, mapper)
199 }
200
201 @Nonnull
202 static <T> NumberBinding min(
203 @Nonnull ObservableList<T> self,
204 @Nonnull Supplier<? extends Number> supplier, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
205 CollectionBindings.minInList(self, supplier, mapper)
206 }
207
208 @Nonnull
209 static <T> NumberBinding max(
210 @Nonnull ObservableList<T> self,
211 @Nonnull Number defaultValue, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
212 CollectionBindings.maxInList(self, defaultValue, mapper)
213 }
214
215 @Nonnull
216 static <T> NumberBinding max(
217 @Nonnull ObservableList<T> self,
218 @Nonnull Supplier<? extends Number> supplier, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
219 CollectionBindings.maxInList(self, supplier, mapper)
220 }
221
222 @Nonnull
223 static <T> NumberBinding average(
224 @Nonnull ObservableList<T> self,
225 @Nonnull Number defaultValue, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
226 CollectionBindings.averageInList(self, defaultValue, mapper)
227 }
228
229 @Nonnull
230 static <T> NumberBinding average(
231 @Nonnull ObservableList<T> self,
232 @Nonnull Supplier<? extends Number> supplier, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
233 CollectionBindings.averageInList(self, supplier, mapper)
234 }
235
236 @Nonnull
237 static <T> NumberBinding sum(
238 @Nonnull ObservableList<T> self, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
239 CollectionBindings.sumOfList(self, mapper)
240 }
241
242 @Nonnull
243 static NumberBinding min(@Nonnull ObservableSet<? extends Number> self, @Nonnull Number defaultValue) {
244 CollectionBindings.minInSet(self, defaultValue)
245 }
246
247 @Nonnull
248 static NumberBinding min(
249 @Nonnull ObservableSet<? extends Number> self, @Nonnull Supplier<? extends Number> supplier) {
250 CollectionBindings.minInSet(self, supplier)
251 }
252
253 @Nonnull
254 static NumberBinding max(@Nonnull ObservableSet<? extends Number> self, @Nonnull Number defaultValue) {
255 CollectionBindings.maxInSet(self, defaultValue)
256 }
257
258 @Nonnull
259 static NumberBinding max(
260 @Nonnull ObservableSet<? extends Number> self, @Nonnull Supplier<? extends Number> supplier) {
261 CollectionBindings.maxInSet(self, supplier)
262 }
263
264 @Nonnull
265 static NumberBinding average(@Nonnull ObservableSet<? extends Number> self, @Nonnull Number defaultValue) {
266 CollectionBindings.averageInSet(self, defaultValue)
267 }
268
269 @Nonnull
270 static NumberBinding average(
271 @Nonnull ObservableSet<? extends Number> self, @Nonnull Supplier<? extends Number> supplier) {
272 CollectionBindings.averageInSet(self, supplier)
273 }
274
275 @Nonnull
276 static NumberBinding sum(@Nonnull ObservableSet<? extends Number> self) {
277 CollectionBindings.sumOfSet(self)
278 }
279
280 @Nonnull
281 static <T> NumberBinding min(
282 @Nonnull ObservableSet<T> self, @Nonnull Number defaultValue, @Nonnull ToDoubleFunction<? super T> mapper) {
283 CollectionBindings.minInSet(self, defaultValue, mapper)
284 }
285
286 @Nonnull
287 static <T> NumberBinding min(
288 @Nonnull ObservableSet<T> self,
289 @Nonnull Supplier<? extends Number> supplier, @Nonnull ToDoubleFunction<? super T> mapper) {
290 CollectionBindings.minInSet(self, supplier, mapper)
291 }
292
293 @Nonnull
294 static <T> NumberBinding max(
295 @Nonnull ObservableSet<T> self, @Nonnull Number defaultValue, @Nonnull ToDoubleFunction<? super T> mapper) {
296 CollectionBindings.maxInSet(self, defaultValue, mapper)
297 }
298
299 @Nonnull
300 static <T> NumberBinding max(
301 @Nonnull ObservableSet<T> self,
302 @Nonnull Supplier<? extends Number> supplier, @Nonnull ToDoubleFunction<? super T> mapper) {
303 CollectionBindings.maxInSet(self, supplier, mapper)
304 }
305
306 @Nonnull
307 static <T> NumberBinding average(
308 @Nonnull ObservableSet<T> self, @Nonnull Number defaultValue, @Nonnull ToDoubleFunction<? super T> mapper) {
309 CollectionBindings.averageInSet(self, defaultValue, mapper)
310 }
311
312 @Nonnull
313 static <T> NumberBinding average(
314 @Nonnull ObservableSet<T> self,
315 @Nonnull Supplier<? extends Number> supplier, @Nonnull ToDoubleFunction<? super T> mapper) {
316 CollectionBindings.averageInSet(self, supplier, mapper)
317 }
318
319 @Nonnull
320 static <T> NumberBinding sum(@Nonnull ObservableSet<T> self, @Nonnull ToDoubleFunction<? super T> mapper) {
321 CollectionBindings.sumOfSet(self, mapper)
322 }
323
324 @Nonnull
325 static <T> NumberBinding min(
326 @Nonnull ObservableSet<T> self,
327 @Nonnull Number defaultValue, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
328 CollectionBindings.minInSet(self, defaultValue, mapper)
329 }
330
331 @Nonnull
332 static <T> NumberBinding min(
333 @Nonnull ObservableSet<T> self,
334 @Nonnull Supplier<? extends Number> supplier, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
335 CollectionBindings.minInSet(self, supplier, mapper)
336 }
337
338 @Nonnull
339 static <T> NumberBinding max(
340 @Nonnull ObservableSet<T> self,
341 @Nonnull Number defaultValue, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
342 CollectionBindings.maxInSet(self, defaultValue, mapper)
343 }
344
345 @Nonnull
346 static <T> NumberBinding max(
347 @Nonnull ObservableSet<T> self,
348 @Nonnull Supplier<? extends Number> supplier, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
349 CollectionBindings.maxInSet(self, supplier, mapper)
350 }
351
352 @Nonnull
353 static <T> NumberBinding average(
354 @Nonnull ObservableSet<T> self,
355 @Nonnull Number defaultValue, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
356 CollectionBindings.averageInSet(self, defaultValue, mapper)
357 }
358
359 @Nonnull
360 static <T> NumberBinding average(
361 @Nonnull ObservableSet<T> self,
362 @Nonnull Supplier<? extends Number> supplier, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
363 CollectionBindings.averageInSet(self, supplier, mapper)
364 }
365
366 @Nonnull
367 static <T> NumberBinding sum(
368 @Nonnull ObservableSet<T> self, @Nonnull ObservableValue<ToDoubleFunction<? super T>> mapper) {
369 CollectionBindings.sumOfSet(self, mapper)
370 }
371
372 @Nonnull
373 static <K> NumberBinding min(
374 @Nonnull ObservableMap<K, ? extends Number> self, @Nonnull Number defaultValue) {
375 CollectionBindings.minInMap(self, defaultValue)
376 }
377
378 @Nonnull
379 static <K> NumberBinding min(
380 @Nonnull ObservableMap<K, ? extends Number> self, @Nonnull Supplier<? extends Number> supplier) {
381 CollectionBindings.minInMap(self, supplier)
382 }
383
384 @Nonnull
385 static <K> NumberBinding max(
386 @Nonnull ObservableMap<K, ? extends Number> self, @Nonnull Number defaultValue) {
387 CollectionBindings.maxInMap(self, defaultValue)
388 }
389
390 @Nonnull
391 static <K> NumberBinding max(
392 @Nonnull ObservableMap<K, ? extends Number> self, @Nonnull Supplier<? extends Number> supplier) {
393 CollectionBindings.maxInMap(self, supplier)
394 }
395
396 @Nonnull
397 static <K> NumberBinding average(
398 @Nonnull ObservableMap<K, ? extends Number> self, @Nonnull Number defaultValue) {
399 CollectionBindings.averageInMap(self, defaultValue)
400 }
401
402 @Nonnull
403 static <K> NumberBinding average(
404 @Nonnull ObservableMap<K, ? extends Number> self, @Nonnull Supplier<? extends Number> supplier) {
405 CollectionBindings.averageInMap(self, supplier)
406 }
407
408 @Nonnull
409 static <K> NumberBinding sum(@Nonnull ObservableMap<K, ? extends Number> self) {
410 CollectionBindings.sumOfMap(self)
411 }
412
413 @Nonnull
414 static <K, V> NumberBinding min(
415 @Nonnull ObservableMap<K, V> self,
416 @Nonnull Number defaultValue, @Nonnull ToDoubleFunction<? super V> mapper) {
417 CollectionBindings.minInMap(self, defaultValue, mapper)
418 }
419
420 @Nonnull
421 static <K, V> NumberBinding min(
422 @Nonnull ObservableMap<K, V> self,
423 @Nonnull Supplier<? extends Number> supplier, @Nonnull ToDoubleFunction<? super V> mapper) {
424 CollectionBindings.minInMap(self, supplier, mapper)
425 }
426
427 @Nonnull
428 static <K, V> NumberBinding max(
429 @Nonnull ObservableMap<K, V> self,
430 @Nonnull Number defaultValue, @Nonnull ToDoubleFunction<? super V> mapper) {
431 CollectionBindings.maxInMap(self, defaultValue, mapper)
432 }
433
434 @Nonnull
435 static <K, V> NumberBinding max(
436 @Nonnull ObservableMap<K, V> self,
437 @Nonnull Supplier<? extends Number> supplier, @Nonnull ToDoubleFunction<? super V> mapper) {
438 CollectionBindings.maxInMap(self, supplier, mapper)
439 }
440
441 @Nonnull
442 static <K, V> NumberBinding average(
443 @Nonnull ObservableMap<K, V> self,
444 @Nonnull Number defaultValue, @Nonnull ToDoubleFunction<? super V> mapper) {
445 CollectionBindings.averageInMap(self, defaultValue, mapper)
446 }
447
448 @Nonnull
449 static <K, V> NumberBinding average(
450 @Nonnull ObservableMap<K, V> self,
451 @Nonnull Supplier<? extends Number> supplier, @Nonnull ToDoubleFunction<? super V> mapper) {
452 CollectionBindings.averageInMap(self, supplier, mapper)
453 }
454
455 @Nonnull
456 static <K, V> NumberBinding sum(
457 @Nonnull ObservableMap<K, V> self, @Nonnull ToDoubleFunction<? super V> mapper) {
458 CollectionBindings.sumOfMap(self, mapper)
459 }
460
461 @Nonnull
462 static <K, V> NumberBinding min(
463 @Nonnull ObservableMap<K, V> self,
464 @Nonnull Number defaultValue, @Nonnull ObservableValue<ToDoubleFunction<? super V>> mapper) {
465 CollectionBindings.minInMap(self, defaultValue, mapper)
466 }
467
468 @Nonnull
469 static <K, V> NumberBinding min(
470 @Nonnull ObservableMap<K, V> self,
471 @Nonnull Supplier<? extends Number> supplier, @Nonnull ObservableValue<ToDoubleFunction<? super V>> mapper) {
472 CollectionBindings.minInMap(self, supplier, mapper)
473 }
474
475 @Nonnull
476 static <K, V> NumberBinding max(
477 @Nonnull ObservableMap<K, V> self,
478 @Nonnull Number defaultValue, @Nonnull ObservableValue<ToDoubleFunction<? super V>> mapper) {
479 CollectionBindings.maxInMap(self, defaultValue, mapper)
480 }
481
482 @Nonnull
483 static <K, V> NumberBinding max(
484 @Nonnull ObservableMap<K, V> self,
485 @Nonnull Supplier<? extends Number> supplier, @Nonnull ObservableValue<ToDoubleFunction<? super V>> mapper) {
486 CollectionBindings.maxInMap(self, supplier, mapper)
487 }
488
489 @Nonnull
490 static <K, V> NumberBinding average(
491 @Nonnull ObservableMap<K, V> self,
492 @Nonnull Number defaultValue, @Nonnull ObservableValue<ToDoubleFunction<? super V>> mapper) {
493 CollectionBindings.averageInMap(self, defaultValue, mapper)
494 }
495
496 @Nonnull
497 static <K, V> NumberBinding average(
498 @Nonnull ObservableMap<K, V> self,
499 @Nonnull Supplier<? extends Number> supplier, @Nonnull ObservableValue<ToDoubleFunction<? super V>> mapper) {
500 CollectionBindings.averageInMap(self, supplier, mapper)
501 }
502
503 @Nonnull
504 static <K, V> NumberBinding sum(
505 @Nonnull ObservableMap<K, V> self, @Nonnull ObservableValue<ToDoubleFunction<? super V>> mapper) {
506 CollectionBindings.sumOfMap(self, mapper)
507 }
508 }
|