Skip to content

Commit 6d5f51a

Browse files
authored
Merge pull request #12 from MEFRREEX/feature/tooltips
feat: added api for element tooltips + refactor: remove debug command
2 parents f22c9d9 + 8b98aca commit 6d5f51a

10 files changed

Lines changed: 104 additions & 42 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# 3.1.0
2+
1. Added API for tooltips for custom elements (`ElementTooltip#getTooltip()` and `ElementTooltip#setTooltip(String tooltip)`)
3+
14
# 3.0.0
25
1. Removed useless [constructors](https://github.com/MEFRREEX/FormConstructor/commit/a5ebafd0ae5fc3f7c9fb7a21d036b05662543814) and [methods](https://github.com/MEFRREEX/FormConstructor/commit/d080f3d4906064d439e0c6597dc6e5e6f1cb951a) from CustomForm, ModalForm
36
2. Removed dependence on Nukkit forms + added FormService class

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ form.addElement(new Header("My Header"))
103103
.addElement(new Divider())
104104
.addElement("input", new Input("Input")
105105
.setPlaceholder("Text")
106-
.setDefaultValue("Default value"))
106+
.setDefaultValue("Default value")
107+
.setTooltip("Input element tooltip"))
107108
.addElement("slider", new Slider("Slider", 1f, 100f, 1, 1))
108109
.addElement("stepslider", new StepSlider("Step slider")
109110
.addStep("1")
@@ -112,7 +113,8 @@ form.addElement(new Header("My Header"))
112113
.addElement("dropdown", new Dropdown("Dropdown")
113114
.addElement("Element 1")
114115
.addElement("Element 2")
115-
.addElement("Element 3"))
116+
.addElement("Element 3")
117+
.setTooltip("Dropdown element tooltip"))
116118
.addElement("dropdown1", new Dropdown("Second dropdown", elements))
117119
.addElement("toggle", new Toggle("Toggle"));
118120

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
}
55

66
group = "com.mefrreex.formconstructor"
7-
version = "3.0.0"
7+
version = "3.1.0"
88

