mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancydialogs: Add support for the select input
This commit is contained in:
@@ -4,10 +4,11 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public record DialogInputs(
|
||||
List<DialogTextField> textFields
|
||||
List<DialogTextField> textFields,
|
||||
List<DialogSelect> selects
|
||||
) {
|
||||
|
||||
public static final DialogInputs EMPTY = new DialogInputs(List.of());
|
||||
public static final DialogInputs EMPTY = new DialogInputs(List.of(), List.of());
|
||||
|
||||
public List<DialogInput> all() {
|
||||
List<DialogInput> all = new ArrayList<>();
|
||||
@@ -15,6 +16,10 @@ public record DialogInputs(
|
||||
all.addAll(textFields);
|
||||
}
|
||||
|
||||
if (selects != null) {
|
||||
all.addAll(selects);
|
||||
}
|
||||
|
||||
all.sort((o1, o2) -> {
|
||||
if (o1.getOrder() == o2.getOrder()) {
|
||||
return 0;
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.fancyinnovations.fancydialogs.api.data.inputs;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class DialogSelect extends DialogInput {
|
||||
|
||||
private final List<Entry> options;
|
||||
|
||||
public DialogSelect(String key, String label, int order, List<Entry> options) {
|
||||
super(key, label, order);
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
public List<Entry> getOptions() {
|
||||
return options;
|
||||
}
|
||||
|
||||
public record Entry(
|
||||
String value,
|
||||
String display,
|
||||
boolean initial
|
||||
) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ 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.DialogInput;
|
||||
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogSelect;
|
||||
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField;
|
||||
import de.oliver.fancysitula.api.dialogs.FS_CommonDialogData;
|
||||
import de.oliver.fancysitula.api.dialogs.FS_DialogAction;
|
||||
@@ -15,6 +16,7 @@ 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.types.FS_MultiActionDialog;
|
||||
import de.oliver.fancysitula.api.entities.FS_RealPlayer;
|
||||
@@ -58,6 +60,17 @@ public class DialogImpl extends Dialog {
|
||||
new FS_DialogTextInput.MultilineOptions(textField.getMaxLines(), null) :
|
||||
null
|
||||
);
|
||||
} else if (input instanceof DialogSelect select) {
|
||||
List<FS_DialogSingleOptionInput.Entry> entries = new ArrayList<>();
|
||||
for (DialogSelect.Entry entry : select.getOptions()) {
|
||||
entries.add(new FS_DialogSingleOptionInput.Entry(entry.value(), entry.display(), entry.initial()));
|
||||
}
|
||||
control = new FS_DialogSingleOptionInput(
|
||||
200, // default width
|
||||
entries,
|
||||
select.getLabel(),
|
||||
!select.getLabel().isEmpty()
|
||||
);
|
||||
}
|
||||
|
||||
if (control == null) {
|
||||
|
||||
@@ -5,6 +5,7 @@ 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.DialogSelect;
|
||||
import com.fancyinnovations.fancydialogs.api.data.inputs.DialogTextField;
|
||||
import com.fancyinnovations.fancydialogs.dialog.DialogImpl;
|
||||
import com.fancyinnovations.fancydialogs.storage.DialogStorage;
|
||||
@@ -45,13 +46,26 @@ public class DefaultDialogs {
|
||||
new DialogInputs(
|
||||
List.of(
|
||||
new DialogTextField(
|
||||
"fav_color",
|
||||
"<color:#ff7300>What is your favorite color?</color>",
|
||||
"nickname",
|
||||
"<color:#ff7300>What is your nickname?</color>",
|
||||
1,
|
||||
"gold",
|
||||
"",
|
||||
50,
|
||||
1
|
||||
)
|
||||
),
|
||||
List.of(
|
||||
new DialogSelect(
|
||||
"color_choice",
|
||||
"<color:#ff7300>Choose your favorite color</color>",
|
||||
2,
|
||||
List.of(
|
||||
new DialogSelect.Entry("red", "<color:red>Red</color>", true),
|
||||
new DialogSelect.Entry("green", "<color:green>Green</color>", false),
|
||||
new DialogSelect.Entry("blue", "<color:blue>Blue</color>", false),
|
||||
new DialogSelect.Entry("yellow", "<color:yellow>Yellow</color>", false)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
List.of(
|
||||
@@ -64,7 +78,7 @@ public class DefaultDialogs {
|
||||
"<color:#ffd000>Show favourite color</color>",
|
||||
"<color:#ff4f19>Click to show your fav color :D</color>",
|
||||
List.of(
|
||||
new DialogButton.DialogAction("message", "Your favorite color is: <color:{fav_color}>{fav_color}</color>")
|
||||
new DialogButton.DialogAction("message", "Hi {nickname}, your favorite color is: <color:{color_choice}>{color_choice}</color>")
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user