fancydialogs: Add checkbox input type

This commit is contained in:
Oliver
2025-07-25 18:45:32 +02:00
parent 6b2f82a2fa
commit 209509033b
6 changed files with 47 additions and 7 deletions

View File

@@ -1 +1 @@
0.0.18
0.0.19

View File

@@ -0,0 +1,15 @@
package com.fancyinnovations.fancydialogs.api.data.inputs;
public class DialogCheckbox extends DialogInput {
private final boolean initial;
public DialogCheckbox(String key, String label, int order, boolean initial) {
super(key, label, order);
this.initial = initial;
}
public boolean isInitial() {
return initial;
}
}

View File

@@ -7,10 +7,11 @@ import java.util.List;
public record DialogInputs(
@Nullable List<DialogTextField> textFields,
@Nullable List<DialogSelect> selects
@Nullable List<DialogSelect> selects,
@Nullable List<DialogCheckbox> checkboxes
) {
public static final DialogInputs EMPTY = new DialogInputs(List.of(), List.of());
public static final DialogInputs EMPTY = new DialogInputs(List.of(), List.of(), List.of());
public List<DialogInput> all() {
List<DialogInput> all = new ArrayList<>();
@@ -22,6 +23,10 @@ public record DialogInputs(
all.addAll(selects);
}
if (checkboxes != null) {
all.addAll(checkboxes);
}
all.sort((o1, o2) -> {
if (o1.getOrder() == o2.getOrder()) {
return 0;

View File

@@ -5,6 +5,7 @@ import com.fancyinnovations.fancydialogs.api.Dialog;
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.DialogCheckbox;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInput;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField;
@@ -15,10 +16,7 @@ import de.oliver.fancysitula.api.dialogs.actions.FS_DialogActionButton;
import de.oliver.fancysitula.api.dialogs.actions.FS_DialogCustomAction;
import de.oliver.fancysitula.api.dialogs.body.FS_DialogBody;
import de.oliver.fancysitula.api.dialogs.body.FS_DialogTextBody;
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogInput;
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogInputControl;
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogSingleOptionInput;
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogTextInput;
import de.oliver.fancysitula.api.dialogs.inputs.*;
import de.oliver.fancysitula.api.dialogs.types.FS_MultiActionDialog;
import de.oliver.fancysitula.api.entities.FS_RealPlayer;
import de.oliver.fancysitula.factories.FancySitula;
@@ -78,6 +76,8 @@ public class DialogImpl extends Dialog {
ChatColorHandler.translate(select.getLabel(), player, ParserTypes.placeholder()),
!select.getLabel().isEmpty()
);
} else if (input instanceof DialogCheckbox checkbox) {
control = new FS_DialogBooleanInput(input.getLabel(), checkbox.isInitial(), "true", "false");
}
if (control == null) {

View File

@@ -4,6 +4,7 @@ import com.fancyinnovations.fancydialogs.FancyDialogsPlugin;
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.DialogCheckbox;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogInputs;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField;
@@ -66,6 +67,14 @@ public class DefaultDialogs {
new DialogSelect.Entry("yellow", "<color:yellow>Yellow</color>", false)
)
)
),
List.of(
new DialogCheckbox(
"is_cool",
"<color:#ff7300>Are you cool?</color>",
3,
true
)
)
),
List.of(
@@ -80,6 +89,13 @@ public class DefaultDialogs {
List.of(
new DialogButton.DialogAction("message", "Hi {nickname}, your favorite color is: <color:{color_choice}>{color_choice}</color>")
)
),
new DialogButton(
"<color:#ffd000>Check if you are cool</color>",
"<color:#ff4f19>Click to know if, you are cool</color>",
List.of(
new DialogButton.DialogAction("message", "Hi {nickname}, are you cool: {is_cool}")
)
)
)
);