99
java {
1010
toolchain {
Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,11 @@
11
package com.formconstructor;
22

3-
import cn.nukkit.Player;
4-
import cn.nukkit.Server;
5-
import cn.nukkit.command.Command;
6-
import cn.nukkit.command.CommandSender;
73
import cn.nukkit.plugin.PluginBase;
8-
import com.formconstructor.form.CustomForm;
9-
import com.formconstructor.form.ModalForm;
10-
import com.formconstructor.form.SimpleForm;
11-
import com.formconstructor.form.element.SelectableElement;
12-
import com.formconstructor.form.element.custom.*;
13-
import com.formconstructor.form.element.general.Divider;
14-
import com.formconstructor.form.element.general.Header;
15-
import com.formconstructor.form.element.simple.Button;
16-
import com.formconstructor.form.element.simple.ImageType;
174
import com.formconstructor.handler.FormResponseHandler;
185
import com.formconstructor.service.FormService;
196
import com.formconstructor.service.FormServiceImpl;
207
import lombok.Getter;
218

22-
import java.util.List;
23-
import java.util.concurrent.atomic.AtomicInteger;
24-
259
@Getter
2610
public class FormConstructor extends PluginBase {
2711

@@ -39,23 +23,5 @@ public void onLoad() {
3923
public void onEnable() {
4024
this.formService = new FormServiceImpl();
4125
this.getServer().getPluginManager().registerEvents(new FormResponseHandler(), this);
42-
this.getServer().getCommandMap().register("", new Command("test") {
43-
@Override
44-
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
45-
SimpleForm form = new SimpleForm("Sample title");
46-
47-
AtomicInteger counter = new AtomicInteger();
48-
49-
// For example, let's create a task that will increment the counter by 1 every second
50-
Server.getInstance().getScheduler().scheduleRepeatingTask(() -> {
51-
form.setContent("Count is " + counter.get()); // Set form content
52-
form.sendUpdate((Player) sender); // Send a form update
53-
counter.getAndIncrement();
54-
}, 20);
55-
56-
form.send((Player) sender);
57-
return false;
58-
}
59-
});
6026
}
6127
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.formconstructor.form.element;
2+
3+
/**
4+
* This class indicates that the element can contain a tooltip.
5+
*/
6+
public interface ElementTooltip {
7+
8+
/**
9+
* Get element tooltip.
10+
*
11+
* @return Tooltip
12+
*/
13+
String getTooltip();
14+
15+
/**
16+
* Set element tooltip.
17+
*
18+
* @param tooltip Tooltip to set
19+
*/
20+
Element setTooltip(String tooltip);
21+
}

src/main/java/com/formconstructor/form/element/custom/Dropdown.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.formconstructor.form.element.ElementCustom;
44
import com.formconstructor.form.element.ElementIdentifiable;
5+
import com.formconstructor.form.element.ElementTooltip;
56
import com.formconstructor.form.element.ElementType;
67
import com.formconstructor.form.element.SelectableElement;
78
import com.google.gson.annotations.SerializedName;
@@ -13,7 +14,7 @@
1314
import java.util.List;
1415

1516
@Getter
16-
public class Dropdown extends ElementIdentifiable implements ElementCustom {
17+
public class Dropdown extends ElementIdentifiable implements ElementCustom, ElementTooltip {
1718

1819
@SerializedName("default")
1920
private int defaultIndex;
@@ -25,6 +26,8 @@ public class Dropdown extends ElementIdentifiable implements ElementCustom {
2526

2627
private transient int selectedIndex = -1;
2728

29+
private String tooltip = "";
30+
2831
public Dropdown() {
2932
this("");
3033
}
@@ -85,6 +88,17 @@ public SelectableElement getValue() {
8588
return elements.isEmpty() ? null : elements.get(selectedIndex);
8689
}
8790

91+
@Override
92+
public String getTooltip() {
93+
return tooltip;
94+
}
95+
96+
@Override
97+
public Dropdown setTooltip(String tooltip) {
98+
this.tooltip = tooltip;
99+
return this;
100+
}
101+
88102
@Override
89103
public boolean respond(Object data) {
90104
this.selectedIndex = ((Double) data).intValue();

src/main/java/com/formconstructor/form/element/custom/Input.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.formconstructor.form.element.ElementCustom;
44
import com.formconstructor.form.element.ElementIdentifiable;
5+
import com.formconstructor.form.element.ElementTooltip;
56
import com.formconstructor.form.element.ElementType;
67
import com.formconstructor.form.element.custom.validator.ValidationField;
78
import com.formconstructor.form.element.custom.validator.Validator;
@@ -13,7 +14,7 @@
1314
import java.util.List;
1415

1516
@Getter
16-
public class Input extends ElementIdentifiable implements ElementCustom, ValidationField {
17+
public class Input extends ElementIdentifiable implements ElementCustom, ElementTooltip, ValidationField {
1718

1819
private String placeholder;
1920

@@ -26,6 +27,8 @@ public class Input extends ElementIdentifiable implements ElementCustom, Validat
2627

2728
private transient List<Validator> validators;
2829

30+
private String tooltip = "";
31+
2932
public Input() {
3033
this("");
3134
}
@@ -70,6 +73,17 @@ public Input setTrim(boolean trim) {
7073
return this;
7174
}
7275

76+
@Override
77+
public String getTooltip() {
78+
return tooltip;
79+
}
80+
81+
@Override
82+
public Input setTooltip(String tooltip) {
83+
this.tooltip = tooltip;
84+
return this;
85+
}
86+
7387
@Override
7488
public void validate() {
7589
validators.forEach(validator -> validator.validate(value));

src/main/java/com/formconstructor/form/element/custom/Slider.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22

33
import com.formconstructor.form.element.ElementCustom;
44
import com.formconstructor.form.element.ElementIdentifiable;
5+
import com.formconstructor.form.element.ElementTooltip;
56
import com.formconstructor.form.element.ElementType;
67
import com.google.gson.annotations.SerializedName;
78
import lombok.Getter;
89

910
@Getter
10-
public class Slider extends ElementIdentifiable implements ElementCustom {
11+
public class Slider extends ElementIdentifiable implements ElementCustom, ElementTooltip {
1112

1213
@SerializedName("default")
1314
private float defaultValue;
@@ -18,6 +19,8 @@ public class Slider extends ElementIdentifiable implements ElementCustom {
1819

1920
private transient float value = -1;
2021

22+
private String tooltip = "";
23+
2124
public Slider() {
2225
this("");
2326
}
@@ -69,6 +72,17 @@ public Slider setDefaultValue(float defaultValue) {
6972
return this;
7073
}
7174

75+
@Override
76+
public String getTooltip() {
77+
return tooltip;
78+
}
79+
80+
@Override
81+
public Slider setTooltip(String tooltip) {
82+
this.tooltip = tooltip;
83+
return this;
84+
}
85+
7286
@Override
7387
public boolean respond(Object data) {
7488
this.value = ((Double) data).floatValue();

src/main/java/com/formconstructor/form/element/custom/StepSlider.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.formconstructor.form.element.ElementCustom;
44
import com.formconstructor.form.element.ElementIdentifiable;
5+
import com.formconstructor.form.element.ElementTooltip;
56
import com.formconstructor.form.element.ElementType;
67
import com.formconstructor.form.element.SelectableElement;
78
import com.google.gson.annotations.SerializedName;
@@ -13,7 +14,7 @@
1314
import java.util.List;
1415

1516
@Getter
16-
public class StepSlider extends ElementIdentifiable implements ElementCustom {
17+
public class StepSlider extends ElementIdentifiable implements ElementCustom, ElementTooltip {
1718

1819
@SerializedName("default")
1920
private int defaultIndex;
@@ -26,6 +27,8 @@ public class StepSlider extends ElementIdentifiable implements ElementCustom {
2627

2728
private transient int selectedIndex = -1;
2829

30+
private String tooltip = "";
31+
2932
public StepSlider() {
3033
this("");
3134
}
@@ -86,6 +89,17 @@ public SelectableElement getValue() {
8689
return (elements.isEmpty() || (elements.size() == 1 && selectedIndex == 1)) ? null : elements.get(selectedIndex);
8790
}
8891

92+
@Override
93+
public String getTooltip() {
94+
return tooltip;
95+
}
96+
97+
@Override
98+
public StepSlider setTooltip(String tooltip) {
99+
this.tooltip = tooltip;
100+
return this;
101+
}
102+
89103
@Override
90104
public boolean respond(Object data) {
91105
this.selectedIndex = ((Double) data).intValue();

src/main/java/com/formconstructor/form/element/custom/Toggle.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,19 @@
22

33
import com.formconstructor.form.element.ElementCustom;
44
import com.formconstructor.form.element.ElementIdentifiable;
5+
import com.formconstructor.form.element.ElementTooltip;
56
import com.formconstructor.form.element.ElementType;
67
import com.google.gson.annotations.SerializedName;
78

8-
public class Toggle extends ElementIdentifiable implements ElementCustom {
9+
public class Toggle extends ElementIdentifiable implements ElementCustom, ElementTooltip {
910

1011
@SerializedName("default")
1112
private final boolean defaultValue;
1213

1314
private transient boolean value;
1415

16+
private String tooltip = "";
17+
1518
public Toggle() {
1619
this("");
1720
}
@@ -38,6 +41,17 @@ public boolean getValue() {
3841
return value;
3942
}
4043

44+
@Override
45+
public String getTooltip() {
46+
return tooltip;
47+
}
48+
49+
@Override
50+
public Toggle setTooltip(String tooltip) {
51+
this.tooltip = tooltip;
52+
return this;
53+
}
54+
4155
@Override
4256
public boolean respond(Object data) {
4357
this.value = (boolean) data;

0 commit comments

Comments
 (0)