package org.kvj.bravo7.form;
import android.os.Bundle;
abstract public class WidgetBundleAdapter<V, T> {
protected T defaultValue;
private BundleAdapter<T> adapter;
protected FormController controller = null;
protected String key = null;
public WidgetBundleAdapter(BundleAdapter<T> adapter, T def) {
this.defaultValue = def;
this.adapter = adapter;
}
public T save(String name, Bundle bundle) {
T value = getWidgetValue(bundle);
adapter.set(bundle, name, value);
return value;
}
public T getWidgetValue() {
return getWidgetValue(null);
}
public abstract T getWidgetValue(Bundle bundle);
public void restore(String name, Bundle bundle) {
setWidgetValue(get(name, bundle), bundle);
}
public void setWidgetValue(T value) {
setWidgetValue(value, null);
}
public abstract void setWidgetValue(T value, Bundle bundle);
public T get(String name, Bundle data) {
return adapter.get(data, name, defaultValue);
}
public void setController(FormController controller) {
this.controller = controller;
}
}