long axis scrolling for nav screen
also:
fix combo view navscreen overlap
fix menu key handling
adjust screenshot capture size
Change-Id: Ia0c920ed40e7d97d5902d98b85830817b9de6506
diff --git a/src/com/android/browser/NavTabView.java b/src/com/android/browser/NavTabView.java
new file mode 100644
index 0000000..14453dc
--- /dev/null
+++ b/src/com/android/browser/NavTabView.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * 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 com.android.browser;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+public class NavTabView extends LinearLayout {
+
+ Tab mTab;
+ BrowserWebView mWebView;
+ ImageButton mForward;
+ ImageButton mRefresh;
+ ImageView mFavicon;
+ ImageButton mClose;
+ FrameLayout mContainer;
+ TextView mTitle;
+ View mTitleBar;
+ OnClickListener mClickListener;
+ boolean mHighlighted;
+ Drawable mTitleBg;
+
+ public NavTabView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ init();
+ }
+
+ public NavTabView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public NavTabView(Context context) {
+ super(context);
+ init();
+ }
+
+ private void init() {
+ LayoutInflater.from(mContext).inflate(R.layout.nav_tab_view,
+ this);
+ mContainer = (FrameLayout) findViewById(R.id.tab_view);
+ mForward = (ImageButton) findViewById(R.id.forward);
+ mClose = (ImageButton) findViewById(R.id.closetab);
+ mRefresh = (ImageButton) findViewById(R.id.refresh);
+ mTitle = (TextView) findViewById(R.id.title);
+ mFavicon = (ImageView) findViewById(R.id.favicon);
+ mTitleBar = findViewById(R.id.titlebar);
+ mTitleBg = mContext.getResources().getDrawable(R.drawable.bg_urlbar);
+ setState(false);
+ // refresh titlebar
+ }
+
+ protected boolean isRefresh(View v) {
+ return v == mRefresh;
+ }
+
+ protected boolean isClose(View v) {
+ return v == mClose;
+ }
+
+ protected boolean isTitle(View v) {
+ return v == mTitleBar;
+ }
+
+ protected boolean isForward(View v) {
+ return v == mForward;
+ }
+
+ protected boolean isWebView(View v) {
+ return v == mWebView;
+ }
+
+ protected void setHighlighted(boolean highlighted) {
+ if (highlighted == mHighlighted) return;
+ mHighlighted = highlighted;
+ setState(highlighted);
+ }
+
+ private void setState(boolean highlighted) {
+ if (highlighted) {
+ setAlpha(1.0f);
+ mRefresh.setVisibility(View.VISIBLE);
+ mFavicon.setVisibility(View.VISIBLE);
+ mForward.setVisibility(mWebView.canGoForward()
+ ? View.VISIBLE : View.GONE);
+ mTitleBar.setBackgroundDrawable(mTitleBg);
+ mClose.setVisibility(View.VISIBLE);
+ } else {
+ setAlpha(0.8f);
+ mForward.setVisibility(View.GONE);
+ mRefresh.setVisibility(View.INVISIBLE);
+ mFavicon.setVisibility(View.INVISIBLE);
+ mClose.setVisibility(View.GONE);
+ mTitleBar.setBackgroundDrawable(null);
+ }
+ setTitle();
+ }
+
+ private void setTitle() {
+ if (mTab == null) return;
+ if (mHighlighted) {
+ mTitle.setText(mTab.getUrl());
+ } else {
+ String txt = mTab.getTitle();
+ if (txt == null) txt = mTab.getUrl();
+ mTitle.setText(txt);
+ }
+ }
+
+ protected boolean isHighlighted() {
+ return mHighlighted;
+ }
+
+ protected void setWebView(PhoneUi ui, Tab tab) {
+ mTab = tab;
+ BrowserWebView web = (BrowserWebView) tab.getWebView();
+ if (web == null) return;
+ mWebView = web;
+ removeFromParent(mWebView);
+ mWebView.setNavMode(true);
+ mContainer.addView(mWebView, 0);
+ if (mWebView != null) {
+ mForward.setVisibility(mWebView.canGoForward()
+ ? View.VISIBLE : View.GONE);
+ }
+ mFavicon.setImageDrawable(ui.getFaviconDrawable(tab.getFavicon()));
+ setTitle();
+ }
+
+ protected void hideTitle() {
+ mTitleBar.setVisibility(View.INVISIBLE);
+ }
+
+ @Override
+ public void setOnClickListener(OnClickListener listener) {
+ mClickListener = listener;
+ mTitleBar.setOnClickListener(mClickListener);
+ mRefresh.setOnClickListener(mClickListener);
+ mForward.setOnClickListener(mClickListener);
+ mClose.setOnClickListener(mClickListener);
+ if (mWebView != null) {
+ mWebView.setOnClickListener(mClickListener);
+ }
+ }
+
+ private static void removeFromParent(View v) {
+ if (v.getParent() != null) {
+ ((ViewGroup) v.getParent()).removeView(v);
+ }
+ }
+
+}