package gueei.binding.plugin.abs; import java.lang.ref.WeakReference; import com.actionbarsherlock.ActionBarSherlock; import com.actionbarsherlock.app.ActionBar; import gueei.binding.BindingLog; import gueei.binding.IBindableView; import gueei.binding.ViewAttribute; import android.app.Activity; import android.view.View; public class BindableActionBar extends View implements IBindableView<BindableActionBar>{ ActionBarSherlock mSherlock; WeakReference<Activity> mActivityRef; public ActionBar getActionBar(){ if(mActivityRef==null || mActivityRef.get() == null) return null; return mSherlock.getActionBar(); } public BindableActionBar(Activity context, ActionBarSherlock sherlock) { super(context); mActivityRef = new WeakReference<Activity>(context); mSherlock = sherlock; } public Activity getActivity(){ if(mActivityRef==null || mActivityRef.get() == null) return null; return mActivityRef.get(); } public ViewAttribute<? extends View, ?> createViewAttribute( String attributeId) { try{ String capId = attributeId.substring(0, 1).toUpperCase() + attributeId.substring(1); String className = "gueei.binding.plugin.abs.attributes." + capId; return (ViewAttribute<?,?>)Class.forName(className) .getConstructor(BindableActionBar.class) .newInstance((BindableActionBar)this); }catch(Exception e){ BindingLog.warning("ActionBarAttributeBinder", "Attribute not found"); return null; } } }