aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-22 01:05:04 +0800
committershedaniel <daniel@shedaniel.me>2023-05-29 21:04:47 +0800
commit52e9609e7ac8e15bdca8ceaafe7160c1c8b7d6c7 (patch)
tree63bf5bc73a5f3313c52cc951507d7dd2522e06cb /runtime/src/main/java
parent883e500b6b1892d63fe7b9118f944d4f808e9a79 (diff)
downloadRoughlyEnoughItems-52e9609e7ac8e15bdca8ceaafe7160c1c8b7d6c7.tar.gz
RoughlyEnoughItems-52e9609e7ac8e15bdca8ceaafe7160c1c8b7d6c7.tar.bz2
RoughlyEnoughItems-52e9609e7ac8e15bdca8ceaafe7160c1c8b7d6c7.zip
Retain expand state
Diffstat (limited to 'runtime/src/main/java')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListSearchManager.java18
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/collapsed/CollapsedStack.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/collapsed/CollapsibleEntryRegistryImpl.java34
3 files changed, 42 insertions, 19 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListSearchManager.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListSearchManager.java
index c1b094c02..55e7b8a62 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListSearchManager.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListSearchManager.java
@@ -92,10 +92,10 @@ public class EntryListSearchManager {
private List</*EntryStack<?> | CollapsedStack*/ Object> collapse(List<EntryStack<?>> stacks) {
CollapsibleEntryRegistryImpl collapsibleRegistry = (CollapsibleEntryRegistryImpl) CollapsibleEntryRegistry.getInstance();
- Map<CollapsibleEntryRegistryImpl.Matcher, @Nullable CollapsedStack> matchers = new HashMap<>();
+ Map<CollapsibleEntryRegistryImpl.Entry, @Nullable CollapsedStack> entries = new HashMap<>();
- for (CollapsibleEntryRegistryImpl.Matcher matcher : collapsibleRegistry.getMatchers()) {
- matchers.put(matcher, null);
+ for (CollapsibleEntryRegistryImpl.Entry entry : collapsibleRegistry.getEntries()) {
+ entries.put(entry, null);
}
List</*EntryStack<?> | CollapsedStack*/ Object> list = new ArrayList<>();
@@ -104,17 +104,17 @@ public class EntryListSearchManager {
long hashExact = EntryStacks.hashExact(stack);
boolean matchedAny = false;
- for (Map.Entry<CollapsibleEntryRegistryImpl.Matcher, @Nullable CollapsedStack> entry : matchers.entrySet()) {
- CollapsibleEntryRegistryImpl.Matcher matcher = entry.getKey();
+ for (Map.Entry<CollapsibleEntryRegistryImpl.Entry, @Nullable CollapsedStack> mapEntry : entries.entrySet()) {
+ CollapsibleEntryRegistryImpl.Entry entry = mapEntry.getKey();
- if (matcher.matches(stack, hashExact)) {
- CollapsedStack collapsed = entry.getValue();
+ if (entry.getMatcher().matches(stack, hashExact)) {
+ CollapsedStack collapsed = mapEntry.getValue();
if (collapsed == null) {
List<EntryStack<?>> ingredient = new ArrayList<>();
ingredient.add(stack);
- collapsed = new CollapsedStack(ingredient);
- entry.setValue(collapsed);
+ collapsed = new CollapsedStack(ingredient, entry);
+ mapEntry.setValue(collapsed);
list.add(collapsed);
} else {
collapsed.getIngredient().add(stack);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/collapsed/CollapsedStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/collapsed/CollapsedStack.java
index 7aa7670ef..a34febbec 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/collapsed/CollapsedStack.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/collapsed/CollapsedStack.java
@@ -29,10 +29,11 @@ import java.util.List;
public class CollapsedStack {
private final List<EntryStack<?>> ingredient;
- private boolean expanded;
+ private final CollapsibleEntryRegistryImpl.Entry entry;
- public CollapsedStack(List<EntryStack<?>> ingredient) {
+ public CollapsedStack(List<EntryStack<?>> ingredient, CollapsibleEntryRegistryImpl.Entry entry) {
this.ingredient = ingredient;
+ this.entry = entry;
}
public List<EntryStack<?>> getIngredient() {
@@ -40,10 +41,10 @@ public class CollapsedStack {
}
public boolean isExpanded() {
- return expanded;
+ return entry.isExpanded();
}
public void setExpanded(boolean expanded) {
- this.expanded = expanded;
+ this.entry.setExpanded(expanded);
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/collapsed/CollapsibleEntryRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/collapsed/CollapsibleEntryRegistryImpl.java
index 338c1a8a4..8a7028ffa 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/collapsed/CollapsibleEntryRegistryImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/collapsed/CollapsibleEntryRegistryImpl.java
@@ -36,23 +36,23 @@ import java.util.Objects;
import java.util.function.Predicate;
public class CollapsibleEntryRegistryImpl implements CollapsibleEntryRegistry {
- private final List<Matcher> matchers = new ArrayList<>();
+ private final List<Entry> entries = new ArrayList<>();
@Override
public <T> void group(List<? extends EntryStack<? extends T>> stacks) {
Objects.requireNonNull(stacks, "stacks");
- this.matchers.add(new ListMatcher(stacks));
+ this.entries.add(new Entry(new ListMatcher(stacks)));
}
@Override
public void group(Predicate<? extends EntryStack<?>> predicate) {
Objects.requireNonNull(predicate, "predicate");
- this.matchers.add((stack, hashExact) -> ((Predicate<EntryStack<?>>) predicate).test(stack));
+ this.entries.add(new Entry((stack, hashExact) -> ((Predicate<EntryStack<?>>) predicate).test(stack)));
}
@Override
public void startReload() {
- this.matchers.clear();
+ this.entries.clear();
}
@Override
@@ -60,10 +60,32 @@ public class CollapsibleEntryRegistryImpl implements CollapsibleEntryRegistry {
plugin.registerCollapsibleEntries(this);
}
- public List<Matcher> getMatchers() {
- return matchers;
+ public List<Entry> getEntries() {
+ return entries;
}
+ public static class Entry {
+ private final Matcher matcher;
+ private boolean expanded;
+
+ public Entry(Matcher matcher) {
+ this.matcher = matcher;
+ }
+
+ public Matcher getMatcher() {
+ return matcher;
+ }
+
+ public boolean isExpanded() {
+ return expanded;
+ }
+
+ public void setExpanded(boolean expanded) {
+ this.expanded = expanded;
+ }
+ }
+
+
@FunctionalInterface
public interface Matcher {
boolean matches(EntryStack<?> stack, long hashExact);