package org.robobinding.viewattribute.property;
import org.robobinding.BindingContext;
import org.robobinding.attribute.ValueModelAttribute;
import org.robobinding.property.ValueModel;
/**
*
* @since 1.0
* @version $Revision: 1.0 $
* @author Cheng Wei
*/
public abstract class AbstractBindingProperty {
protected final Object view;
protected final ValueModelAttribute attribute;
private final boolean withAlwaysPreInitializingView;
public AbstractBindingProperty(Object view, ValueModelAttribute attribute, boolean withAlwaysPreInitializingView) {
this.view = view;
this.attribute = attribute;
this.withAlwaysPreInitializingView = withAlwaysPreInitializingView;
}
protected static boolean isAlwaysPreInitializingView(Object viewAttribute) {
return viewAttribute instanceof AlwaysPreInitializingView;
}
public abstract void performBind(BindingContext presentationModelAdapter);
public void preInitializeView(BindingContext presentationModelAdapter) {
ValueModel<Object> valueModel = getPropertyValueModel(presentationModelAdapter);
updateView(valueModel);
}
public boolean isAlwaysPreInitializingView() {
return withAlwaysPreInitializingView;
}
protected abstract void updateView(ValueModel<Object> valueModel);
protected abstract ValueModel<Object> getPropertyValueModel(BindingContext presentationModelAdapter);
}