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