forked from j62/ctbrec
1
0
Fork 0
ctbrec/client/src/main/java/ctbrec/ui/settings/api/Setting.java

74 lines
1.9 KiB
Java

package ctbrec.ui.settings.api;
import static java.util.Optional.*;
import ctbrec.StringUtil;
import javafx.beans.property.Property;
import javafx.scene.Node;
import javafx.scene.control.Control;
import javafx.scene.control.Tooltip;
public class Setting {
private String name;
private String key;
private String tooltip;
private Property<?> property;
private Node gui;
private PreferencesStorage preferencesStorage;
private Setting(String name, String key) {
this.name = name;
this.key = key;
}
public static Setting of(String name, String key) {
return new Setting(name, key);
}
public static Setting of(String name, String key, String tooltip) {
Setting setting = new Setting(name, key);
setting.tooltip = tooltip;
return setting;
}
String getName() {
return name;
}
String getKey() {
return key;
}
String getTooltip() {
return tooltip;
}
@SuppressWarnings("rawtypes")
Property getProperty() {
return property;
}
Node getGui() throws Exception {
if (gui == null) {
gui = preferencesStorage.createGui(key);
if (gui instanceof Control && StringUtil.isNotBlank(tooltip)) {
Control control = (Control) gui;
control.setTooltip(new Tooltip(tooltip));
}
}
return gui;
}
public void setPreferencesStorage(PreferencesStorage preferencesStorage) {
this.preferencesStorage = preferencesStorage;
}
public boolean contains(String filter) {
boolean contains = name.toLowerCase().contains(filter)
|| ofNullable(tooltip).orElse("").toLowerCase().contains(filter)
|| property != null && property.getValue().toString().toLowerCase().contains(filter);
return contains;
}
}