1 package com.actionbarsherlock.app;
3 import android.content.res.Configuration;
4 import android.os.Bundle;
5 import android.support.v4.app._ActionBarSherlockTrojanHorse;
6 import android.util.Log;
7 import android.view.KeyEvent;
8 import android.view.View;
9 import android.view.ViewGroup.LayoutParams;
10 import android.view.Window;
11 import com.actionbarsherlock.ActionBarSherlock;
12 import com.actionbarsherlock.view.ActionMode;
13 import com.actionbarsherlock.view.Menu;
14 import com.actionbarsherlock.view.MenuInflater;
15 import com.actionbarsherlock.view.MenuItem;
17 import static com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener;
18 import static com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener;
20 /** @see {@link _ActionBarSherlockTrojanHorse} */
21 public class SherlockFragmentActivity extends _ActionBarSherlockTrojanHorse implements OnActionModeStartedListener, OnActionModeFinishedListener {
22 private static final boolean DEBUG = false;
23 private static final String TAG = "SherlockFragmentActivity";
25 private ActionBarSherlock mSherlock;
26 private boolean mIgnoreNativeCreate = false;
27 private boolean mIgnoreNativePrepare = false;
28 private boolean mIgnoreNativeSelected = false;
30 protected final ActionBarSherlock getSherlock() {
31 if (mSherlock == null) {
32 mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE);
38 ///////////////////////////////////////////////////////////////////////////
39 // Action bar and mode
40 ///////////////////////////////////////////////////////////////////////////
42 public ActionBar getSupportActionBar() {
43 return getSherlock().getActionBar();
46 public ActionMode startActionMode(ActionMode.Callback callback) {
47 return getSherlock().startActionMode(callback);
51 public void onActionModeStarted(ActionMode mode) {}
54 public void onActionModeFinished(ActionMode mode) {}
57 ///////////////////////////////////////////////////////////////////////////
58 // General lifecycle/callback dispatching
59 ///////////////////////////////////////////////////////////////////////////
62 public void onConfigurationChanged(Configuration newConfig) {
63 super.onConfigurationChanged(newConfig);
64 getSherlock().dispatchConfigurationChanged(newConfig);
68 protected void onPostResume() {
70 getSherlock().dispatchPostResume();
74 protected void onPause() {
75 getSherlock().dispatchPause();
80 protected void onStop() {
81 getSherlock().dispatchStop();
86 protected void onDestroy() {
87 getSherlock().dispatchDestroy();
92 protected void onPostCreate(Bundle savedInstanceState) {
93 getSherlock().dispatchPostCreate(savedInstanceState);
94 super.onPostCreate(savedInstanceState);
98 protected void onTitleChanged(CharSequence title, int color) {
99 getSherlock().dispatchTitleChanged(title, color);
100 super.onTitleChanged(title, color);
104 public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
105 if (getSherlock().dispatchMenuOpened(featureId, menu)) {
108 return super.onMenuOpened(featureId, menu);
112 public void onPanelClosed(int featureId, android.view.Menu menu) {
113 getSherlock().dispatchPanelClosed(featureId, menu);
114 super.onPanelClosed(featureId, menu);
118 public boolean dispatchKeyEvent(KeyEvent event) {
119 if (getSherlock().dispatchKeyEvent(event)) {
122 return super.dispatchKeyEvent(event);
126 ///////////////////////////////////////////////////////////////////////////
127 // Native menu handling
128 ///////////////////////////////////////////////////////////////////////////
130 public MenuInflater getSupportMenuInflater() {
131 if (DEBUG) Log.d(TAG, "[getSupportMenuInflater]");
133 return getSherlock().getMenuInflater();
136 public void invalidateOptionsMenu() {
137 if (DEBUG) Log.d(TAG, "[invalidateOptionsMenu]");
139 getSherlock().dispatchInvalidateOptionsMenu();
142 public void supportInvalidateOptionsMenu() {
143 if (DEBUG) Log.d(TAG, "[supportInvalidateOptionsMenu]");
145 invalidateOptionsMenu();
149 public final boolean onCreatePanelMenu(int featureId, android.view.Menu menu) {
150 if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);
152 if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeCreate) {
153 mIgnoreNativeCreate = true;
154 boolean result = getSherlock().dispatchCreateOptionsMenu(menu);
155 mIgnoreNativeCreate = false;
157 if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
160 return super.onCreatePanelMenu(featureId, menu);
164 public final boolean onCreateOptionsMenu(android.view.Menu menu) {
169 public final boolean onPreparePanel(int featureId, View view, android.view.Menu menu) {
170 if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + ", menu: " + menu);
172 if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativePrepare) {
173 mIgnoreNativePrepare = true;
174 boolean result = getSherlock().dispatchPrepareOptionsMenu(menu);
175 mIgnoreNativePrepare = false;
177 if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
180 return super.onPreparePanel(featureId, view, menu);
184 public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
189 public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) {
190 if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
192 if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeSelected) {
193 mIgnoreNativeSelected = true;
194 boolean result = getSherlock().dispatchOptionsItemSelected(item);
195 mIgnoreNativeSelected = false;
197 if (DEBUG) Log.d(TAG, "[onMenuItemSelected] returning " + result);
200 return super.onMenuItemSelected(featureId, item);
204 public final boolean onOptionsItemSelected(android.view.MenuItem item) {
209 public void openOptionsMenu() {
210 if (!getSherlock().dispatchOpenOptionsMenu()) {
211 super.openOptionsMenu();
216 public void closeOptionsMenu() {
217 if (!getSherlock().dispatchCloseOptionsMenu()) {
218 super.closeOptionsMenu();
223 ///////////////////////////////////////////////////////////////////////////
224 // Sherlock menu handling
225 ///////////////////////////////////////////////////////////////////////////
227 public boolean onCreateOptionsMenu(Menu menu) {
231 public boolean onPrepareOptionsMenu(Menu menu) {
235 public boolean onOptionsItemSelected(MenuItem item) {
240 ///////////////////////////////////////////////////////////////////////////
242 ///////////////////////////////////////////////////////////////////////////
245 public void addContentView(View view, LayoutParams params) {
246 getSherlock().addContentView(view, params);
250 public void setContentView(int layoutResId) {
251 getSherlock().setContentView(layoutResId);
255 public void setContentView(View view, LayoutParams params) {
256 getSherlock().setContentView(view, params);
260 public void setContentView(View view) {
261 getSherlock().setContentView(view);
264 public void requestWindowFeature(long featureId) {
265 getSherlock().requestFeature((int)featureId);
269 ///////////////////////////////////////////////////////////////////////////
270 // Progress Indication
271 ///////////////////////////////////////////////////////////////////////////
273 public void setSupportProgress(int progress) {
274 getSherlock().setProgress(progress);
277 public void setSupportProgressBarIndeterminate(boolean indeterminate) {
278 getSherlock().setProgressBarIndeterminate(indeterminate);
281 public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
282 getSherlock().setProgressBarIndeterminateVisibility(visible);
285 public void setSupportProgressBarVisibility(boolean visible) {
286 getSherlock().setProgressBarVisibility(visible);
289 public void setSupportSecondaryProgress(int secondaryProgress) {
290 getSherlock().setSecondaryProgress(secondaryProgress);