forked from j62/ctbrec
74 lines
1.9 KiB
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;
|
|
}
|
|
}
|