package org.robobinding.viewattribute.grouped;
import org.robobinding.attribute.EnumAttribute;
import org.robobinding.attribute.StaticResourceAttribute;
import org.robobinding.attribute.ValueModelAttribute;
import org.robobinding.viewattribute.property.OneWayMultiTypePropertyViewAttribute;
import org.robobinding.viewattribute.property.OneWayMultiTypePropertyViewAttributeFactory;
import org.robobinding.viewattribute.property.OneWayPropertyViewAttribute;
import org.robobinding.viewattribute.property.OneWayPropertyViewAttributeFactory;
import org.robobinding.viewattribute.property.TwoWayMultiTypePropertyViewAttribute;
import org.robobinding.viewattribute.property.TwoWayMultiTypePropertyViewAttributeFactory;
import org.robobinding.viewattribute.property.TwoWayPropertyViewAttribute;
import org.robobinding.viewattribute.property.TwoWayPropertyViewAttributeFactory;
/**
*
* @since 1.0
* @version $Revision: 1.0 $
* @author Cheng Wei
*/
public interface ChildViewAttributesBuilder<ViewType> {
void add(String attributeName, ChildViewAttribute childAttribute);
void add(String attributeName, ChildViewAttributeFactory factory);
void addDependent(String attributeName, ChildViewAttributeFactory factory);
void add(String attributeName, OneWayPropertyViewAttribute<ViewType, ?> viewAttribute);
void add(String attributeName, OneWayPropertyViewAttributeFactory<ViewType> factory);
void add(String attributeName, TwoWayPropertyViewAttribute<ViewType, ?, ?> viewAttribute);
void add(String attributeName, TwoWayPropertyViewAttributeFactory<ViewType> factory);
void add(String attributeName, OneWayMultiTypePropertyViewAttribute<ViewType> viewAttribute);
void add(String attributeName, OneWayMultiTypePropertyViewAttributeFactory<ViewType> factory);
void add(String attributeName, TwoWayMultiTypePropertyViewAttribute<ViewType> viewAttribute);
void add(String attributeName, TwoWayMultiTypePropertyViewAttributeFactory<ViewType> factory);
void failOnFirstBindingError();
boolean hasAttribute(String attributeName);
ValueModelAttribute valueModelAttributeFor(String attributeName);
StaticResourceAttribute staticResourceAttributeFor(String attributeName);
<E extends Enum<E>> EnumAttribute<E> enumAttributeFor(String attributeName);
}