aboutsummaryrefslogtreecommitdiff
path: root/src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java
diff options
context:
space:
mode:
authorisXander <xandersmith2008@gmail.com>2023-01-19 22:06:13 +0000
committerisXander <xandersmith2008@gmail.com>2023-01-19 22:06:13 +0000
commitf4a890749e07123b5b7db8200b53c943a93ede01 (patch)
tree9d8a7b3b905c5b5b96f8048a59acbf757a12c406 /src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java
parentee53b51a1e8d88085c75f227f4710b68c03b19c8 (diff)
downloadYetAnotherConfigLib-f4a890749e07123b5b7db8200b53c943a93ede01.tar.gz
YetAnotherConfigLib-f4a890749e07123b5b7db8200b53c943a93ede01.tar.bz2
YetAnotherConfigLib-f4a890749e07123b5b7db8200b53c943a93ede01.zip
22w03a - now with better navigation!
Diffstat (limited to 'src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java')
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java b/src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java
index 0017b59..dd0048d 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java
@@ -6,12 +6,18 @@ import dev.isxander.yacl.api.Option;
import dev.isxander.yacl.api.utils.Dimension;
import dev.isxander.yacl.gui.AbstractWidget;
import dev.isxander.yacl.gui.YACLScreen;
+import net.minecraft.client.gui.ComponentPath;
+import net.minecraft.client.gui.GuiComponent;
import net.minecraft.client.gui.components.MultiLineLabel;
+import net.minecraft.client.gui.narration.NarratedElementType;
+import net.minecraft.client.gui.narration.NarrationElementOutput;
+import net.minecraft.client.gui.navigation.FocusNavigationEvent;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.HoverEvent;
import net.minecraft.network.chat.Style;
import net.minecraft.util.FormattedCharSequence;
import net.minecraft.world.item.ItemStack;
+import org.jetbrains.annotations.Nullable;
import java.util.List;
@@ -50,6 +56,7 @@ public class LabelController implements Controller<Component> {
public class LabelControllerElement extends AbstractWidget {
private List<FormattedCharSequence> wrappedText;
protected MultiLineLabel wrappedTooltip;
+ protected boolean focused;
protected final YACLScreen screen;
@@ -70,6 +77,13 @@ public class LabelController implements Controller<Component> {
textRenderer.drawShadow(matrices, text, getDimension().x() + getXPadding(), y + getYPadding(), option().available() ? -1 : 0xFFA0A0A0);
y += textRenderer.lineHeight;
}
+
+ if (isFocused()) {
+ GuiComponent.fill(matrices, getDimension().x() - 2, getDimension().y() - 2, getDimension().xLimit() + 2, getDimension().y(), -1);
+ GuiComponent.fill(matrices, getDimension().x() - 2, getDimension().y() - 2, getDimension().x(), getDimension().yLimit() + 2, -1);
+ GuiComponent.fill(matrices, getDimension().x() - 2, getDimension().yLimit(), getDimension().xLimit() + 2, getDimension().yLimit() + 2, -1);
+ GuiComponent.fill(matrices, getDimension().xLimit(), getDimension().y() - 2, getDimension().xLimit() + 2, getDimension().yLimit() + 2, -1);
+ }
}
@Override
@@ -147,5 +161,33 @@ public class LabelController implements Controller<Component> {
public boolean matchesSearch(String query) {
return formatValue().getString().toLowerCase().contains(query.toLowerCase());
}
+
+ @Nullable
+ @Override
+ public ComponentPath nextFocusPath(FocusNavigationEvent focusNavigationEvent) {
+ if (!option().available())
+ return null;
+ return !this.isFocused() ? ComponentPath.leaf(this) : null;
+ }
+
+ @Override
+ public boolean isFocused() {
+ return focused;
+ }
+
+ @Override
+ public void setFocused(boolean focused) {
+ this.focused = focused;
+ }
+
+ @Override
+ public void updateNarration(NarrationElementOutput builder) {
+ builder.add(NarratedElementType.TITLE, formatValue());
+ }
+
+ @Override
+ public NarrationPriority narrationPriority() {
+ return NarrationPriority.FOCUSED;
+ }
}
}