another round of UI refresh
  moved buttons in the url bar
  fixed selected tab visuals (activated)

Change-Id: Ib69f9ca68b3d8cc8dfe6856f7248f21267127ae8
diff --git a/src/com/android/browser/PageProgressView.java b/src/com/android/browser/PageProgressView.java
index 183566a..f512cef 100644
--- a/src/com/android/browser/PageProgressView.java
+++ b/src/com/android/browser/PageProgressView.java
@@ -20,6 +20,8 @@
 import android.graphics.Canvas;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.Message;
 import android.util.AttributeSet;
 import android.widget.ImageView;
 
@@ -28,9 +30,16 @@
  */
 public class PageProgressView extends ImageView {
 
-    private int mProgress;
-    private int mMaxProgress;
+    public static final int MAX_PROGRESS = 10000;
+    private static final int MSG_UPDATE = 42;
+    private static final int STEPS = 10;
+    private static final int DELAY = 40;
+
+    private int mCurrentProgress;
+    private int mTargetProgress;
+    private int mIncrement;
     private Rect mBounds;
+    private Handler mHandler;
 
     /**
      * @param context
@@ -60,27 +69,41 @@
     }
 
     private void init(Context ctx) {
-        mMaxProgress = 10000;
         mBounds = new Rect(0,0,0,0);
-        mProgress = 0;
+        mCurrentProgress = 0;
+        mTargetProgress = 0;
+        mHandler = new Handler() {
+
+            @Override
+            public void handleMessage(Message msg) {
+                if (msg.what == MSG_UPDATE) {
+                    mCurrentProgress = Math.min(mTargetProgress,
+                            mCurrentProgress + mIncrement);
+                    mBounds.right = getWidth() * mCurrentProgress / MAX_PROGRESS;
+                    invalidate();
+                    if (mCurrentProgress < mTargetProgress) {
+                        sendMessageDelayed(mHandler.obtainMessage(MSG_UPDATE), DELAY);
+                    }
+                }
+            }
+
+        };
     }
 
     @Override
     public void onLayout(boolean f, int l, int t, int r, int b) {
         mBounds.left = 0;
-        mBounds.right = (r - l) * mProgress / mMaxProgress;
+        mBounds.right = (r - l) * mCurrentProgress / MAX_PROGRESS;
         mBounds.top = 0;
         mBounds.bottom = b-t;
     }
 
-    void setMaxProgress(int max) {
-        mMaxProgress = max;
-    }
-
     void setProgress(int progress) {
-        mProgress = progress;
-        mBounds.right = getWidth()*mProgress/mMaxProgress;
-        invalidate();
+        mCurrentProgress = mTargetProgress;
+        mTargetProgress = progress;
+        mIncrement = (mTargetProgress - mCurrentProgress) / STEPS;
+        mHandler.removeMessages(MSG_UPDATE);
+        mHandler.sendEmptyMessage(MSG_UPDATE);
     }
 
     @Override
diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java
index cf0f27c..4c8ab26 100644
--- a/src/com/android/browser/TabBar.java
+++ b/src/com/android/browser/TabBar.java
@@ -250,14 +250,14 @@
         }
 
         @Override
-        public void setSelected(boolean selected) {
+        public void setActivated(boolean selected) {
             mSelected = selected;
             mClose.setVisibility(mSelected ? View.VISIBLE : View.GONE);
             mTitle.setTextAppearance(mBrowserActivity, mSelected ?
                     R.style.TabTitleSelected : R.style.TabTitleUnselected);
             setHorizontalFadingEdgeEnabled(!mSelected);
             setFadingEdgeLength(50);
-            super.setSelected(selected);
+            super.setActivated(selected);
             setLayoutParams(new LayoutParams(selected ?
                     mTabWidthSelected : mTabWidthUnselected,
                     LayoutParams.MATCH_PARENT));
diff --git a/src/com/android/browser/TabScrollView.java b/src/com/android/browser/TabScrollView.java
index b411416..435362d 100644
--- a/src/com/android/browser/TabScrollView.java
+++ b/src/com/android/browser/TabScrollView.java
@@ -80,12 +80,12 @@
     void setSelectedTab(int position) {
         View v = getSelectedTab();
         if (v != null) {
-            v.setSelected(false);
+            v.setActivated(false);
         }
         mSelected = position;
         v = getSelectedTab();
         if (v != null) {
-            v.setSelected(true);
+            v.setActivated(true);
         }
         requestLayout();
     }
@@ -104,12 +104,12 @@
 
     void addTab(View tab) {
         mContentView.addView(tab);
-        tab.setSelected(false);
+        tab.setActivated(false);
     }
 
     void addTab(View tab, int pos) {
         mContentView.addView(tab, pos);
-        tab.setSelected(false);
+        tab.setActivated(false);
     }
 
     void removeTab(View tab) {
diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java
index da39307..b652e15 100644
--- a/src/com/android/browser/TitleBarXLarge.java
+++ b/src/com/android/browser/TitleBarXLarge.java
@@ -57,6 +57,7 @@
     private View mGoButton;
     private ImageView mStopButton;
     private View mAllButton;
+    private View mClearButton;
     private PageProgressView mProgressView;
     private UrlInputView mUrlFocused;
     private TextView mUrlUnfocused;
@@ -88,6 +89,7 @@
         mSearchButton = findViewById(R.id.search);
         mLockIcon = (ImageView) findViewById(R.id.lock);
         mGoButton = findViewById(R.id.go);
+        mClearButton = findViewById(R.id.clear);
         mProgressView = (PageProgressView) findViewById(R.id.progress);
         mFocusContainer = findViewById(R.id.urlbar_focused);
         mUnfocusContainer = findViewById(R.id.urlbar_unfocused);
@@ -99,14 +101,15 @@
         mStopButton.setOnClickListener(this);
         mSearchButton.setOnClickListener(this);
         mGoButton.setOnClickListener(this);
+        mClearButton.setOnClickListener(this);
         mUrlFocused.setUrlInputListener(this);
         mUrlUnfocused.setOnFocusChangeListener(this);
         mUrlFocused.setContainer(mFocusContainer);
     }
-    
+
     public void onFocusChange(View v, boolean hasFocus) {
         if (hasFocus) {
-            swapUrlContainer(true);
+            setUrlMode(true);
             mUrlFocused.selectAll();
             mUrlFocused.requestFocus();
             mUrlFocused.setDropDownWidth(mUnfocusContainer.getWidth());
@@ -132,6 +135,8 @@
             if (!TextUtils.isEmpty(mUrlFocused.getText())) {
                 onAction(mUrlFocused.getText().toString());
             }
+        } else if (mClearButton == v) {
+            mUrlFocused.setText("");
         }
     }
 
@@ -152,7 +157,7 @@
         i.setAction(Intent.ACTION_SEARCH);
         i.putExtra(SearchManager.QUERY, text);
         mBrowserActivity.onNewIntent(i);
-        swapUrlContainer(false);
+        setUrlMode(false);
         setDisplayTitle(text);
     }
 
@@ -160,8 +165,8 @@
     public void onDismiss() {
         mBrowserActivity.getTabControl().getCurrentTopWebView().requestFocus();
         mBrowserActivity.hideFakeTitleBar();
+        setUrlMode(false);
         setDisplayTitle(mBrowserActivity.getTabControl().getCurrentWebView().getUrl());
-        swapUrlContainer(false);
     }
 
     @Override
@@ -172,6 +177,17 @@
         }
     }
 
+    private void setUrlMode(boolean focused) {
+        swapUrlContainer(focused);
+        if (focused) {
+            mSearchButton.setVisibility(View.GONE);
+            mGoButton.setVisibility(View.VISIBLE);
+        } else {
+            mSearchButton.setVisibility(View.VISIBLE);
+            mGoButton.setVisibility(View.GONE);
+        }
+    }
+
     private void swapUrlContainer(boolean focus) {
         mUnfocusContainer.setVisibility(focus ? View.GONE : View.VISIBLE);
         mFocusContainer.setVisibility(focus ? View.VISIBLE : View.GONE);
@@ -203,6 +219,7 @@
     @Override
     void setProgress(int newProgress) {
         if (newProgress >= PROGRESS_MAX) {
+            mProgressView.setProgress(PageProgressView.MAX_PROGRESS);
             mProgressView.setVisibility(View.GONE);
             mInLoad = false;
             mStopButton.setImageDrawable(mReloadDrawable);
@@ -212,7 +229,8 @@
                 mInLoad = true;
                 mStopButton.setImageDrawable(mStopDrawable);
             }
-            mProgressView.setProgress(newProgress*10000/PROGRESS_MAX);
+            mProgressView.setProgress(newProgress * PageProgressView.MAX_PROGRESS
+                    / PROGRESS_MAX);
         }
     }