IntSliderBuilder.java 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package me.shedaniel.clothconfig2.impl.builders;
  2. import me.shedaniel.clothconfig2.gui.entries.IntegerSliderEntry;
  3. import org.jetbrains.annotations.NotNull;
  4. import java.util.Optional;
  5. import java.util.function.Consumer;
  6. import java.util.function.Function;
  7. import java.util.function.Supplier;
  8. public class IntSliderBuilder extends FieldBuilder<Integer, IntegerSliderEntry> {
  9. private Consumer<Integer> saveConsumer = null;
  10. private Function<Integer, Optional<String[]>> tooltipSupplier = i -> Optional.empty();
  11. private int value, max, min;
  12. private Function<Integer, String> textGetter = null;
  13. public IntSliderBuilder(String resetButtonKey, String fieldNameKey, int value, int min, int max) {
  14. super(resetButtonKey, fieldNameKey);
  15. this.value = value;
  16. this.max = max;
  17. this.min = min;
  18. }
  19. public IntSliderBuilder setErrorSupplier(Function<Integer, Optional<String>> errorSupplier) {
  20. this.errorSupplier = errorSupplier;
  21. return this;
  22. }
  23. public IntSliderBuilder requireRestart() {
  24. requireRestart(true);
  25. return this;
  26. }
  27. public IntSliderBuilder setTextGetter(Function<Integer, String> textGetter) {
  28. this.textGetter = textGetter;
  29. return this;
  30. }
  31. public IntSliderBuilder setSaveConsumer(Consumer<Integer> saveConsumer) {
  32. this.saveConsumer = saveConsumer;
  33. return this;
  34. }
  35. public IntSliderBuilder setDefaultValue(Supplier<Integer> defaultValue) {
  36. this.defaultValue = defaultValue;
  37. return this;
  38. }
  39. public IntSliderBuilder setDefaultValue(int defaultValue) {
  40. this.defaultValue = () -> defaultValue;
  41. return this;
  42. }
  43. public IntSliderBuilder setTooltipSupplier(Function<Integer, Optional<String[]>> tooltipSupplier) {
  44. this.tooltipSupplier = tooltipSupplier;
  45. return this;
  46. }
  47. public IntSliderBuilder setTooltipSupplier(Supplier<Optional<String[]>> tooltipSupplier) {
  48. this.tooltipSupplier = i -> tooltipSupplier.get();
  49. return this;
  50. }
  51. public IntSliderBuilder setTooltip(Optional<String[]> tooltip) {
  52. this.tooltipSupplier = i -> tooltip;
  53. return this;
  54. }
  55. public IntSliderBuilder setTooltip(String... tooltip) {
  56. this.tooltipSupplier = i -> Optional.ofNullable(tooltip);
  57. return this;
  58. }
  59. public IntSliderBuilder setMax(int max) {
  60. this.max = max;
  61. return this;
  62. }
  63. public IntSliderBuilder setMin(int min) {
  64. this.min = min;
  65. return this;
  66. }
  67. @NotNull
  68. @Override
  69. public IntegerSliderEntry build() {
  70. IntegerSliderEntry entry = new IntegerSliderEntry(getFieldNameKey(), min, max, value, getResetButtonKey(), defaultValue, saveConsumer, null, isRequireRestart());
  71. if (textGetter != null)
  72. entry.setTextGetter(textGetter);
  73. entry.setTooltipSupplier(() -> tooltipSupplier.apply(entry.getValue()));
  74. if (errorSupplier != null)
  75. entry.setErrorSupplier(() -> errorSupplier.apply(entry.getValue()));
  76. return entry;
  77. }
  78. }