Permalink
Browse files

General refactoring + Throw Exception when using setActionBarContentView

Closes #26
  • Loading branch information...
1 parent 466045f commit c65fcf9a5c63a0e65884f5b610ac5c1020f671c5 @cyrilmottier cyrilmottier committed May 8, 2011
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
-** Copyright (C) 2010 Cyril Mottier (http://www.cyrilmottier.com)
+** Copyright (C) 2011 Cyril Mottier (http://www.cyrilmottier.com)
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
-** Copyright (C) 2010 Cyril Mottier (http://www.cyrilmottier.com)
+** Copyright (C) 2011 Cyril Mottier (http://www.cyrilmottier.com)
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
-** Copyright (C) 2010 Cyril Mottier (http://www.cyrilmottier.com)
+** Copyright (C) 2011 Cyril Mottier (http://www.cyrilmottier.com)
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
@@ -1,77 +1,90 @@
+/*
+ * Copyright (C) 2011 Cyril Mottier (http://www.cyrilmottier.com)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package greendroid.app;
-import com.cyrilmottier.android.greendroid.R;
-
-import greendroid.util.Config;
import greendroid.widget.ActionBar;
-import android.util.Log;
+import android.app.ExpandableListActivity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
+import android.view.ViewGroup.LayoutParams;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
+
+import com.cyrilmottier.android.greendroid.R;
+
/**
- * An equivalent to {@link ExpandableListActivity} that manages a ExpandableListView.
+ * A {@link GDActivity} equivalent to {@link ExpandableListActivity} that
+ * manages an {@link ExpandableListView}.
*
* @see {@link ExpandableListActivity}
*/
-public class GDExpandableListActivity extends GDActivity implements
- OnCreateContextMenuListener,
- ExpandableListView.OnChildClickListener, ExpandableListView.OnGroupCollapseListener,
- ExpandableListView.OnGroupExpandListener {
-
- private static final String LOG_TAG = GDExpandableListActivity.class.getSimpleName();
+public class GDExpandableListActivity extends GDActivity implements OnCreateContextMenuListener, ExpandableListView.OnChildClickListener,
+ ExpandableListView.OnGroupCollapseListener, ExpandableListView.OnGroupExpandListener {
private ExpandableListAdapter mAdapter;
private ExpandableListView mList;
private View mEmptyView;
-
+
boolean mFinishedStart = false;
-
+
public GDExpandableListActivity() {
- super();
+ super();
}
-
+
public GDExpandableListActivity(ActionBar.Type actionBarType) {
- super(actionBarType);
+ super(actionBarType);
}
-
+
/**
- * Override this to populate the context menu when an item is long pressed. menuInfo
- * will contain an {@link android.widget.ExpandableListView.ExpandableListContextMenuInfo}
- * whose packedPosition is a packed position
- * that should be used with {@link ExpandableListView#getPackedPositionType(long)} and
- * the other similar methods.
+ * Override this to populate the context menu when an item is long pressed.
+ * menuInfo will contain an
+ * {@link android.widget.ExpandableListView.ExpandableListContextMenuInfo}
+ * whose packedPosition is a packed position that should be used with
+ * {@link ExpandableListView#getPackedPositionType(long)} and the other
+ * similar methods.
* <p>
* {@inheritDoc}
*/
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
}
-
+
/**
* Override this for receiving callbacks when a child has been clicked.
* <p>
* {@inheritDoc}
*/
- public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
- int childPosition, long id) {
+ public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
return false;
}
-
+
/**
* Override this for receiving callbacks when a group has been collapsed.
*/
public void onGroupCollapse(int groupPosition) {
}
-
+
/**
* Override this for receiving callbacks when a group has been expanded.
*/
public void onGroupExpand(int groupPosition) {
}
-
+
/**
* Provide the adapter for the expandable list.
*/
@@ -82,78 +95,93 @@ public void setListAdapter(ExpandableListAdapter adapter) {
mList.setAdapter(adapter);
}
}
-
+
/**
- * Get the activity's expandable list view widget. This can be used to get the selection,
- * set the selection, and many other useful functions.
+ * Get the activity's expandable list view widget. This can be used to get
+ * the selection, set the selection, and many other useful functions.
*
* @see ExpandableListView
*/
public ExpandableListView getExpandableListView() {
ensureLayout();
return mList;
}
-
+
/**
* Get the ExpandableListAdapter associated with this activity's
* ExpandableListView.
*/
public ExpandableListAdapter getExpandableListAdapter() {
return mAdapter;
}
-
+
@Override
public int createLayout() {
- if (Config.GD_INFO_LOGS_ENABLED) {
- Log.d(LOG_TAG, "No layout specified : creating the default layout");
- }
-
switch (getActionBarType()) {
case Dashboard:
- return R.layout.gd_expandablelist_content_dashboard;
+ return R.layout.gd_expandable_list_content_dashboard;
case Empty:
- return R.layout.gd_expandablelist_content_empty;
+ return R.layout.gd_expandable_list_content_empty;
case Normal:
default:
- return R.layout.gd_expandablelist_content_normal;
+ return R.layout.gd_expandable_list_content_normal;
}
}
-
+
@Override
public void onPreContentChanged() {
super.onPreContentChanged();
-
+
mEmptyView = findViewById(android.R.id.empty);
- mList = (ExpandableListView)findViewById(android.R.id.list);
+ mList = (ExpandableListView) findViewById(android.R.id.list);
if (mList == null) {
- throw new RuntimeException(
- "Your content must have a ExpandableListView whose id attribute is " +
- "'android.R.id.list'");
+ throw new RuntimeException("Your content must have a ExpandableListView whose id attribute is " + "'android.R.id.list'");
}
}
-
+
@Override
public void onPostContentChanged() {
super.onPostContentChanged();
-
+
if (mEmptyView != null) {
mList.setEmptyView(mEmptyView);
}
mList.setOnChildClickListener(this);
mList.setOnGroupExpandListener(this);
mList.setOnGroupCollapseListener(this);
-
+
if (mFinishedStart) {
setListAdapter(mAdapter);
}
mFinishedStart = true;
}
-
+
+ @Override
+ public void setActionBarContentView(int resID) {
+ throwSetActionBarContentViewException();
+ }
+
+ @Override
+ public void setActionBarContentView(View view, LayoutParams params) {
+ throwSetActionBarContentViewException();
+ }
+
+ @Override
+ public void setActionBarContentView(View view) {
+ throwSetActionBarContentViewException();
+ }
+
+ private void throwSetActionBarContentViewException() {
+ throw new UnsupportedOperationException(
+ "The setActionBarContentView method is not supported for GDListActivity. In order to get a custom layout you must return a layout identifier in createLayout");
+
+ }
+
@Override
protected boolean verifyLayout() {
return super.verifyLayout() && mList != null;
}
-
+
/**
* Gets the ID of the currently selected group or child.
*
@@ -162,7 +190,7 @@ protected boolean verifyLayout() {
public long getSelectedId() {
return mList.getSelectedId();
}
-
+
/**
* Gets the position (in packed position representation) of the currently
* selected group or child. Use
@@ -177,7 +205,7 @@ public long getSelectedId() {
public long getSelectedPosition() {
return mList.getSelectedPosition();
}
-
+
/**
* Sets the selection to the specified child. If the child is in a collapsed
* group, the group will only be expanded and child subsequently selected if
@@ -192,9 +220,10 @@ public long getSelectedPosition() {
public boolean setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup) {
return mList.setSelectedChild(groupPosition, childPosition, shouldExpandGroup);
}
-
+
/**
* Sets the selection to the specified group.
+ *
* @param groupPosition The position of the group that should be selected.
*/
public void setSelectedGroup(int groupPosition) {

0 comments on commit c65fcf9

Please sign in to comment.