aboutsummaryrefslogtreecommitdiff
path: root/runtime-frontend/overlay/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'runtime-frontend/overlay/src/main/java')
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java34
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/OverlayWidgetProvider.java11
2 files changed, 29 insertions, 16 deletions
diff --git a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java
index f4d8a1875..6245a1730 100644
--- a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java
+++ b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java
@@ -55,10 +55,6 @@ public final class ScreenOverlayImpl extends AbstractScreenOverlay {
private TextField searchField = null;
private BooleanSupplier isHighlighted = null;
- public ScreenOverlayImpl() {
- this.init();
- }
-
@Override
public void init() {
super.init();
@@ -74,22 +70,36 @@ public final class ScreenOverlayImpl extends AbstractScreenOverlay {
EntryListWidget entryListWidget = getEntryList();
entryListWidget.initBounds(this.getBounds());
- entryListWidget.initSearch(searchField.getText(), true);
this.children().add(entryListWidget.asWidget());
- searchField.setResponder(s -> entryListWidget.initSearch(s, false));
entryListWidget.init(this);
for (OverlayWidgetProvider provider : OverlayWidgetProvider.PROVIDERS) {
- provider.provide(this, menuAccess(), (textField, isHighlighted) -> {
- this.searchField = textField;
- this.isHighlighted = isHighlighted;
- }, LateRenderableWidget::new);
+ provider.provide(this, menuAccess(), new OverlayWidgetProvider.WidgetSink() {
+ @Override
+ public void accept(Widget widget) {
+ ScreenOverlayImpl.this.children().add(widget);
+ }
+
+ @Override
+ public void acceptLateRendered(Widget widget) {
+ accept(new LateRenderableWidget(widget));
+ }
+
+ @Override
+ public void acceptTextField(TextField textField, BooleanSupplier isHighlighted) {
+ ScreenOverlayImpl.this.searchField = textField;
+ ScreenOverlayImpl.this.isHighlighted = isHighlighted;
+ }
+ });
}
if (this.searchField != null) {
- this.children().add(this.searchField.asWidget());
+ this.children().add(new LateRenderableWidget(this.searchField.asWidget()));
+ this.searchField.setResponder(s -> entryListWidget.initSearch(s, false));
+ entryListWidget.initSearch(searchField.getText(), true);
} else {
InternalLogger.getInstance().warn("Search Field is not found! This might cause problems!");
+ entryListWidget.initSearch("", true);
}
}
@@ -143,7 +153,7 @@ public final class ScreenOverlayImpl extends AbstractScreenOverlay {
current = provider.getEntryList();
if (current != null) break;
}
- if (current != null) throw new IllegalStateException("No Entry List available!");
+ if (current == null) throw new IllegalStateException("No Entry List available!");
if (current != entryListWidget) {
entryListWidget = current;
current.initBounds(Objects.requireNonNullElse(getBounds(), new Rectangle()));
diff --git a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/OverlayWidgetProvider.java b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/OverlayWidgetProvider.java
index 3c19aa6b7..0c159ebb3 100644
--- a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/OverlayWidgetProvider.java
+++ b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/OverlayWidgetProvider.java
@@ -31,14 +31,17 @@ import me.shedaniel.rei.impl.client.gui.menu.MenuAccess;
import java.util.List;
import java.util.function.BooleanSupplier;
-import java.util.function.UnaryOperator;
public interface OverlayWidgetProvider {
List<OverlayWidgetProvider> PROVIDERS = ClientInternals.resolveServices(OverlayWidgetProvider.class);
- List<Widget> provide(ScreenOverlay overlay, MenuAccess access, TextFieldSink textFieldSink, UnaryOperator<Widget> lateRenderable);
+ void provide(ScreenOverlay overlay, MenuAccess access, WidgetSink sink);
- interface TextFieldSink {
- void accept(TextField textField, BooleanSupplier isHighlighted);
+ interface WidgetSink {
+ void accept(Widget widget);
+
+ void acceptLateRendered(Widget widget);
+
+ void acceptTextField(TextField textField, BooleanSupplier isHighlighted);
}
}