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

org.robobinding.binder.BinderFactory Maven / Gradle / Ivy

package org.robobinding.binder;

import org.robobinding.MenuBinder;
import org.robobinding.ViewBinder;
import org.robobinding.viewbinding.ViewBindingMap;
import org.robobinding.widgetaddon.ViewAddOn;
import org.robobinding.widgetaddon.ViewAddOns;

import android.content.Context;
import android.view.Menu;
import android.view.MenuInflater;

import com.google.common.base.Preconditions;

/**
 * 
 * @since 1.0
 * @version $Revision: 1.0 $
 * @author Cheng Wei
 */
public class BinderFactory {
	private final ViewBindingMap viewBindingMap;
	private final ViewAddOns viewAddOns;

	BinderFactory(ViewBindingMap viewBindingMap, ViewAddOns viewAddOns) {
		this.viewBindingMap = viewBindingMap;
		this.viewAddOns = viewAddOns;
	}

	public ViewBinder createViewBinder(Context context) {
		return createViewBinder(context, true);
	}

	public ViewBinder createViewBinder(Context context, boolean withPreInitializingViews) {
		checkContext(context);

		SingletonAssembler assembler = new SingletonAssembler(viewBindingMap, viewAddOns, context, withPreInitializingViews);
		return assembler.createViewBinder();
	}

	private void checkContext(Context context) {
		Preconditions.checkNotNull(context, "context must not be null");
	}

	public MenuBinder createMenuBinder(Menu menu, MenuInflater menuInflater, Context context) {
		return createMenuBinder(menu, menuInflater, context, true);
	}

	public MenuBinder createMenuBinder(Menu menu, MenuInflater menuInflater, Context context, boolean withPreInitializingViews) {
		Preconditions.checkNotNull(menuInflater, "menuInflater must not be null");
		Preconditions.checkNotNull(menu, "menu must not be null");
		checkContext(context);

		SingletonAssembler assembler = new SingletonAssembler(viewBindingMap, viewAddOns, context, withPreInitializingViews);
		return assembler.createMenuBinder(menuInflater, menu);
	}
	
	public ViewAddOn viewAddOnFor(Object view) {
		return viewAddOns.getMostSuitable(view);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy