fancydialgos: Add support for text fields

This commit is contained in:
Oliver
2025-06-21 14:52:25 +02:00
parent d5665109e8
commit 450082b6f1
10 changed files with 143 additions and 6 deletions

View File

@@ -3,6 +3,7 @@ package com.fancyinnovations.fancydialogs.api;
import com.fancyinnovations.fancydialogs.api.data.DialogBodyData;
import com.fancyinnovations.fancydialogs.api.data.DialogButton;
import com.fancyinnovations.fancydialogs.api.data.DialogData;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs;
import org.bukkit.entity.Player;
import java.util.List;
@@ -105,6 +106,7 @@ public class ConfirmationDialog {
title,
false,
List.of(new DialogBodyData(question)),
DialogInputs.EMPTY, // TODO add support for confirmation phrases
List.of(confirmBtn, cancelBtn)
);

View File

@@ -2,6 +2,7 @@ package com.fancyinnovations.fancydialogs.api;
import com.fancyinnovations.fancydialogs.api.data.DialogBodyData;
import com.fancyinnovations.fancydialogs.api.data.DialogData;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs;
import org.bukkit.entity.Player;
import java.util.List;
@@ -25,6 +26,7 @@ public class NoticeDialog {
List.of(
new DialogBodyData(this.text)
),
DialogInputs.EMPTY,
List.of()
);
}

View File

@@ -1,5 +1,6 @@
package com.fancyinnovations.fancydialogs.api.data;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@@ -9,6 +10,7 @@ public record DialogData(
@NotNull String title,
boolean canCloseWithEscape,
@NotNull List<DialogBodyData> body,
@NotNull DialogInputs inputs,
@NotNull List<DialogButton> buttons
) {

View File

@@ -0,0 +1,26 @@
package com.fancyinnovations.fancydialogs.api.data.inputs;
public abstract class DialogInput {
protected final String key;
protected final String label;
protected final int order;
public DialogInput(String key, String label, int order) {
this.key = key;
this.label = label;
this.order = order;
}
public String getKey() {
return key;
}
public String getLabel() {
return label;
}
public int getOrder() {
return order;
}
}

View File

@@ -0,0 +1,28 @@
package com.fancyinnovations.fancydialogs.api.data.inputs;
import java.util.ArrayList;
import java.util.List;
public record DialogInputs(
List<DialogTextField> textFields
) {
public static final DialogInputs EMPTY = new DialogInputs(List.of());
public List<DialogInput> all() {
List<DialogInput> all = new ArrayList<>();
if (textFields != null) {
all.addAll(textFields);
}
all.sort((o1, o2) -> {
if (o1.getOrder() == o2.getOrder()) {
return 0;
}
return o1.getOrder() < o2.getOrder() ? -1 : 1;
});
return all;
}
}

View File

@@ -0,0 +1,27 @@
package com.fancyinnovations.fancydialogs.api.data.inputs;
public class DialogTextField extends DialogInput {
private final String placeholder;
private final int maxLength;
private final int maxLines;
public DialogTextField(String key, String label, int order, String placeholder, int maxLength, int maxLines) {
super(key, label, order);
this.placeholder = placeholder;
this.maxLength = maxLength;
this.maxLines = maxLines;
}
public String getPlaceholder() {
return placeholder;
}
public int getMaxLength() {
return maxLength;
}
public int getMaxLines() {
return maxLines;
}
}