create changelog entry
[debian/openrocket] / android-libraries / ActionBarSherlock / src / com / actionbarsherlock / app / SherlockFragmentActivity.java
1 package com.actionbarsherlock.app;
2
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;
16
17 import static com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener;
18 import static com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener;
19
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";
24
25     private ActionBarSherlock mSherlock;
26     private boolean mIgnoreNativeCreate = false;
27     private boolean mIgnoreNativePrepare = false;
28     private boolean mIgnoreNativeSelected = false;
29
30     protected final ActionBarSherlock getSherlock() {
31         if (mSherlock == null) {
32             mSherlock = ActionBarSherlock.wrap(this, ActionBarSherlock.FLAG_DELEGATE);
33         }
34         return mSherlock;
35     }
36
37
38     ///////////////////////////////////////////////////////////////////////////
39     // Action bar and mode
40     ///////////////////////////////////////////////////////////////////////////
41
42     public ActionBar getSupportActionBar() {
43         return getSherlock().getActionBar();
44     }
45
46     public ActionMode startActionMode(ActionMode.Callback callback) {
47         return getSherlock().startActionMode(callback);
48     }
49
50     @Override
51     public void onActionModeStarted(ActionMode mode) {}
52
53     @Override
54     public void onActionModeFinished(ActionMode mode) {}
55
56
57     ///////////////////////////////////////////////////////////////////////////
58     // General lifecycle/callback dispatching
59     ///////////////////////////////////////////////////////////////////////////
60
61     @Override
62     public void onConfigurationChanged(Configuration newConfig) {
63         super.onConfigurationChanged(newConfig);
64         getSherlock().dispatchConfigurationChanged(newConfig);
65     }
66
67     @Override
68     protected void onPostResume() {
69         super.onPostResume();
70         getSherlock().dispatchPostResume();
71     }
72
73     @Override
74     protected void onPause() {
75         getSherlock().dispatchPause();
76         super.onPause();
77     }
78
79     @Override
80     protected void onStop() {
81         getSherlock().dispatchStop();
82         super.onStop();
83     }
84
85     @Override
86     protected void onDestroy() {
87         getSherlock().dispatchDestroy();
88         super.onDestroy();
89     }
90
91     @Override
92     protected void onPostCreate(Bundle savedInstanceState) {
93         getSherlock().dispatchPostCreate(savedInstanceState);
94         super.onPostCreate(savedInstanceState);
95     }
96
97     @Override
98     protected void onTitleChanged(CharSequence title, int color) {
99         getSherlock().dispatchTitleChanged(title, color);
100         super.onTitleChanged(title, color);
101     }
102
103     @Override
104     public final boolean onMenuOpened(int featureId, android.view.Menu menu) {
105         if (getSherlock().dispatchMenuOpened(featureId, menu)) {
106             return true;
107         }
108         return super.onMenuOpened(featureId, menu);
109     }
110
111     @Override
112     public void onPanelClosed(int featureId, android.view.Menu menu) {
113         getSherlock().dispatchPanelClosed(featureId, menu);
114         super.onPanelClosed(featureId, menu);
115     }
116
117     @Override
118     public boolean dispatchKeyEvent(KeyEvent event) {
119         if (getSherlock().dispatchKeyEvent(event)) {
120             return true;
121         }
122         return super.dispatchKeyEvent(event);
123     }
124
125
126     ///////////////////////////////////////////////////////////////////////////
127     // Native menu handling
128     ///////////////////////////////////////////////////////////////////////////
129
130     public MenuInflater getSupportMenuInflater() {
131         if (DEBUG) Log.d(TAG, "[getSupportMenuInflater]");
132
133         return getSherlock().getMenuInflater();
134     }
135
136     public void invalidateOptionsMenu() {
137         if (DEBUG) Log.d(TAG, "[invalidateOptionsMenu]");
138
139         getSherlock().dispatchInvalidateOptionsMenu();
140     }
141
142     public void supportInvalidateOptionsMenu() {
143         if (DEBUG) Log.d(TAG, "[supportInvalidateOptionsMenu]");
144
145         invalidateOptionsMenu();
146     }
147
148     @Override
149     public final boolean onCreatePanelMenu(int featureId, android.view.Menu menu) {
150         if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);
151
152         if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeCreate) {
153             mIgnoreNativeCreate = true;
154             boolean result = getSherlock().dispatchCreateOptionsMenu(menu);
155             mIgnoreNativeCreate = false;
156
157             if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
158             return result;
159         }
160         return super.onCreatePanelMenu(featureId, menu);
161     }
162
163     @Override
164     public final boolean onCreateOptionsMenu(android.view.Menu menu) {
165         return true;
166     }
167
168     @Override
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);
171
172         if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativePrepare) {
173             mIgnoreNativePrepare = true;
174             boolean result = getSherlock().dispatchPrepareOptionsMenu(menu);
175             mIgnoreNativePrepare = false;
176
177             if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
178             return result;
179         }
180         return super.onPreparePanel(featureId, view, menu);
181     }
182
183     @Override
184     public final boolean onPrepareOptionsMenu(android.view.Menu menu) {
185         return true;
186     }
187
188     @Override
189     public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) {
190         if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
191
192         if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeSelected) {
193             mIgnoreNativeSelected = true;
194             boolean result = getSherlock().dispatchOptionsItemSelected(item);
195             mIgnoreNativeSelected = false;
196
197             if (DEBUG) Log.d(TAG, "[onMenuItemSelected] returning " + result);
198             return result;
199         }
200         return super.onMenuItemSelected(featureId, item);
201     }
202
203     @Override
204     public final boolean onOptionsItemSelected(android.view.MenuItem item) {
205         return false;
206     }
207
208     @Override
209     public void openOptionsMenu() {
210         if (!getSherlock().dispatchOpenOptionsMenu()) {
211             super.openOptionsMenu();
212         }
213     }
214
215     @Override
216     public void closeOptionsMenu() {
217         if (!getSherlock().dispatchCloseOptionsMenu()) {
218             super.closeOptionsMenu();
219         }
220     }
221
222
223     ///////////////////////////////////////////////////////////////////////////
224     // Sherlock menu handling
225     ///////////////////////////////////////////////////////////////////////////
226
227     public boolean onCreateOptionsMenu(Menu menu) {
228         return true;
229     }
230
231     public boolean onPrepareOptionsMenu(Menu menu) {
232         return true;
233     }
234
235     public boolean onOptionsItemSelected(MenuItem item) {
236         return false;
237     }
238
239
240     ///////////////////////////////////////////////////////////////////////////
241     // Content
242     ///////////////////////////////////////////////////////////////////////////
243
244     @Override
245     public void addContentView(View view, LayoutParams params) {
246         getSherlock().addContentView(view, params);
247     }
248
249     @Override
250     public void setContentView(int layoutResId) {
251         getSherlock().setContentView(layoutResId);
252     }
253
254     @Override
255     public void setContentView(View view, LayoutParams params) {
256         getSherlock().setContentView(view, params);
257     }
258
259     @Override
260     public void setContentView(View view) {
261         getSherlock().setContentView(view);
262     }
263
264     public void requestWindowFeature(long featureId) {
265         getSherlock().requestFeature((int)featureId);
266     }
267
268
269     ///////////////////////////////////////////////////////////////////////////
270     // Progress Indication
271     ///////////////////////////////////////////////////////////////////////////
272
273     public void setSupportProgress(int progress) {
274         getSherlock().setProgress(progress);
275     }
276
277     public void setSupportProgressBarIndeterminate(boolean indeterminate) {
278         getSherlock().setProgressBarIndeterminate(indeterminate);
279     }
280
281     public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
282         getSherlock().setProgressBarIndeterminateVisibility(visible);
283     }
284
285     public void setSupportProgressBarVisibility(boolean visible) {
286         getSherlock().setProgressBarVisibility(visible);
287     }
288
289     public void setSupportSecondaryProgress(int secondaryProgress) {
290         getSherlock().setSecondaryProgress(secondaryProgress);
291     }
292 }