aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java b/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java
new file mode 100644
index 000000000..eeb782220
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java
@@ -0,0 +1,96 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
+package me.shedaniel.rei.gui;
+
+import me.shedaniel.math.compat.RenderHelper;
+import me.shedaniel.rei.gui.widget.TextFieldWidget;
+import me.shedaniel.rei.impl.ScreenHelper;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.render.GuiLighting;
+import net.minecraft.client.resource.language.I18n;
+import net.minecraft.client.sound.PositionedSoundInstance;
+import net.minecraft.client.util.InputUtil;
+import net.minecraft.sound.SoundEvents;
+
+public class OverlaySearchField extends TextFieldWidget {
+
+ public static boolean isSearching = false;
+ public long keybindFocusTime = -1;
+ public int keybindFocusKey = -1;
+ protected long lastClickedTime = -1;
+
+ OverlaySearchField(int x, int y, int width, int height) {
+ super(x, y, width, height);
+ setMaxLength(10000);
+ }
+
+ public void laterRender(int int_1, int int_2, float float_1) {
+ GuiLighting.disable();
+ RenderHelper.disableDepthTest();
+ setEditableColor(ContainerScreenOverlay.getEntryListWidget().children().isEmpty() && !getText().isEmpty() ? 16733525 : isSearching ? -1313241 : 14737632);
+ setSuggestion(!isFocused() && getText().isEmpty() ? I18n.translate("text.rei.search.field.suggestion") : null);
+ super.render(int_1, int_2, float_1);
+ RenderHelper.enableDepthTest();
+ }
+
+ @Override
+ public void renderBorder() {
+ if (!isSearching)
+ super.renderBorder();
+ else if (this.hasBorder()) {
+ fill(this.getBounds().x - 1, this.getBounds().y - 1, this.getBounds().x + this.getBounds().width + 1, this.getBounds().y + this.getBounds().height + 1, -1313241);
+ fill(this.getBounds().x, this.getBounds().y, this.getBounds().x + this.getBounds().width, this.getBounds().y + this.getBounds().height, -16777216);
+ }
+ }
+
+ @Override
+ public boolean mouseClicked(double double_1, double double_2, int int_1) {
+ boolean contains = containsMouse(double_1, double_2);
+ if (isVisible() && contains && int_1 == 1)
+ setText("");
+ if (contains && int_1 == 0)
+ if (lastClickedTime == -1)
+ lastClickedTime = System.currentTimeMillis();
+ else if (System.currentTimeMillis() - lastClickedTime > 1200)
+ lastClickedTime = -1;
+ else {
+ lastClickedTime = -1;
+ isSearching = !isSearching;
+ minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F));
+ }
+ return super.mouseClicked(double_1, double_2, int_1);
+ }
+
+ @Override
+ public boolean keyPressed(int int_1, int int_2, int int_3) {
+ if (this.isVisible() && this.isFocused())
+ if (int_1 == 257 || int_1 == 335) {
+ setFocused(false);
+ return true;
+ }
+ return super.keyPressed(int_1, int_2, int_3);
+ }
+
+ @Override
+ public boolean charTyped(char char_1, int int_1) {
+ if (System.currentTimeMillis() - keybindFocusTime < 1000 && InputUtil.isKeyPressed(MinecraftClient.getInstance().window.getHandle(), keybindFocusKey)) {
+ keybindFocusTime = -1;
+ keybindFocusKey = -1;
+ return true;
+ }
+ return super.charTyped(char_1, int_1);
+ }
+
+ @Override
+ public boolean containsMouse(double mouseX, double mouseY) {
+ return ScreenHelper.getLastOverlay().isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY);
+ }
+
+ @Override
+ public void render(int int_1, int int_2, float float_1) {
+ }
+
+}