| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/widget/findinpage/FindToolbarManager.java
|
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/widget/findinpage/FindToolbarManager.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/widget/findinpage/FindToolbarManager.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b5b94f8ff673dcd460ff581eff091f4adf33df27
|
| --- /dev/null
|
| +++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/widget/findinpage/FindToolbarManager.java
|
| @@ -0,0 +1,102 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.widget.findinpage;
|
| +
|
| +import android.app.Activity;
|
| +import android.view.ActionMode;
|
| +import android.view.View;
|
| +import android.view.ViewStub;
|
| +
|
| +import org.chromium.base.ObserverList;
|
| +import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
| +import org.chromium.ui.base.DeviceFormFactor;
|
| +
|
| +/**
|
| + * Manages the interactions with the find toolbar.
|
| + */
|
| +public class FindToolbarManager {
|
| + private FindToolbar mFindToolbar;
|
| + private final Activity mActivity;
|
| + private final TabModelSelector mTabModelSelector;
|
| + private final ActionMode.Callback mCallback;
|
| + private final ObserverList<FindToolbarObserver> mObservers;
|
| +
|
| + /**
|
| + * Creates an instance of a {@link FindToolbarManager}.
|
| + * @param activity An Activity that represents a parent of the {@link android.view.ViewStub}.
|
| + * @param selector The {@link TabModelSelector} that will interact with the {@link FindToolbar}.
|
| + * @param callback The ActionMode.Callback that will be used when selection occurs on the
|
| + * {@link FindToolbar}.
|
| + */
|
| + public FindToolbarManager(
|
| + Activity activity, TabModelSelector selector, ActionMode.Callback callback) {
|
| + mActivity = activity;
|
| + mTabModelSelector = selector;
|
| + mCallback = callback;
|
| + mObservers = new ObserverList<FindToolbarObserver>();
|
| + }
|
| +
|
| + /**
|
| + * @return Whether the find toolbar is currently showing.
|
| + */
|
| + public boolean isShowing() {
|
| + return mFindToolbar != null && mFindToolbar.getVisibility() == View.VISIBLE;
|
| + }
|
| +
|
| + /**
|
| + * Hides the toolbar.
|
| + */
|
| + public void hideToolbar() {
|
| + if (mFindToolbar == null) return;
|
| +
|
| + mFindToolbar.deactivate();
|
| + }
|
| +
|
| + /**
|
| + * Shows the toolbar if it's not already visible otherwise activates.
|
| + */
|
| + public void showToolbar() {
|
| + if (mFindToolbar == null) {
|
| + int stubId = com.google.android.apps.chrome.R.id.find_toolbar_stub;
|
| + if (DeviceFormFactor.isTablet(mActivity)) {
|
| + stubId = com.google.android.apps.chrome.R.id.find_toolbar_tablet_stub;
|
| + }
|
| + mFindToolbar = (FindToolbar) ((ViewStub) mActivity.findViewById(stubId)).inflate();
|
| + mFindToolbar.setTabModelSelector(mTabModelSelector);
|
| + mFindToolbar.setActionModeCallbackForTextEdit(mCallback);
|
| + mFindToolbar.setObserver(new FindToolbarObserver() {
|
| + @Override
|
| + public void onFindToolbarShown() {
|
| + for (FindToolbarObserver observer : mObservers) {
|
| + observer.onFindToolbarShown();
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public void onFindToolbarHidden() {
|
| + for (FindToolbarObserver observer : mObservers) {
|
| + observer.onFindToolbarHidden();
|
| + }
|
| + }
|
| + });
|
| + }
|
| +
|
| + mFindToolbar.activate();
|
| + }
|
| +
|
| + /**
|
| + * Add an observer for find in page changes.
|
| + */
|
| + public void addObserver(FindToolbarObserver observer) {
|
| + mObservers.addObserver(observer);
|
| + }
|
| +
|
| + /**
|
| + * Remove an observer for find in page changes.
|
| + */
|
| + public void removeObserver(FindToolbarObserver observer) {
|
| + mObservers.removeObserver(observer);
|
| + }
|
| +}
|
|
|