package gueei.binding;
import gueei.binding.exception.AttributeNotDefinedException;
import gueei.binding.kernel.DefaultKernel;
import gueei.binding.listeners.ViewMulticastListener;
import java.util.ArrayList;
import android.app.Application;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
public class Binder {
public static final String BINDING_NAMESPACE = "http://www.gueei.com/android-binding/";
public static final String ANDROID_NAMESPACE = "http://schemas.android.com/apk/res/android";
private static IKernel _kernel;
public static IKernel getInstance(){
if (_kernel==null)
throw new RuntimeException(
"Binder has not yet initializated. Do you forget to put Binder.init(application) in Application.Create? ");
return _kernel;
}
public static ViewAttribute<?, ?> getAttributeForView(View view, String attributeId)
throws AttributeNotDefinedException {
return _kernel.getAttributeForView(view, attributeId);
}
public static ViewTag getViewTag(View view){
return _kernel.getViewTag(view);
}
public static AttributeCollection getAttributeCollectionOfView(View view){
return _kernel.getAttributeCollectionOfView(view);
}
public static void putBindingMapToView(View view, BindingMap map){
_kernel.putBindingMapToView(view, map);
}
public static BindingMap getBindingMapForView(View view){
return _kernel.getBindingMapForView(view);
}
public static InflateResult inflateView(Context context, int layoutId, ViewGroup parent, boolean attachToRoot){
return _kernel.inflateView(context, layoutId, parent, attachToRoot);
}
public static View bindView(Context context, InflateResult inflatedView, Object model){
return _kernel.bindView(context, inflatedView, model);
}
public static void init(Application application){
init(application, new DefaultKernel());
}
public static void init(Application application, IKernel kernel){
if (_kernel!=null) throw new RuntimeException(
"Init should only called once. Please check your code. ");
_kernel = kernel;
_kernel.init(application);
}
public static <T extends ViewMulticastListener<?>> T getMulticastListenerForView(View view, Class<T> listenerType){
return _kernel.getMulticastListenerForView(view, listenerType);
}
public static ISyntaxResolver getSyntaxResolver(){
return _kernel.getSyntaxResolver();
}
/**
* The class holding inflated result from Android Binding.
* @author andy
*
*/
public static class InflateResult{
public ArrayList<View> processedViews = new ArrayList<View>();
public View rootView;
}
public static String currentVersion(){
return "0.6";
}
}