summaryrefslogtreecommitdiffstats
path: root/src/com/android/swe/browser/NavigationBarPhone.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/swe/browser/NavigationBarPhone.java')
-rw-r--r--src/com/android/swe/browser/NavigationBarPhone.java273
1 files changed, 273 insertions, 0 deletions
diff --git a/src/com/android/swe/browser/NavigationBarPhone.java b/src/com/android/swe/browser/NavigationBarPhone.java
new file mode 100644
index 00000000..23176589
--- /dev/null
+++ b/src/com/android/swe/browser/NavigationBarPhone.java
@@ -0,0 +1,273 @@
+/*
+ * 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.app.Activity;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.webkit.WebView;
+import android.widget.ImageView;
+import android.widget.PopupMenu;
+import android.widget.PopupMenu.OnDismissListener;
+import android.widget.PopupMenu.OnMenuItemClickListener;
+
+import com.android.browser.UrlInputView.StateListener;
+
+public class NavigationBarPhone extends NavigationBarBase implements
+ StateListener, OnMenuItemClickListener, OnDismissListener {
+
+ private ImageView mStopButton;
+ private ImageView mMagnify;
+ private ImageView mClearButton;
+ private ImageView mVoiceButton;
+ private Drawable mStopDrawable;
+ private Drawable mRefreshDrawable;
+ private String mStopDescription;
+ private String mRefreshDescription;
+ private View mTabSwitcher;
+ private View mComboIcon;
+ private View mTitleContainer;
+ private View mMore;
+ private Drawable mTextfieldBgDrawable;
+ private PopupMenu mPopupMenu;
+ private boolean mOverflowMenuShowing;
+ private boolean mNeedsMenu;
+ private View mIncognitoIcon;
+
+ public NavigationBarPhone(Context context) {
+ super(context);
+ }
+
+ public NavigationBarPhone(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public NavigationBarPhone(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ mStopButton = (ImageView) findViewById(R.id.stop);
+ mStopButton.setOnClickListener(this);
+ mClearButton = (ImageView) findViewById(R.id.clear);
+ mClearButton.setOnClickListener(this);
+ mVoiceButton = (ImageView) findViewById(R.id.voice);
+ mVoiceButton.setOnClickListener(this);
+ mMagnify = (ImageView) findViewById(R.id.magnify);
+ mTabSwitcher = findViewById(R.id.tab_switcher);
+ mTabSwitcher.setOnClickListener(this);
+ mMore = findViewById(R.id.more);
+ mMore.setOnClickListener(this);
+ mComboIcon = findViewById(R.id.iconcombo);
+ mComboIcon.setOnClickListener(this);
+ mTitleContainer = findViewById(R.id.title_bg);
+ setFocusState(false);
+ Resources res = getContext().getResources();
+ mStopDrawable = res.getDrawable(R.drawable.ic_stop_holo_dark);
+ mRefreshDrawable = res.getDrawable(R.drawable.ic_refresh_holo_dark);
+ mStopDescription = res.getString(R.string.accessibility_button_stop);
+ mRefreshDescription = res.getString(R.string.accessibility_button_refresh);
+ mTextfieldBgDrawable = res.getDrawable(R.drawable.textfield_active_holo_dark);
+ mUrlInput.setContainer(this);
+ mUrlInput.setStateListener(this);
+ mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey();
+ mIncognitoIcon = findViewById(R.id.incognito_icon);
+ }
+
+ @Override
+ public void onProgressStarted() {
+ super.onProgressStarted();
+ if (mStopButton.getDrawable() != mStopDrawable) {
+ mStopButton.setImageDrawable(mStopDrawable);
+ mStopButton.setContentDescription(mStopDescription);
+ if (mStopButton.getVisibility() != View.VISIBLE) {
+ mComboIcon.setVisibility(View.GONE);
+ mStopButton.setVisibility(View.VISIBLE);
+ }
+ }
+ }
+
+ @Override
+ public void onProgressStopped() {
+ super.onProgressStopped();
+ mStopButton.setImageDrawable(mRefreshDrawable);
+ mStopButton.setContentDescription(mRefreshDescription);
+ if (!isEditingUrl()) {
+ mComboIcon.setVisibility(View.VISIBLE);
+ }
+ onStateChanged(mUrlInput.getState());
+ }
+
+ /**
+ * Update the text displayed in the title bar.
+ * @param title String to display. If null, the new tab string will be
+ * shown.
+ */
+ @Override
+ void setDisplayTitle(String title) {
+ mUrlInput.setTag(title);
+ if (!isEditingUrl()) {
+ if (title == null) {
+ mUrlInput.setText(R.string.new_tab);
+ } else {
+ Tab tab = mUiController.getTabControl().getCurrentTab();
+ if (tab != null && tab.getUrl() != null &&
+ tab.getUrl().startsWith("http://218.206.177.209:8080/waptest/browser15")) {
+ //for cmcc test case, display website title for specified cmcc website,
+ //not url address.
+ mUrlInput.setText(tab.getTitle(), false);
+ } else {
+ mUrlInput.setText(UrlUtils.stripUrl(title), false);
+ }
+ }
+ mUrlInput.setSelection(0);
+ }
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v == mStopButton) {
+ if (mTitleBar.isInLoad()) {
+ mUiController.stopLoading();
+ } else {
+ WebView web = mBaseUi.getWebView();
+ if (web != null) {
+ stopEditingUrl();
+ web.reload();
+ }
+ }
+ } else if (v == mTabSwitcher) {
+ ((PhoneUi) mBaseUi).toggleNavScreen();
+ } else if (mMore == v) {
+ showMenu(mMore);
+ } else if (mClearButton == v) {
+ mUrlInput.setText("");
+ } else if (mComboIcon == v) {
+ mUiController.showPageInfo();
+ } else if (mVoiceButton == v) {
+ mUiController.startVoiceRecognizer();
+ } else {
+ super.onClick(v);
+ }
+ }
+
+ @Override
+ public boolean isMenuShowing() {
+ return super.isMenuShowing() || mOverflowMenuShowing;
+ }
+
+ void showMenu(View anchor) {
+ Activity activity = mUiController.getActivity();
+ if (mPopupMenu == null) {
+ mPopupMenu = new PopupMenu(mContext, anchor);
+ mPopupMenu.setOnMenuItemClickListener(this);
+ mPopupMenu.setOnDismissListener(this);
+ if (!activity.onCreateOptionsMenu(mPopupMenu.getMenu())) {
+ mPopupMenu = null;
+ return;
+ }
+ }
+ Menu menu = mPopupMenu.getMenu();
+ if (activity.onPrepareOptionsMenu(menu)) {
+ mOverflowMenuShowing = true;
+ mPopupMenu.show();
+ }
+ }
+
+ @Override
+ public void onDismiss(PopupMenu menu) {
+ if (menu == mPopupMenu) {
+ onMenuHidden();
+ }
+ }
+
+ private void onMenuHidden() {
+ mOverflowMenuShowing = false;
+ mBaseUi.showTitleBarForDuration();
+ }
+
+ @Override
+ public void onFocusChange(View view, boolean hasFocus) {
+ if (view == mUrlInput) {
+ if (hasFocus && !mUrlInput.getText().toString().equals(mUrlInput.getTag())) {
+ // only change text if different
+ mUrlInput.setText((String) mUrlInput.getTag(), false);
+ mUrlInput.selectAll();
+ } else {
+ setDisplayTitle(mUrlInput.getText().toString());
+ }
+ }
+ super.onFocusChange(view, hasFocus);
+ }
+
+ @Override
+ public void onStateChanged(int state) {
+ mVoiceButton.setVisibility(View.GONE);
+ switch(state) {
+ case StateListener.STATE_NORMAL:
+ mComboIcon.setVisibility(View.VISIBLE);
+ mStopButton.setVisibility(View.GONE);
+ mClearButton.setVisibility(View.GONE);
+ mMagnify.setVisibility(View.GONE);
+ mTabSwitcher.setVisibility(View.VISIBLE);
+ mTitleContainer.setBackgroundDrawable(null);
+ mMore.setVisibility(mNeedsMenu ? View.VISIBLE : View.GONE);
+ break;
+ case StateListener.STATE_HIGHLIGHTED:
+ mComboIcon.setVisibility(View.GONE);
+ mStopButton.setVisibility(View.VISIBLE);
+ mClearButton.setVisibility(View.GONE);
+ if ((mUiController != null) && mUiController.supportsVoice()) {
+ mVoiceButton.setVisibility(View.VISIBLE);
+ }
+ mMagnify.setVisibility(View.GONE);
+ mTabSwitcher.setVisibility(View.GONE);
+ mMore.setVisibility(View.GONE);
+ mTitleContainer.setBackgroundDrawable(mTextfieldBgDrawable);
+ break;
+ case StateListener.STATE_EDITED:
+ mComboIcon.setVisibility(View.GONE);
+ mStopButton.setVisibility(View.GONE);
+ mClearButton.setVisibility(View.VISIBLE);
+ mMagnify.setVisibility(View.VISIBLE);
+ mTabSwitcher.setVisibility(View.GONE);
+ mMore.setVisibility(View.GONE);
+ mTitleContainer.setBackgroundDrawable(mTextfieldBgDrawable);
+ break;
+ }
+ }
+
+ @Override
+ public void onTabDataChanged(Tab tab) {
+ super.onTabDataChanged(tab);
+ mIncognitoIcon.setVisibility(tab.isPrivateBrowsingEnabled()
+ ? View.VISIBLE : View.GONE);
+ }
+
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ return mUiController.onOptionsItemSelected(item);
+ }
+
+}