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

@@ -5,6 +5,10 @@ order: 1
# FancyDialogs v0.x.x # FancyDialogs v0.x.x
## v0.0.19 [!badge variant="info" text="2025-07-25"]
- Added checkbox input type
## v0.0.18 [!badge variant="info" text="2025-07-21"] ## v0.0.18 [!badge variant="info" text="2025-07-21"]
- Added more metrics - Added more metrics

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( public record DialogInputs(
@Nullable List<DialogTextField> textFields, @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() { public List<DialogInput> all() {
List<DialogInput> all = new ArrayList<>(); List<DialogInput> all = new ArrayList<>();
@@ -22,6 +23,10 @@ public record DialogInputs(
all.addAll(selects); all.addAll(selects);
} }
if (checkboxes != null) {
all.addAll(checkboxes);
}
all.sort((o1, o2) -> { all.sort((o1, o2) -> {
if (o1.getOrder() == o2.getOrder()) { if (o1.getOrder() == o2.getOrder()) {
return 0; 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.DialogBodyData;
import com.fancyinnovations.fancydialogs.api.data.DialogButton; import com.fancyinnovations.fancydialogs.api.data.DialogButton;
import com.fancyinnovations.fancydialogs.api.data.DialogData; 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.DialogInput;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect; import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField; 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.actions.FS_DialogCustomAction;
import de.oliver.fancysitula.api.dialogs.body.FS_DialogBody; import de.oliver.fancysitula.api.dialogs.body.FS_DialogBody;
import de.oliver.fancysitula.api.dialogs.body.FS_DialogTextBody; 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.*;
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.types.FS_MultiActionDialog; import de.oliver.fancysitula.api.dialogs.types.FS_MultiActionDialog;
import de.oliver.fancysitula.api.entities.FS_RealPlayer; import de.oliver.fancysitula.api.entities.FS_RealPlayer;
import de.oliver.fancysitula.factories.FancySitula; import de.oliver.fancysitula.factories.FancySitula;
@@ -78,6 +76,8 @@ public class DialogImpl extends Dialog {
ChatColorHandler.translate(select.getLabel(), player, ParserTypes.placeholder()), ChatColorHandler.translate(select.getLabel(), player, ParserTypes.placeholder()),
!select.getLabel().isEmpty() !select.getLabel().isEmpty()
); );
} else if (input instanceof DialogCheckbox checkbox) {
control = new FS_DialogBooleanInput(input.getLabel(), checkbox.isInitial(), "true", "false");
} }
if (control == null) { 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.DialogBodyData;
import com.fancyinnovations.fancydialogs.api.data.DialogButton; import com.fancyinnovations.fancydialogs.api.data.DialogButton;
import com.fancyinnovations.fancydialogs.api.data.DialogData; 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.DialogInputs;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect; import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect;
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField; import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField;
@@ -66,6 +67,14 @@ public class DefaultDialogs {
new DialogSelect.Entry("yellow", "<color:yellow>Yellow</color>", false) 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( List.of(
@@ -80,6 +89,13 @@ public class DefaultDialogs {
List.of( List.of(
new DialogButton.DialogAction("message", "Hi {nickname}, your favorite color is: <color:{color_choice}>{color_choice}</color>") 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}")
)
) )
) )
); );