]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/gui/ListScreen.java
2339ac86ba846f51d6334415c0afd0b6e8409bf6
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / gui / ListScreen.java
1 package com.irtimaled.bbor.client.gui;
2
3 import com.irtimaled.bbor.client.interop.ClientInterop;
4 import net.minecraft.client.gui.GuiScreen;
5 import net.minecraft.client.resources.I18n;
6
7 public abstract class ListScreen extends GuiScreen {
8     private final GuiScreen lastScreen;
9
10     private AbstractButton doneButton;
11     private String title;
12     private ControlList controlList;
13     private SearchField searchField;
14
15     ListScreen(GuiScreen lastScreen) {
16         this.lastScreen = lastScreen;
17     }
18
19     ListScreen() {
20         this(null);
21     }
22
23     protected void onDoneClicked() {
24         ClientInterop.displayScreen(lastScreen);
25     }
26
27     @Override
28     protected void initGui() {
29         this.title = "Bounding Box Outline Reloaded";
30         this.controlList = new ControlList(this.width, this.height, 48, this.height - 28);
31         this.searchField = new SearchField(this.fontRenderer, this.width / 2 - 100, 22, 200, 20, this.controlList);
32         this.doneButton = new AbstractButton(this.width / 2 - 100, this.height - 24, 200, I18n.format("gui.done")) {
33             @Override
34             public void onPressed() {
35                 onDoneClicked();
36             }
37         };
38
39         this.children.add(this.doneButton);
40         this.children.add(this.controlList);
41         this.children.add(this.searchField);
42         this.setup();
43     }
44
45     protected abstract void setup();
46
47     @Override
48     public void render(int mouseX, int mouseY, float unknown) {
49         render(mouseX, mouseY);
50     }
51
52     protected void render(int mouseX, int mouseY) {
53         this.controlList.render(mouseX, mouseY);
54
55         this.drawCenteredString(this.fontRenderer, this.title, this.width / 2, 8, 16777215);
56         this.searchField.render(mouseX, mouseY);
57         this.doneButton.render(mouseX, mouseY);
58     }
59
60     @Override
61     public void tick() {
62         this.searchField.tick();
63     }
64
65     @Override
66     public boolean keyPressed(int key, int scanCode, int modifiers) {
67         return super.keyPressed(key, scanCode, modifiers) || this.searchField.keyPressed(key, scanCode, modifiers);
68     }
69
70     @Override
71     public boolean charTyped(char character, int modifiers) {
72         return this.searchField.charTyped(character, modifiers);
73     }
74
75     @Override
76     public boolean mouseScrolled(double scrollAmount) {
77         return this.controlList.mouseScrolled(scrollAmount);
78     }
79
80     @Override
81     public void onGuiClosed() {
82         this.controlList.close();
83     }
84
85     ControlList getControlList() {
86         return this.controlList;
87     }
88
89     AbstractButton getDoneButton() {
90         return doneButton;
91     }
92 }