From 2405e96d889341b82d00a9103e688d54713f2ce3 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 16 Mar 2019 10:30:26 +0800 Subject: Better Widgets --- .../rei/gui/widget/ClickableLabelWidget.java | 43 ++++++++++++++++------ 1 file changed, 32 insertions(+), 11 deletions(-) (limited to 'src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java') diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java index 7f7de43d3..b25338537 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java @@ -2,28 +2,25 @@ package me.shedaniel.rei.gui.widget; import java.awt.*; -public abstract class ClickableLabelWidget extends LabelWidget implements HighlightableWidget { +public abstract class ClickableLabelWidget extends LabelWidget { + + private static final int hoveredColor = (new Color(102, 255, 204)).getRGB(); + protected boolean focused; public ClickableLabelWidget(int x, int y, String text) { super(x, y, text); } - @Override - public Rectangle getBounds() { - int width = textRenderer.getStringWidth(text); - return new Rectangle(x - width / 2 - 1, y - 5, width + 2, 14); - } - @Override public void draw(int mouseX, int mouseY, float partialTicks) { int colour = -1; - if (isHighlighted(mouseX, mouseY)) - colour = 16777120; - drawStringCentered(textRenderer, (isHighlighted(mouseX, mouseY) ? "§n" : "") + text, x, y, colour); + if (isHovered(mouseX, mouseY)) + colour = hoveredColor; + drawStringCentered(textRenderer, (isHovered(mouseX, mouseY) ? "§n" : "") + text, x, y, colour); } @Override - public boolean onMouseClick(int button, double mouseX, double mouseY) { + public boolean mouseClicked(double mouseX, double mouseY, int button) { if (button == 0 && isHighlighted(mouseX, mouseY)) { onLabelClicked(); return true; @@ -31,6 +28,30 @@ public abstract class ClickableLabelWidget extends LabelWidget implements Highli return false; } + @Override + public boolean keyPressed(int int_1, int int_2, int int_3) { + if (int_1 != 257 && int_1 != 32 && int_1 != 335) { + return false; + } else { + this.onLabelClicked(); + return true; + } + } + + @Override + public boolean hasFocus() { + return true; + } + + public boolean isHovered(int mouseX, int mouseY) { + return isHighlighted(mouseX, mouseY) || focused; + } + + @Override + public void setHasFocus(boolean boolean_1) { + focused = boolean_1; + } + public abstract void onLabelClicked(); } -- cgit