package copyto.core.models;
import org.osgi.service.prefs.Preferences;
import copyto.core.TargetParam;
public abstract class AbstractTargetParamModel<T> extends AbstractModel
implements TargetParam<T> {
private String name;
private T value;
private boolean readOnly;
public AbstractTargetParamModel(String name, T value) {
this.name = name;
this.value = value;
}
public AbstractTargetParamModel(Preferences preferences) {
load(preferences);
}
public final void load(Preferences preferences) {
setName(preferences.name());
doLoad(preferences.node(getId()));
}
public final void save(Preferences preferences) {
doSave(preferences.node(getId()));
}
protected abstract String getId();
protected abstract void doLoad(Preferences preferences);
protected abstract void doSave(Preferences preferences);
public T getValue() {
return value;
}
public void setValue(T value) {
String labelValue = getLabelValue();
firePropertyChange("value", this.value, this.value = value);
firePropertyChange("labelValue", labelValue, getLabelValue());
}
public String getName() {
return name;
}
public void setName(String name) {
firePropertyChange("name", this.name, this.name = name);
}
public String getLabelValue() {
return getValue() != null ? getValue().toString() : "";
}
public boolean isReadOnly() {
return readOnly;
}
public void setReadOnly(boolean value) {
firePropertyChange("readOnly", this.readOnly, this.readOnly = value);
}
}