diff options
author | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-06-06 18:20:23 +0200 |
---|---|---|
committer | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-06-06 18:20:23 +0200 |
commit | 21d31344a151dfe94c79a20b503af55120c63b63 (patch) | |
tree | 6bae89e3532b2ed976a493ff8d6b5b7bfed94221 /src/main/java/cc/polyfrost/oneconfig/gui/elements/config | |
parent | 462d5976f3654f40229ff61391e7e55d0819d82d (diff) | |
download | OneConfig-21d31344a151dfe94c79a20b503af55120c63b63.tar.gz OneConfig-21d31344a151dfe94c79a20b503af55120c63b63.tar.bz2 OneConfig-21d31344a151dfe94c79a20b503af55120c63b63.zip |
rewrite config system
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/gui/elements/config')
12 files changed, 112 insertions, 63 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigButton.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigButton.java index a488fea..9879ac2 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigButton.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigButton.java @@ -1,8 +1,9 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.Button; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.gui.elements.BasicButton; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.renderer.RenderManager; import cc.polyfrost.oneconfig.renderer.font.Fonts; import cc.polyfrost.oneconfig.utils.color.ColorPalette; @@ -12,18 +13,23 @@ import java.lang.reflect.Field; public class ConfigButton extends BasicOption { private final BasicButton button; - public ConfigButton(Runnable runnable, Object parent, String name, int size, String text) { - super(null, parent, name, size); + public ConfigButton(Runnable runnable, Object parent, String name, String category, String subcategory, int size, String text) { + super(null, parent, name, category, subcategory, size); this.button = new BasicButton(size == 1 ? 128 : 256, 32, text, BasicButton.ALIGNMENT_CENTER, ColorPalette.PRIMARY); this.button.setClickAction(runnable); } - public ConfigButton(Field field, Object parent, String name, int size, String text) { - super(field, parent, name, size); + public ConfigButton(Field field, Object parent, String name, String category, String subcategory, int size, String text) { + super(field, parent, name, category, subcategory, size); this.button = new BasicButton(size == 1 ? 128 : 256, 32, text, BasicButton.ALIGNMENT_CENTER, ColorPalette.PRIMARY); this.button.setClickAction(getRunnableFromField(field, parent)); } + public static ConfigButton create(Field field, Object parent) { + Button button = field.getAnnotation(Button.class); + return new ConfigButton(field, parent, button.name(), button.category(), button.subcategory(), button.size(), button.text()); + } + private static Runnable getRunnableFromField(Field field, Object parent) { Runnable runnable = () -> { }; diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigCheckbox.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigCheckbox.java index b21c7dc..0ff7d8f 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigCheckbox.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigCheckbox.java @@ -1,6 +1,7 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.Checkbox; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.gui.animations.Animation; import cc.polyfrost.oneconfig.gui.animations.ColorAnimation; @@ -8,7 +9,7 @@ import cc.polyfrost.oneconfig.gui.animations.DummyAnimation; import cc.polyfrost.oneconfig.gui.animations.EaseInOutQuad; import cc.polyfrost.oneconfig.renderer.RenderManager; import cc.polyfrost.oneconfig.renderer.font.Fonts; -import cc.polyfrost.oneconfig.renderer.image.SVGs; +import cc.polyfrost.oneconfig.internal.assets.SVGs; import cc.polyfrost.oneconfig.utils.InputUtils; import cc.polyfrost.oneconfig.utils.color.ColorPalette; import cc.polyfrost.oneconfig.utils.color.ColorUtils; @@ -21,8 +22,13 @@ public class ConfigCheckbox extends BasicOption { private final ColorAnimation color = new ColorAnimation(ColorPalette.SECONDARY); private Animation animation; - public ConfigCheckbox(Field field, Object parent, String name, int size) { - super(field, parent, name, size); + public ConfigCheckbox(Field field, Object parent, String name, String category, String subcategory, int size) { + super(field, parent, name, category, subcategory, size); + } + + public static ConfigCheckbox create(Field field, Object parent) { + Checkbox checkbox = field.getAnnotation(Checkbox.class); + return new ConfigCheckbox(field, parent, checkbox.name(), checkbox.category(), checkbox.subcategory(), checkbox.size()); } @Override diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigColorElement.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigColorElement.java index 0e13f07..5cd9c83 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigColorElement.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigColorElement.java @@ -1,6 +1,7 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.Color; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.core.OneColor; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.gui.OneConfigGui; @@ -9,7 +10,7 @@ import cc.polyfrost.oneconfig.gui.elements.ColorSelector; import cc.polyfrost.oneconfig.gui.elements.text.TextInputField; import cc.polyfrost.oneconfig.renderer.RenderManager; import cc.polyfrost.oneconfig.renderer.font.Fonts; -import cc.polyfrost.oneconfig.renderer.image.Images; +import cc.polyfrost.oneconfig.internal.assets.Images; import cc.polyfrost.oneconfig.utils.InputUtils; import java.lang.reflect.Field; @@ -20,13 +21,18 @@ public class ConfigColorElement extends BasicOption { private final BasicElement element = new BasicElement(64, 32, false); private boolean open = false; - public ConfigColorElement(Field field, Object parent, String name, int size) { - super(field, parent, name, size); + public ConfigColorElement(Field field, Object parent, String name, String category, String subcategory, int size) { + super(field, parent, name, category, subcategory, size); hexField.setCentered(true); alphaField.setCentered(true); alphaField.onlyAcceptNumbers(true); } + public static ConfigColorElement create(Field field, Object parent) { + Color color = field.getAnnotation(Color.class); + return new ConfigColorElement(field, parent, color.name(), color.category(), color.subcategory(), color.size()); + } + @Override public void draw(long vg, int x, int y) { if (!isEnabled()) RenderManager.setAlpha(vg, 0.5f); diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java index 1d64420..657cf99 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java @@ -1,11 +1,12 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.Dropdown; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.gui.animations.ColorAnimation; import cc.polyfrost.oneconfig.renderer.RenderManager; import cc.polyfrost.oneconfig.renderer.font.Fonts; -import cc.polyfrost.oneconfig.renderer.image.SVGs; +import cc.polyfrost.oneconfig.internal.assets.SVGs; import cc.polyfrost.oneconfig.utils.InputUtils; import cc.polyfrost.oneconfig.utils.color.ColorPalette; import org.lwjgl.input.Mouse; @@ -20,11 +21,16 @@ public class ConfigDropdown extends BasicOption { private final ColorAnimation atomColor = new ColorAnimation(new ColorPalette(Colors.PRIMARY_600, Colors.PRIMARY_500, Colors.PRIMARY_500)); private boolean opened = false; - public ConfigDropdown(Field field, Object parent, String name, int size, String[] options) { - super(field, parent, name, size); + public ConfigDropdown(Field field, Object parent, String name, String category, String subcategory, int size, String[] options) { + super(field, parent, name, category, subcategory, size); this.options = options; } + public static ConfigDropdown create(Field field, Object parent) { + Dropdown dropdown = field.getAnnotation(Dropdown.class); + return new ConfigDropdown(field, parent, dropdown.name(), dropdown.category(), dropdown.subcategory(), dropdown.size(), dropdown.options()); + } + @Override public void draw(long vg, int x, int y) { if (!isEnabled()) RenderManager.setAlpha(vg, 0.5f); diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDualOption.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDualOption.java index 5bf28c0..1eceac8 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDualOption.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDualOption.java @@ -1,6 +1,7 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.DualOption; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.gui.animations.Animation; import cc.polyfrost.oneconfig.gui.animations.DummyAnimation; @@ -15,11 +16,15 @@ public class ConfigDualOption extends BasicOption { private final String left, right; private Animation posAnimation; - public ConfigDualOption(Field field, Object parent, String name, int size, String[] options) { - super(field, parent, name, size); - this.left = options[0]; - this.right = options[1]; + public ConfigDualOption(Field field, Object parent, String name, String category, String subcategory, int size, String left, String right) { + super(field, parent, name, category, subcategory, size); + this.left = left; + this.right = right; + } + public static ConfigDualOption create(Field field, Object parent) { + DualOption dualOption = field.getAnnotation(DualOption.class); + return new ConfigDualOption(field, parent, dualOption.name(), dualOption.category(), dualOption.subcategory(), dualOption.size(), dualOption.left(), dualOption.right()); } @Override diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigHeader.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigHeader.java index bfdb8ca..b930450 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigHeader.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigHeader.java @@ -1,6 +1,7 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.Header; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.renderer.RenderManager; import cc.polyfrost.oneconfig.renderer.font.Fonts; @@ -11,8 +12,13 @@ import java.lang.reflect.Field; public class ConfigHeader extends BasicOption { - public ConfigHeader(Field field, Object parent, String name, int size) { - super(field, parent, name, size); + public ConfigHeader(Field field, Object parent, String name, String category, String subcategory, int size) { + super(field, parent, name, category, subcategory, size); + } + + public static ConfigHeader create(Field field, Object parent) { + Header header = field.getAnnotation(Header.class); + return new ConfigHeader(field, parent, header.text(), header.category(), header.subcategory(), header.size()); } @Override @@ -22,7 +28,6 @@ public class ConfigHeader extends BasicOption { ScissorManager.resetScissor(vg, scissor); } - @Override public int getHeight() { return 32; diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigInfo.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigInfo.java index c0e041f..11a5cf8 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigInfo.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigInfo.java @@ -1,6 +1,7 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.Info; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.data.InfoType; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.renderer.RenderManager; @@ -13,11 +14,16 @@ import java.lang.reflect.Field; public class ConfigInfo extends BasicOption { private final InfoType type; - public ConfigInfo(Field field, Object parent, String name, int size, InfoType type) { - super(field, parent, name, size); + public ConfigInfo(Field field, Object parent, String name, String category, String subcategory, int size, InfoType type) { + super(field, parent, name, category, subcategory, size); this.type = type; } + public static ConfigInfo create(Field field, Object parent) { + Info info = field.getAnnotation(Info.class); + return new ConfigInfo(field, parent, info.text(), info.category(), info.subcategory(), info.size(), info.type()); + } + @Override public void draw(long vg, int x, int y) { Scissor scissor = ScissorManager.scissor(vg, x, y, size == 1 ? 448 : 960, 32); diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigKeyBind.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigKeyBind.java index 986bb98..5c239c0 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigKeyBind.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigKeyBind.java @@ -1,13 +1,14 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.KeyBind; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.core.OneKeyBind; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.gui.OneConfigGui; import cc.polyfrost.oneconfig.gui.elements.BasicButton; import cc.polyfrost.oneconfig.renderer.RenderManager; import cc.polyfrost.oneconfig.renderer.font.Fonts; -import cc.polyfrost.oneconfig.renderer.image.SVGs; +import cc.polyfrost.oneconfig.internal.assets.SVGs; import cc.polyfrost.oneconfig.utils.color.ColorPalette; import gg.essential.universal.UKeyboard; @@ -17,12 +18,17 @@ public class ConfigKeyBind extends BasicOption { private final BasicButton button; private boolean clicked = false; - public ConfigKeyBind(Field field, Object parent, String name, int size) { - super(field, parent, name, size); + public ConfigKeyBind(Field field, Object parent, String name, String category, String subcategory, int size) { + super(field, parent, name, category, subcategory, size); button = new BasicButton(256, 32, "", SVGs.KEYSTROKE, null, BasicButton.ALIGNMENT_JUSTIFIED, ColorPalette.SECONDARY); button.setToggleable(true); } + public static ConfigKeyBind create(Field field, Object parent) { + KeyBind keyBind = field.getAnnotation(KeyBind.class); + return new ConfigKeyBind(field, parent, keyBind.name(), keyBind.category(), keyBind.subcategory(), keyBind.size()); + } + @Override public void draw(long vg, int x, int y) { if (!isEnabled()) RenderManager.setAlpha(vg, 0.5f); diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigPageButton.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigPageButton.java index e4fcc77..5c7c2c4 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigPageButton.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigPageButton.java @@ -1,6 +1,6 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.elements.OptionPage; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.gui.OneConfigGui; @@ -8,7 +8,7 @@ import cc.polyfrost.oneconfig.gui.animations.ColorAnimation; import cc.polyfrost.oneconfig.gui.pages.ModConfigPage; import cc.polyfrost.oneconfig.renderer.RenderManager; import cc.polyfrost.oneconfig.renderer.font.Fonts; -import cc.polyfrost.oneconfig.renderer.image.SVGs; +import cc.polyfrost.oneconfig.internal.assets.SVGs; import cc.polyfrost.oneconfig.utils.InputUtils; import cc.polyfrost.oneconfig.utils.color.ColorPalette; import org.lwjgl.input.Mouse; @@ -21,7 +21,7 @@ public class ConfigPageButton extends BasicOption { private final ColorAnimation backgroundColor = new ColorAnimation(ColorPalette.SECONDARY); public ConfigPageButton(Field field, Object parent, String name, String description, OptionPage page) { - super(field, parent, name, 2); + super(field, parent, name, "", "", 2); this.description = description; this.page = page; } @@ -48,9 +48,4 @@ public class ConfigPageButton extends BasicOption { public int getHeight() { return description.equals("") ? 64 : 96; } - - @Override - public boolean hasHalfSize() { - return false; - } } diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider.java index 2bda274..a254729 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider.java @@ -1,6 +1,7 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.Slider; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.gui.elements.text.NumberInputField; import cc.polyfrost.oneconfig.renderer.RenderManager; @@ -19,14 +20,19 @@ public class ConfigSlider extends BasicOption { private boolean dragging = false; private boolean mouseWasDown = false; - public ConfigSlider(Field field, Object parent, String name, int size, float min, float max, int step) { - super(field, parent, name, size); + public ConfigSlider(Field field, Object parent, String name, String category, String subcategory, int size, float min, float max, int step) { + super(field, parent, name,category, subcategory, size); this.min = min; this.max = max; this.step = step; inputField = new NumberInputField(84, 32, 0, min, max, step == 0 ? 1 : step); } + public static ConfigSlider create(Field field, Object parent) { + Slider slider = field.getAnnotation(Slider.class); + return new ConfigSlider(field, parent, slider.name(), slider.category(), slider.subcategory(), 2, slider.min(), slider.max(), slider.step()); + } + @Override public void draw(long vg, int x, int y) { int xCoordinate = 0; @@ -107,9 +113,4 @@ public class ConfigSlider extends BasicOption { public int getHeight() { return 32; } - - @Override - public boolean hasHalfSize() { - return false; - } } diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSwitch.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSwitch.java index 2aedf4e..68e5be3 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSwitch.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSwitch.java @@ -1,6 +1,7 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.Switch; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.gui.animations.Animation; import cc.polyfrost.oneconfig.gui.animations.ColorAnimation; @@ -18,8 +19,13 @@ public class ConfigSwitch extends BasicOption { private ColorAnimation color; private Animation animation; - public ConfigSwitch(Field field, Object parent, String name, int size) { - super(field, parent, name, size); + public ConfigSwitch(Field field, Object parent, String name, String category, String subcategory, int size) { + super(field, parent, name, category, subcategory, size); + } + + public static ConfigSwitch create(Field field, Object parent) { + Switch options = field.getAnnotation(Switch.class); + return new ConfigSwitch(field, parent, options.name(), options.category(), options.subcategory(), options.size()); } @Override diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java index 225232b..81de9ba 100644 --- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java +++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java @@ -1,11 +1,12 @@ package cc.polyfrost.oneconfig.gui.elements.config; -import cc.polyfrost.oneconfig.gui.Colors; +import cc.polyfrost.oneconfig.config.annotations.Text; +import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.config.elements.BasicOption; import cc.polyfrost.oneconfig.gui.elements.text.TextInputField; import cc.polyfrost.oneconfig.renderer.RenderManager; import cc.polyfrost.oneconfig.renderer.font.Fonts; -import cc.polyfrost.oneconfig.renderer.image.SVGs; +import cc.polyfrost.oneconfig.internal.assets.SVGs; import cc.polyfrost.oneconfig.utils.InputUtils; import org.lwjgl.input.Mouse; @@ -16,11 +17,16 @@ public class ConfigTextBox extends BasicOption { private final boolean multiLine; private final TextInputField textField; - public ConfigTextBox(Field field, Object parent, String name, int size, String placeholder, boolean secure, boolean multiLine) { - super(field, parent, name, size); + public ConfigTextBox(Field field, Object parent, String name, String category, String subcategory, int size, String placeholder, boolean secure, boolean multiLine) { + super(field, parent, name, category, subcategory, size); this.secure = secure; this.multiLine = multiLine; - this.textField = new TextInputField(size == 1 && hasHalfSize() ? 256 : 640, multiLine ? 64 : 32, placeholder, multiLine, secure); + this.textField = new TextInputField(size == 1 ? 256 : 640, multiLine ? 64 : 32, placeholder, multiLine, secure); + } + + public static ConfigTextBox create(Field field, Object parent) { + Text text = field.getAnnotation(Text.class); + return new ConfigTextBox(field, parent, text.name(), text.category(), text.subcategory(), text.secure() || text.multiline() ? 2 : text.size(), text.placeholder(), text.secure(), text.multiline()); } @Override @@ -37,7 +43,7 @@ public class ConfigTextBox extends BasicOption { if (multiLine && textField.getLines() > 2) textField.setHeight(64 + 24 * (textField.getLines() - 2)); else if (multiLine) textField.setHeight(64); - textField.draw(vg, x + (size == 1 && hasHalfSize() ? 224 : 352), y); + textField.draw(vg, x + (size == 1 ? 224 : 352), y); if (secure) { SVGs icon = textField.getPassword() ? SVGs.EYE_OFF : SVGs.EYE; @@ -64,9 +70,4 @@ public class ConfigTextBox extends BasicOption { public int getHeight() { return multiLine ? textField.getHeight() : 32; } - - @Override - public boolean hasHalfSize() { - return !secure && !multiLine; - } } |