package appeng.client.gui.implementations; import java.util.function.Consumer; import java.util.function.LongConsumer; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.IGuiEventListener; import net.minecraft.client.gui.widget.button.Button; import appeng.client.gui.AEBaseScreen; import appeng.client.gui.NumberEntryType; import appeng.client.gui.widgets.ITickingWidget; import appeng.client.gui.widgets.NumberBox; import appeng.core.AEConfig; /** * A utility widget that consists of a text-field to enter a number with * attached buttons to increment/decrement the number in fixed intervals. */ public class NumberEntryWidget implements ITickingWidget { private final AEBaseScreen parent; private final int x; private final int y; private final NumberBox level; private final NumberEntryType type; private Button plus1; private Button plus10; private Button plus100; private Button plus1000; private Button minus1; private Button minus10; private Button minus100; private Button minus1000; public NumberEntryWidget(AEBaseScreen parent, int x, int y, int width, int height, NumberEntryType type, LongConsumer changeListener) { this.parent = parent; this.x = x; this.y = y; this.type = type; FontRenderer font = parent.getMinecraft().fontRenderer; int inputX = parent.getGuiLeft() + x; int inputY = parent.getGuiTop() + y; this.level = new NumberBox(font, inputX, inputY, width, font.FONT_HEIGHT, type.getInputType(), changeListener); this.level.setEnableBackgroundDrawing(false); this.level.setMaxStringLength(16); this.level.setTextColor(0xFFFFFF); this.level.setVisible(true); this.level.setFocused2(true); parent.setFocusedDefault(this.level); } public void setActive(boolean active) { this.level.setEnabled(active); this.plus1.active = active; this.plus10.active = active; this.plus100.active = active; this.plus1000.active = active; this.minus1.active = active; this.minus10.active = active; this.minus100.active = active; this.minus1000.active = active; } public void setTextFieldBounds(int x, int y, int width) { this.level.x = parent.getGuiLeft() + x; this.level.y = parent.getGuiTop() + y; this.level.setWidth(width); } public void setMinValue(long minValue) { this.level.setMinValue(minValue); } public void addButtons(Consumer addChildren, Consumer