mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancydialgos: Add support for text fields
This commit is contained in:
@@ -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)
|
||||
);
|
||||
|
||||
|
||||
@@ -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()
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
) {
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user