mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancydialogs: Add expectedUserInput field to ConfirmationDialog
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
package com.fancyinnovations.fancydialogs.api;
|
||||
package com.fancyinnovations.fancydialogs.api.dialogs;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.api.Dialog;
|
||||
import com.fancyinnovations.fancydialogs.api.FancyDialogs;
|
||||
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 com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
@@ -19,6 +22,7 @@ public class ConfirmationDialog {
|
||||
private String title = "Confirmation";
|
||||
private String confirmText = "Yes";
|
||||
private String cancelText = "No";
|
||||
private String expectedUserInput = "";
|
||||
|
||||
private Dialog dialog;
|
||||
private String confirmButtonId;
|
||||
@@ -28,7 +32,7 @@ public class ConfirmationDialog {
|
||||
private Runnable onCancel = () -> {
|
||||
};
|
||||
|
||||
public ConfirmationDialog(String title, String question, String confirmText, String cancelText, Runnable onConfirm, Runnable onCancel) {
|
||||
public ConfirmationDialog(String title, String question, String confirmText, String cancelText, String expectedUserInput, Runnable onConfirm, Runnable onCancel) {
|
||||
this.title = title;
|
||||
this.question = question;
|
||||
this.confirmText = confirmText;
|
||||
@@ -56,6 +60,11 @@ public class ConfirmationDialog {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ConfirmationDialog withExpectedUserInput(String expectedUserInput) {
|
||||
this.expectedUserInput = expectedUserInput;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ConfirmationDialog withOnConfirm(Runnable onConfirm) {
|
||||
this.onConfirm = onConfirm;
|
||||
return this;
|
||||
@@ -103,18 +112,31 @@ public class ConfirmationDialog {
|
||||
);
|
||||
this.cancelButtonId = cancelBtn.id();
|
||||
|
||||
List<DialogTextField> textFields = null;
|
||||
if (expectedUserInput != null && !expectedUserInput.isEmpty()) {
|
||||
textFields = List.of(
|
||||
new DialogTextField("confirmation_user_input", "Type '" + expectedUserInput + "' to confirm", 0, "", expectedUserInput.length(), 1)
|
||||
);
|
||||
}
|
||||
|
||||
DialogInputs inputs = new DialogInputs(textFields, null, null);
|
||||
|
||||
DialogData dialogData = new DialogData(
|
||||
"confirmation_dialog_" + UUID.randomUUID(),
|
||||
title,
|
||||
false,
|
||||
List.of(new DialogBodyData(question)),
|
||||
DialogInputs.EMPTY, // TODO add support for confirmation phrases
|
||||
inputs,
|
||||
List.of(confirmBtn, cancelBtn)
|
||||
);
|
||||
|
||||
this.dialog = FancyDialogs.get().createDialog(dialogData);
|
||||
}
|
||||
|
||||
public String getExpectedUserInput() {
|
||||
return expectedUserInput;
|
||||
}
|
||||
|
||||
public String getConfirmButtonId() {
|
||||
return confirmButtonId;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.fancyinnovations.fancydialogs.api;
|
||||
package com.fancyinnovations.fancydialogs.api.dialogs;
|
||||
|
||||
import com.fancyinnovations.fancydialogs.api.FancyDialogs;
|
||||
import com.fancyinnovations.fancydialogs.api.data.DialogBodyData;
|
||||
import com.fancyinnovations.fancydialogs.api.data.DialogData;
|
||||
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs;
|
||||
@@ -6,6 +6,8 @@ import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class DialogButtonClickedEvent extends Event {
|
||||
|
||||
private static final HandlerList handlerList = new HandlerList();
|
||||
@@ -13,12 +15,14 @@ public class DialogButtonClickedEvent extends Event {
|
||||
private final Player player;
|
||||
private final String dialogId;
|
||||
private final String buttonId;
|
||||
private final Map<String, String> payload;
|
||||
|
||||
public DialogButtonClickedEvent(@NotNull Player player, @NotNull String dialogId, @NotNull String buttonId) {
|
||||
public DialogButtonClickedEvent(@NotNull Player player, @NotNull String dialogId, @NotNull String buttonId, @NotNull Map<String, String> payload) {
|
||||
super(!Bukkit.isPrimaryThread());
|
||||
this.player = player;
|
||||
this.dialogId = dialogId;
|
||||
this.buttonId = buttonId;
|
||||
this.payload = payload;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
@@ -37,6 +41,10 @@ public class DialogButtonClickedEvent extends Event {
|
||||
return buttonId;
|
||||
}
|
||||
|
||||
public Map<String, String> getPayload() {
|
||||
return payload;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull HandlerList getHandlers() {
|
||||
return handlerList;
|
||||
|
||||
Reference in New Issue
Block a user