package com.actionbarsherlock.app; | |
import android.app.ExpandableListActivity; | |
import android.content.res.Configuration; | |
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.view.ActionMode; | |
import com.actionbarsherlock.view.Menu; | |
import com.actionbarsherlock.view.MenuInflater; | |
import com.actionbarsherlock.view.MenuItem; | |
public abstract class SherlockExpandableListActivity extends ExpandableListActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener { | |
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); | |
} | |
/////////////////////////////////////////////////////////////////////////// | |
// 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) { | |
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) { | |
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) { | |
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); | |
} | |
} |