package gueei.binding.plugin.abs; import gueei.binding.labs.EventAggregator; import gueei.binding.plugin.abs.BindableOptionsMenu; import gueei.binding.v30.app.BindingActivityV30; import android.content.res.Configuration; import android.os.Build; import android.os.Build.VERSION; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.view.Window; import com.actionbarsherlock.ActionBarSherlock; import com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener; import com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener; import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener; import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener; import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.view.ActionMode; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; public class BindingABSActivity extends BindingActivityV30 implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener { @Override protected View createBindableActionBar() { if (VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ return super.createBindableActionBar(); } return new BindableActionBar(this, this.getSherlock()); } @Override protected View createBindableOptionsMenu() { return new BindableOptionsMenu(this, this.getSherlock()); } private ActionBarSherlock mSherlock; protected final ActionBarSherlock getSherlock() { if (mSherlock == null) { mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE); } return mSherlock; } /////////////////////////////////////////////////////////////////////////// // Action bar and mode /////////////////////////////////////////////////////////////////////////// public ActionBar getSupportActionBar() { return getSherlock().getActionBar(); } public ActionMode startActionMode(ActionMode.Callback callback) { return getSherlock().startActionMode(callback); } @Override public void onActionModeStarted(ActionMode mode) {} @Override public void onActionModeFinished(ActionMode mode) {} /////////////////////////////////////////////////////////////////////////// // General lifecycle/callback dispatching /////////////////////////////////////////////////////////////////////////// @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); getSherlock().dispatchConfigurationChanged(newConfig); } @Override protected void onPostResume() { super.onPostResume(); getSherlock().dispatchPostResume(); } @Override protected void onPause() { getSherlock().dispatchPause(); super.onPause(); } @Override protected void onStop() { getSherlock().dispatchStop(); super.onStop(); } @Override protected void onDestroy() { getSherlock().dispatchDestroy(); super.onDestroy(); } @Override protected void onPostCreate(Bundle savedInstanceState) { getSherlock().dispatchPostCreate(savedInstanceState); super.onPostCreate(savedInstanceState); } @Override protected void onTitleChanged(CharSequence title, int color) { getSherlock().dispatchTitleChanged(title, color); super.onTitleChanged(title, color); } @Override public final boolean onMenuOpened(int featureId, android.view.Menu menu) { if (getSherlock().dispatchMenuOpened(featureId, menu)) { return true; } return super.onMenuOpened(featureId, menu); } @Override public void onPanelClosed(int featureId, android.view.Menu menu) { getSherlock().dispatchPanelClosed(featureId, menu); super.onPanelClosed(featureId, menu); } @Override public boolean dispatchKeyEvent(KeyEvent event) { if (getSherlock().dispatchKeyEvent(event)) { return true; } return super.dispatchKeyEvent(event); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); getSherlock().dispatchSaveInstanceState(outState); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); getSherlock().dispatchRestoreInstanceState(savedInstanceState); } /////////////////////////////////////////////////////////////////////////// // Native menu handling /////////////////////////////////////////////////////////////////////////// public MenuInflater getSupportMenuInflater() { return getSherlock().getMenuInflater(); } public void invalidateOptionsMenu() { getSherlock().dispatchInvalidateOptionsMenu(); } public void supportInvalidateOptionsMenu() { invalidateOptionsMenu(); } @Override public final boolean onCreateOptionsMenu(android.view.Menu menu) { return getSherlock().dispatchCreateOptionsMenu(menu); } @Override public final boolean onPrepareOptionsMenu(android.view.Menu menu) { return getSherlock().dispatchPrepareOptionsMenu(menu); } @Override public final boolean onOptionsItemSelected(android.view.MenuItem item) { return getSherlock().dispatchOptionsItemSelected(item); } @Override public void openOptionsMenu() { if (!getSherlock().dispatchOpenOptionsMenu()) { super.openOptionsMenu(); } } @Override public void closeOptionsMenu() { if (!getSherlock().dispatchCloseOptionsMenu()) { super.closeOptionsMenu(); } } /////////////////////////////////////////////////////////////////////////// // Sherlock menu handling /////////////////////////////////////////////////////////////////////////// @Override public boolean onCreatePanelMenu(int featureId, Menu menu) { if (featureId == Window.FEATURE_OPTIONS_PANEL) { return onCreateOptionsMenu(menu); } return false; } public boolean onCreateOptionsMenu(Menu menu) { if (mBindableOptionsMenuRef!=null) return ((BindableOptionsMenu)mBindableOptionsMenuRef).onCreateOptionsMenu(menu); return true; } @Override public boolean onPreparePanel(int featureId, View view, Menu menu) { if (featureId == Window.FEATURE_OPTIONS_PANEL) { return onPrepareOptionsMenu(menu); } return false; } public boolean onPrepareOptionsMenu(Menu menu) { if (mBindableOptionsMenuRef!=null) return ((BindableOptionsMenu)mBindableOptionsMenuRef).onPrepareOptionsMenu(menu); return true; } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { if (featureId == Window.FEATURE_OPTIONS_PANEL) { return onOptionsItemSelected(item); } return false; } public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home){ EventAggregator.getInstance(this).publish("Clicked(android.R.id.home)", this, null); return true; } if (mBindableOptionsMenuRef!=null) return ((BindableOptionsMenu)mBindableOptionsMenuRef).onOptionsItemSelected(item); return false; } /////////////////////////////////////////////////////////////////////////// // Content /////////////////////////////////////////////////////////////////////////// @Override public void addContentView(View view, LayoutParams params) { getSherlock().addContentView(view, params); } @Override public void setContentView(int layoutResId) { getSherlock().setContentView(layoutResId); } @Override public void setContentView(View view, LayoutParams params) { getSherlock().setContentView(view, params); } @Override public void setContentView(View view) { getSherlock().setContentView(view); } public void requestWindowFeature(long featureId) { getSherlock().requestFeature((int)featureId); } /////////////////////////////////////////////////////////////////////////// // Progress Indication /////////////////////////////////////////////////////////////////////////// public void setSupportProgress(int progress) { getSherlock().setProgress(progress); } public void setSupportProgressBarIndeterminate(boolean indeterminate) { getSherlock().setProgressBarIndeterminate(indeterminate); } public void setSupportProgressBarIndeterminateVisibility(boolean visible) { getSherlock().setProgressBarIndeterminateVisibility(visible); } public void setSupportProgressBarVisibility(boolean visible) { getSherlock().setProgressBarVisibility(visible); } public void setSupportSecondaryProgress(int secondaryProgress) { getSherlock().setSecondaryProgress(secondaryProgress); } }