1 package com
.actionbarsherlock
.app
;
3 import android
.content
.res
.Configuration
;
4 import android
.os
.Bundle
;
5 import android
.support
.v4
.app
.Watson
;
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 android.support.v4.app.Watson} */
21 public class SherlockFragmentActivity
extends Watson
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 protected void onSaveInstanceState(Bundle outState
) {
127 super.onSaveInstanceState(outState
);
128 getSherlock().dispatchSaveInstanceState(outState
);
132 protected void onRestoreInstanceState(Bundle savedInstanceState
) {
133 super.onRestoreInstanceState(savedInstanceState
);
134 getSherlock().dispatchRestoreInstanceState(savedInstanceState
);
137 ///////////////////////////////////////////////////////////////////////////
138 // Native menu handling
139 ///////////////////////////////////////////////////////////////////////////
141 public MenuInflater
getSupportMenuInflater() {
142 if (DEBUG
) Log
.d(TAG
, "[getSupportMenuInflater]");
144 return getSherlock().getMenuInflater();
147 public void invalidateOptionsMenu() {
148 if (DEBUG
) Log
.d(TAG
, "[invalidateOptionsMenu]");
150 getSherlock().dispatchInvalidateOptionsMenu();
153 public void supportInvalidateOptionsMenu() {
154 if (DEBUG
) Log
.d(TAG
, "[supportInvalidateOptionsMenu]");
156 invalidateOptionsMenu();
160 public final boolean onCreatePanelMenu(int featureId
, android
.view
.Menu menu
) {
161 if (DEBUG
) Log
.d(TAG
, "[onCreatePanelMenu] featureId: " + featureId
+ ", menu: " + menu
);
163 if (featureId
== Window
.FEATURE_OPTIONS_PANEL
&& !mIgnoreNativeCreate
) {
164 mIgnoreNativeCreate
= true
;
165 boolean result
= getSherlock().dispatchCreateOptionsMenu(menu
);
166 mIgnoreNativeCreate
= false
;
168 if (DEBUG
) Log
.d(TAG
, "[onCreatePanelMenu] returning " + result
);
171 return super.onCreatePanelMenu(featureId
, menu
);
175 public final boolean onCreateOptionsMenu(android
.view
.Menu menu
) {
180 public final boolean onPreparePanel(int featureId
, View view
, android
.view
.Menu menu
) {
181 if (DEBUG
) Log
.d(TAG
, "[onPreparePanel] featureId: " + featureId
+ ", view: " + view
+ ", menu: " + menu
);
183 if (featureId
== Window
.FEATURE_OPTIONS_PANEL
&& !mIgnoreNativePrepare
) {
184 mIgnoreNativePrepare
= true
;
185 boolean result
= getSherlock().dispatchPrepareOptionsMenu(menu
);
186 mIgnoreNativePrepare
= false
;
188 if (DEBUG
) Log
.d(TAG
, "[onPreparePanel] returning " + result
);
191 return super.onPreparePanel(featureId
, view
, menu
);
195 public final boolean onPrepareOptionsMenu(android
.view
.Menu menu
) {
200 public final boolean onMenuItemSelected(int featureId
, android
.view
.MenuItem item
) {
201 if (DEBUG
) Log
.d(TAG
, "[onMenuItemSelected] featureId: " + featureId
+ ", item: " + item
);
203 if (featureId
== Window
.FEATURE_OPTIONS_PANEL
&& !mIgnoreNativeSelected
) {
204 mIgnoreNativeSelected
= true
;
205 boolean result
= getSherlock().dispatchOptionsItemSelected(item
);
206 mIgnoreNativeSelected
= false
;
208 if (DEBUG
) Log
.d(TAG
, "[onMenuItemSelected] returning " + result
);
211 return super.onMenuItemSelected(featureId
, item
);
215 public final boolean onOptionsItemSelected(android
.view
.MenuItem item
) {
220 public void openOptionsMenu() {
221 if (!getSherlock().dispatchOpenOptionsMenu()) {
222 super.openOptionsMenu();
227 public void closeOptionsMenu() {
228 if (!getSherlock().dispatchCloseOptionsMenu()) {
229 super.closeOptionsMenu();
234 ///////////////////////////////////////////////////////////////////////////
235 // Sherlock menu handling
236 ///////////////////////////////////////////////////////////////////////////
238 public boolean onCreateOptionsMenu(Menu menu
) {
242 public boolean onPrepareOptionsMenu(Menu menu
) {
246 public boolean onOptionsItemSelected(MenuItem item
) {
251 ///////////////////////////////////////////////////////////////////////////
253 ///////////////////////////////////////////////////////////////////////////
256 public void addContentView(View view
, LayoutParams params
) {
257 getSherlock().addContentView(view
, params
);
261 public void setContentView(int layoutResId
) {
262 getSherlock().setContentView(layoutResId
);
266 public void setContentView(View view
, LayoutParams params
) {
267 getSherlock().setContentView(view
, params
);
271 public void setContentView(View view
) {
272 getSherlock().setContentView(view
);
275 public void requestWindowFeature(long featureId
) {
276 getSherlock().requestFeature((int)featureId
);
280 ///////////////////////////////////////////////////////////////////////////
281 // Progress Indication
282 ///////////////////////////////////////////////////////////////////////////
284 public void setSupportProgress(int progress
) {
285 getSherlock().setProgress(progress
);
288 public void setSupportProgressBarIndeterminate(boolean indeterminate
) {
289 getSherlock().setProgressBarIndeterminate(indeterminate
);
292 public void setSupportProgressBarIndeterminateVisibility(boolean visible
) {
293 getSherlock().setProgressBarIndeterminateVisibility(visible
);
296 public void setSupportProgressBarVisibility(boolean visible
) {
297 getSherlock().setProgressBarVisibility(visible
);
300 public void setSupportSecondaryProgress(int secondaryProgress
) {
301 getSherlock().setSecondaryProgress(secondaryProgress
);