Creating generic Workspace/CellLayout for paged views in Launcher.

Adding SimpleWorkspace, SimpleCellLayout and an AllApps implementation of the SimpleWorkspace.
Making SimpleWorkspace support content with smaller dimensions than the workspace dimensions
itself.  Temporary change to AllApps tabs styling until we get new assets for tabs in general.

Change-Id: Ibe3c56603223853d232816b6695e4ddd757857ba
diff --git a/src/com/android/launcher2/AllAppsTabbed.java b/src/com/android/launcher2/AllAppsTabbed.java
index 7dbb1a5..0470cee 100644
--- a/src/com/android/launcher2/AllAppsTabbed.java
+++ b/src/com/android/launcher2/AllAppsTabbed.java
@@ -16,16 +16,20 @@
 
 package com.android.launcher2;
 
-import com.android.launcher.R;
+import java.util.ArrayList;
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.graphics.Color;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
+import android.widget.RelativeLayout;
 import android.widget.TabHost;
+import android.widget.TabWidget;
+import android.widget.TextView;
 
-import java.util.ArrayList;
+import com.android.launcher.R;
 
 /**
  * Implements a tabbed version of AllApps2D.
@@ -39,7 +43,7 @@
     private static final String TAG_GAMES = "GAMES";
     private static final String TAG_DOWNLOADED = "DOWNLOADED";
 
-    private AllApps2D mAllApps2D;
+    private AllAppsPagedView mAllApps;
     private Context mContext;
 
     public AllAppsTabbed(Context context, AttributeSet attrs) {
@@ -49,18 +53,20 @@
 
     @Override
     protected void onFinishInflate() {
+        // setup the tab host
+        setup();
+
         try {
-            mAllApps2D = (AllApps2D)findViewById(R.id.all_apps_2d);
-            if (mAllApps2D == null) throw new Resources.NotFoundException();
+            mAllApps = (AllAppsPagedView) findViewById(R.id.all_apps_paged_view);
+            if (mAllApps == null) throw new Resources.NotFoundException();
         } catch (Resources.NotFoundException e) {
             Log.e(TAG, "Can't find necessary layout elements for AllAppsTabbed");
         }
-        setup();
 
-        // This lets us share the same view between all tabs
+        // share the same AllApps workspace across all the tabs
         TabContentFactory contentFactory = new TabContentFactory() {
             public View createTabContent(String tag) {
-                return mAllApps2D;
+                return mAllApps;
             }
         };
 
@@ -76,51 +82,67 @@
         label = mContext.getString(R.string.all_apps_tab_downloaded);
         addTab(newTabSpec(TAG_DOWNLOADED).setIndicator(label).setContent(contentFactory));
 
+        // TEMP: just styling the tab widget to be a bit nicer until we get the actual
+        // new assets
+        TabWidget tabWidget = getTabWidget();
+        for (int i = 0; i < tabWidget.getChildCount(); ++i) {
+            RelativeLayout tab = (RelativeLayout) tabWidget.getChildTabViewAt(i);
+            TextView text = (TextView) tab.getChildAt(1);
+            text.setTextSize(20.0f);
+            text.setPadding(20, 0, 20, 0);
+            text.setShadowLayer(1.0f, 0.0f, 1.0f, Color.BLACK);
+            tab.setBackgroundDrawable(null);
+        }
+
         setOnTabChangedListener(new OnTabChangeListener() {
             public void onTabChanged(String tabId) {
                 String tag = getCurrentTabTag();
                 if (tag == TAG_ALL) {
-                    mAllApps2D.filterApps(AllApps2D.AppType.ALL);
+                    mAllApps.setAppFilter(AllAppsPagedView.ALL_APPS_FLAG);
                 } else if (tag == TAG_APPS) {
-                    mAllApps2D.filterApps(AllApps2D.AppType.APP);
+                    mAllApps.setAppFilter(ApplicationInfo.APP_FLAG);
                 } else if (tag == TAG_GAMES) {
-                    mAllApps2D.filterApps(AllApps2D.AppType.GAME);
+                    mAllApps.setAppFilter(ApplicationInfo.GAME_FLAG);
                 } else if (tag == TAG_DOWNLOADED) {
-                    mAllApps2D.filterApps(AllApps2D.AppType.DOWNLOADED);
+                    mAllApps.setAppFilter(ApplicationInfo.DOWNLOADED_FLAG);
                 }
             }
         });
 
         setCurrentTab(0);
+
+        // It needs to be INVISIBLE so that it will be measured in the layout.
+        // Otherwise the animations is messed up when we show it for the first time.
+        setVisibility(INVISIBLE);
     }
 
     @Override
     public void setLauncher(Launcher launcher) {
-        mAllApps2D.setLauncher(launcher);
+        mAllApps.setLauncher(launcher);
     }
 
     @Override
     public void setDragController(DragController dragger) {
-        mAllApps2D.setDragController(dragger);
+        mAllApps.setDragController(dragger);
     }
 
     @Override
     public void zoom(float zoom, boolean animate) {
         // NOTE: animate parameter is ignored for the TabHost itself
         setVisibility((zoom == 0.0f) ? View.GONE : View.VISIBLE);
-        mAllApps2D.zoom(zoom, animate);
+        mAllApps.zoom(zoom, animate);
     }
 
     @Override
     public void setVisibility(int visibility) {
         super.setVisibility(visibility);
         float zoom = visibility == View.VISIBLE ? 1.0f : 0.0f;
-        mAllApps2D.zoom(zoom, false);
+        mAllApps.zoom(zoom, false);
     }
 
     @Override
     public boolean isVisible() {
-        return mAllApps2D.isVisible();
+        return mAllApps.isVisible();
     }
 
     @Override
@@ -130,31 +152,31 @@
 
     @Override
     public void setApps(ArrayList<ApplicationInfo> list) {
-        mAllApps2D.setApps(list);
+        mAllApps.setApps(list);
     }
 
     @Override
     public void addApps(ArrayList<ApplicationInfo> list) {
-        mAllApps2D.addApps(list);
+        mAllApps.addApps(list);
     }
 
     @Override
     public void removeApps(ArrayList<ApplicationInfo> list) {
-        mAllApps2D.removeApps(list);
+        mAllApps.removeApps(list);
     }
 
     @Override
     public void updateApps(ArrayList<ApplicationInfo> list) {
-        mAllApps2D.updateApps(list);
+        mAllApps.updateApps(list);
     }
 
     @Override
     public void dumpState() {
-        mAllApps2D.dumpState();
+        mAllApps.dumpState();
     }
 
     @Override
     public void surrender() {
-        mAllApps2D.surrender();
+        mAllApps.surrender();
     }
 }