package org.robobinding.widget.absspinner;
import static org.robobinding.attribute.ChildAttributeResolvers.predefinedMappingsAttributeResolver;
import static org.robobinding.attribute.ChildAttributeResolvers.propertyAttributeResolver;
import org.robobinding.attribute.ChildAttributeResolverMappings;
import org.robobinding.viewattribute.grouped.ChildViewAttributesBuilder;
import org.robobinding.widget.adapterview.AbstractAdaptedDataSetAttributes;
import org.robobinding.widget.adapterview.DropdownLayoutUpdaterProvider;
import org.robobinding.widget.adapterview.DropdownMappingUpdater;
import org.robobinding.widget.adapterview.ItemMappingAttribute;
import org.robobinding.widget.adapterview.RowLayoutAttributeAdapter;
import org.robobinding.widget.adapterview.RowLayoutAttributeFactory;
import android.widget.AbsSpinner;
import org.robobinding.util.ObjectArrays;
/**
*
* @since 1.0
* @version $Revision: 1.0 $
* @author Robert Taylor
*/
public class AdaptedAbsSpinnerDataSetAttributes extends AbstractAdaptedDataSetAttributes<AbsSpinner> {
public static final String DROPDOWN_LAYOUT = "dropdownLayout";
public static final String DROPDOWN_MAPPING = "dropdownMapping";
@Override
public void mapChildAttributeResolvers(ChildAttributeResolverMappings resolverMappings) {
super.mapChildAttributeResolvers(resolverMappings);
resolverMappings.map(propertyAttributeResolver(), DROPDOWN_LAYOUT);
resolverMappings.map(predefinedMappingsAttributeResolver(), DROPDOWN_MAPPING);
}
@Override
public String[] getCompulsoryAttributes() {
return ObjectArrays.concat(super.getCompulsoryAttributes(), DROPDOWN_LAYOUT);
}
@Override
public void setupChildViewAttributes(AbsSpinner view, ChildViewAttributesBuilder<AbsSpinner> childViewAttributes) {
super.setupChildViewAttributes(view, childViewAttributes);
if (childViewAttributes.hasAttribute(DROPDOWN_LAYOUT)) {
RowLayoutAttributeFactory factory = new RowLayoutAttributeFactory(view,
new DropdownLayoutUpdaterProvider(view, dataSetAdapterBuilder));
childViewAttributes.add(DROPDOWN_LAYOUT, new RowLayoutAttributeAdapter(factory));
}
if (childViewAttributes.hasAttribute(DROPDOWN_MAPPING))
childViewAttributes.add(DROPDOWN_MAPPING, new ItemMappingAttribute(new DropdownMappingUpdater(dataSetAdapterBuilder)));
}
}