Skip to content

Commit f6a9fb0

Browse files
committed
reduce duplicate for Dropdown and Step Slider
1 parent 551c632 commit f6a9fb0

3 files changed

Lines changed: 29 additions & 73 deletions

File tree

src/main/java/me/hsgamer/bettergui/betterforms/impl/custom/CustomFormMenu.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ public class CustomFormMenu extends FormMenu<CustomForm, CustomFormResponse, Cus
3030
builder.register(SubmitComponentProvider::new, "submit", "button");
3131
builder.register(IconComponentProvider::new, "icon", "image");
3232
builder.register(LabelComponentProvider::new, "label", "text", "content");
33-
builder.register(DropdownComponentProvider::new, "dropdown", "select");
33+
builder.register(input -> new OptionListComponentProvider(OptionListComponentProvider.Type.DROPDOWN, input), "dropdown", "select");
3434
builder.register(InputComponentProvider::new, "input");
3535
builder.register(SliderComponentProvider::new, "slider");
36-
builder.register(StepSliderComponentProvider::new, "step-slider", "step");
36+
builder.register(input -> new OptionListComponentProvider(OptionListComponentProvider.Type.STEP_SLIDER, input), "step-slider", "step");
3737
builder.register(ToggleComponentProvider::new, "toggle", "switch");
3838
}
3939

src/main/java/me/hsgamer/bettergui/betterforms/impl/custom/DropdownComponentProvider.java renamed to src/main/java/me/hsgamer/bettergui/betterforms/impl/custom/OptionListComponentProvider.java

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,16 @@
2929

3030
import static java.util.Optional.ofNullable;
3131

32-
public class DropdownComponentProvider extends ValueComponentProvider {
32+
public class OptionListComponentProvider extends ValueComponentProvider {
33+
private final Type type;
3334
private final Map<UUID, List<String>> optionsMap = new ConcurrentHashMap<>();
3435
private final String text;
3536
private final List<String> options;
3637
private final String defaultOption;
3738

38-
public DropdownComponentProvider(ComponentProviderBuilder.Input input) {
39+
public OptionListComponentProvider(Type type, ComponentProviderBuilder.Input input) {
3940
super(input);
41+
this.type = type;
4042
this.text = ofNullable(MapUtils.getIfFound(input.options, "text"))
4143
.map(Object::toString)
4244
.orElse("");
@@ -57,12 +59,33 @@ protected void apply(UUID uuid, CustomForm.Builder builder) {
5759
String replacedDefaultOption = StringReplacerApplier.replace(this.defaultOption, uuid, this);
5860
int defaultOption = Validate.getNumber(replacedDefaultOption).map(Number::intValue).orElse(0);
5961

60-
builder.dropdown(replacedText, replacedOptions, defaultOption);
62+
switch (this.type) {
63+
case DROPDOWN:
64+
builder.dropdown(replacedText, replacedOptions, defaultOption);
65+
break;
66+
case STEP_SLIDER:
67+
builder.stepSlider(replacedText, replacedOptions, defaultOption);
68+
break;
69+
}
6170
this.optionsMap.put(uuid, replacedOptions);
6271
}
6372

6473
@Override
6574
protected String getValue(UUID uuid, CustomFormResponse response) {
66-
return this.optionsMap.get(uuid).get(response.asDropdown());
75+
int index = 0;
76+
switch (this.type) {
77+
case DROPDOWN:
78+
index = response.asDropdown();
79+
break;
80+
case STEP_SLIDER:
81+
index = response.asStepSlider();
82+
break;
83+
}
84+
return this.optionsMap.get(uuid).get(index);
85+
}
86+
87+
public enum Type {
88+
DROPDOWN,
89+
STEP_SLIDER
6790
}
6891
}

src/main/java/me/hsgamer/bettergui/betterforms/impl/custom/StepSliderComponentProvider.java

Lines changed: 0 additions & 67 deletions
This file was deleted.

0 commit comments

Comments
 (0)