All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.robobinding.viewattribute.StandaloneViewAttributeInitializer Maven / Gradle / Ivy

package org.robobinding.viewattribute;

import org.robobinding.attribute.CommandAttribute;
import org.robobinding.attribute.ValueModelAttribute;

import android.view.View;

/**
 *
 * @since 1.0
 * @version $Revision: 1.0 $
 * @author Robert Taylor
 * @author Cheng Wei
 */
public class StandaloneViewAttributeInitializer {
    private final ViewListenersInjector viewListenersInjector;
    private View view;

    public StandaloneViewAttributeInitializer(ViewListenersInjector viewListenersInjector) {
	this.viewListenersInjector = viewListenersInjector;
    }

    public StandaloneViewAttributeInitializer(ViewListenersInjector viewListenersInjector, View view) {
	this(viewListenersInjector);
	this.view = view;
    }

    @SuppressWarnings({ "unchecked" })
    public void initializePropertyViewAttribute(
    		PropertyViewAttribute propertyViewAttribute, ValueModelAttribute attribute) {
	if (propertyViewAttribute instanceof AbstractMultiTypePropertyViewAttribute) {
	    initializeMultiTypePropertyViewAttribute((AbstractMultiTypePropertyViewAttribute) propertyViewAttribute, attribute);
	} else {
	    initializeAbstractPropertyViewAttribute((AbstractPropertyViewAttribute) propertyViewAttribute, attribute);
	}
    }

    @SuppressWarnings({ "unchecked", "rawtypes" })
    private void initializeAbstractPropertyViewAttribute(AbstractPropertyViewAttribute viewAttribute, ValueModelAttribute attribute) {
	viewAttribute.initialize(new PropertyViewAttributeConfig(view, attribute));
	viewListenersInjector.injectIfRequired(viewAttribute, view);
    }

    @SuppressWarnings({ "unchecked", "rawtypes" })
    private void initializeMultiTypePropertyViewAttribute(AbstractMultiTypePropertyViewAttribute viewAttribute,
	    ValueModelAttribute attribute) {
	viewAttribute.initialize(new MultiTypePropertyViewAttributeConfig(view, attribute, viewListenersInjector));
    }

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public void initializeCommandViewAttribute(AbstractCommandViewAttribute viewAttribute, CommandAttribute attribute) {
	viewAttribute.initialize(new CommandViewAttributeConfig(view, attribute));
	viewListenersInjector.injectIfRequired(viewAttribute, view);
    }

    public void setView(View view) {
	this.view = view;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy