]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/gui/ListHelper.java
Fully support keyboard nav in gui
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / gui / ListHelper.java
1 package com.irtimaled.bbor.client.gui;
2
3 import java.util.List;
4 import java.util.ListIterator;
5 import java.util.function.Consumer;
6 import java.util.function.Predicate;
7 import java.util.function.Supplier;
8
9 public class ListHelper {
10     public static <T> boolean findNextMatch(List<? extends T> list, int index, boolean forward, Predicate<T> match, Consumer<T> consumer) {
11         ListIterator<? extends T> iterator = list.listIterator(index);
12         Supplier<Boolean> hasMore = forward ? iterator::hasNext : iterator::hasPrevious;
13         Supplier<T> more = forward ? iterator::next : iterator::previous;
14
15         while (hasMore.get()) {
16             T item = more.get();
17             if (match.test(item)) {
18                 consumer.accept(item);
19                 return true;
20             }
21         }
22         return false;
23     }
24 }