aboutsummaryrefslogtreecommitdiff
path: root/common/src/main/java/dev/isxander/yacl3/gui/controllers
diff options
context:
space:
mode:
authorisXander <xandersmith2008@gmail.com>2023-08-14 23:27:45 +0100
committerisXander <xandersmith2008@gmail.com>2023-08-14 23:27:45 +0100
commitb3355266572deef1a5c3e494ad162c592383e455 (patch)
tree876510a21e27d0052cb7a1501c0295a427c9dc3c /common/src/main/java/dev/isxander/yacl3/gui/controllers
parentd37e147dbb4db44a921533b572aed3e54b5c6a42 (diff)
downloadYetAnotherConfigLib-b3355266572deef1a5c3e494ad162c592383e455.tar.gz
YetAnotherConfigLib-b3355266572deef1a5c3e494ad162c592383e455.tar.bz2
YetAnotherConfigLib-b3355266572deef1a5c3e494ad162c592383e455.zip
More-or-less complete API for YACL auto-gen
Diffstat (limited to 'common/src/main/java/dev/isxander/yacl3/gui/controllers')
-rw-r--r--common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java44
1 files changed, 39 insertions, 5 deletions
diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java
index 86cc7bd..383e188 100644
--- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java
+++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java
@@ -5,6 +5,7 @@ import dev.isxander.yacl3.api.utils.Dimension;
import dev.isxander.yacl3.gui.YACLScreen;
import dev.isxander.yacl3.gui.controllers.ControllerWidget;
import dev.isxander.yacl3.gui.utils.GuiUtils;
+import dev.isxander.yacl3.gui.utils.UndoRedoHelper;
import net.minecraft.ChatFormatting;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.screens.Screen;
@@ -21,9 +22,10 @@ public class StringControllerElement extends ControllerWidget<IStringController<
protected int caretPos;
protected int selectionLength;
-
protected int renderOffset;
+ protected UndoRedoHelper undoRedoHelper;
+
protected float ticks;
private final Component emptyText;
@@ -35,7 +37,9 @@ public class StringControllerElement extends ControllerWidget<IStringController<
inputFieldFocused = false;
selectionLength = 0;
emptyText = Component.literal("Click to type...").withStyle(ChatFormatting.GRAY);
- control.option().addListener((opt, val) -> inputField = control.getString());
+ control.option().addListener((opt, val) -> {
+ inputField = control.getString();
+ });
setDimension(dim);
}
@@ -109,6 +113,10 @@ public class StringControllerElement extends ControllerWidget<IStringController<
selectionLength = 0;
}
+// if (undoRedoHelper == null) {
+// undoRedoHelper = new UndoRedoHelper(inputField, caretPos, selectionLength);
+// }
+
return true;
} else {
inputFieldFocused = false;
@@ -187,12 +195,26 @@ public class StringControllerElement extends ControllerWidget<IStringController<
doDelete();
return true;
}
+// case InputConstants.KEY_Z -> {
+// if (Screen.hasControlDown()) {
+// UndoRedoHelper.FieldState updated = Screen.hasShiftDown() ? undoRedoHelper.redo() : undoRedoHelper.undo();
+// if (updated != null) {
+// System.out.println("Updated: " + updated);
+// if (modifyInput(builder -> builder.replace(0, inputField.length(), updated.text()))) {
+// caretPos = updated.cursorPos();
+// selectionLength = updated.selectionLength();
+// checkRenderOffset();
+// }
+// }
+// return true;
+// }
+// }
}
if (Screen.isPaste(keyCode)) {
return doPaste();
} else if (Screen.isCopy(keyCode)) {
- return doCopy();
+ return doCopy();
} else if (Screen.isCut(keyCode)) {
return doCut();
} else if (Screen.isSelectAll(keyCode)) {
@@ -204,6 +226,7 @@ public class StringControllerElement extends ControllerWidget<IStringController<
protected boolean doPaste() {
this.write(client.keyboardHandler.getClipboard());
+ updateUndoHistory();
return true;
}
@@ -219,6 +242,7 @@ public class StringControllerElement extends ControllerWidget<IStringController<
if (selectionLength != 0) {
client.keyboardHandler.setClipboard(getSelection());
this.write("");
+ updateUndoHistory();
return true;
}
return false;
@@ -255,9 +279,13 @@ public class StringControllerElement extends ControllerWidget<IStringController<
if (!inputFieldFocused)
return false;
- write(Character.toString(chr));
+ if (!Screen.hasControlDown()) {
+ write(Character.toString(chr));
+ updateUndoHistory();
+ return true;
+ }
- return true;
+ return false;
}
protected void doBackspace() {
@@ -269,6 +297,7 @@ public class StringControllerElement extends ControllerWidget<IStringController<
checkRenderOffset();
}
}
+ updateUndoHistory();
}
protected void doDelete() {
@@ -277,6 +306,7 @@ public class StringControllerElement extends ControllerWidget<IStringController<
} else if (caretPos < inputField.length()) {
modifyInput(builder -> builder.deleteCharAt(caretPos));
}
+ updateUndoHistory();
}
public void write(String string) {
@@ -308,6 +338,10 @@ public class StringControllerElement extends ControllerWidget<IStringController<
return true;
}
+ protected void updateUndoHistory() {
+// undoRedoHelper.save(inputField, caretPos, selectionLength);
+ }
+
public int getUnshiftedLength() {
if (optionNameString.isEmpty())
return getDimension().width() - getXPadding() * 2;