OLD | NEW |
(Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 package org.chromium.chrome.browser.widget.findinpage; |
| 6 |
| 7 import android.app.Activity; |
| 8 import android.view.ActionMode; |
| 9 import android.view.View; |
| 10 import android.view.ViewStub; |
| 11 |
| 12 import org.chromium.base.ObserverList; |
| 13 import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
| 14 import org.chromium.ui.base.DeviceFormFactor; |
| 15 |
| 16 /** |
| 17 * Manages the interactions with the find toolbar. |
| 18 */ |
| 19 public class FindToolbarManager { |
| 20 private FindToolbar mFindToolbar; |
| 21 private final Activity mActivity; |
| 22 private final TabModelSelector mTabModelSelector; |
| 23 private final ActionMode.Callback mCallback; |
| 24 private final ObserverList<FindToolbarObserver> mObservers; |
| 25 |
| 26 /** |
| 27 * Creates an instance of a {@link FindToolbarManager}. |
| 28 * @param activity An Activity that represents a parent of the {@link androi
d.view.ViewStub}. |
| 29 * @param selector The {@link TabModelSelector} that will interact with the
{@link FindToolbar}. |
| 30 * @param callback The ActionMode.Callback that will be used when selection
occurs on the |
| 31 * {@link FindToolbar}. |
| 32 */ |
| 33 public FindToolbarManager( |
| 34 Activity activity, TabModelSelector selector, ActionMode.Callback ca
llback) { |
| 35 mActivity = activity; |
| 36 mTabModelSelector = selector; |
| 37 mCallback = callback; |
| 38 mObservers = new ObserverList<FindToolbarObserver>(); |
| 39 } |
| 40 |
| 41 /** |
| 42 * @return Whether the find toolbar is currently showing. |
| 43 */ |
| 44 public boolean isShowing() { |
| 45 return mFindToolbar != null && mFindToolbar.getVisibility() == View.VISI
BLE; |
| 46 } |
| 47 |
| 48 /** |
| 49 * Hides the toolbar. |
| 50 */ |
| 51 public void hideToolbar() { |
| 52 if (mFindToolbar == null) return; |
| 53 |
| 54 mFindToolbar.deactivate(); |
| 55 } |
| 56 |
| 57 /** |
| 58 * Shows the toolbar if it's not already visible otherwise activates. |
| 59 */ |
| 60 public void showToolbar() { |
| 61 if (mFindToolbar == null) { |
| 62 int stubId = com.google.android.apps.chrome.R.id.find_toolbar_stub; |
| 63 if (DeviceFormFactor.isTablet(mActivity)) { |
| 64 stubId = com.google.android.apps.chrome.R.id.find_toolbar_tablet
_stub; |
| 65 } |
| 66 mFindToolbar = (FindToolbar) ((ViewStub) mActivity.findViewById(stub
Id)).inflate(); |
| 67 mFindToolbar.setTabModelSelector(mTabModelSelector); |
| 68 mFindToolbar.setActionModeCallbackForTextEdit(mCallback); |
| 69 mFindToolbar.setObserver(new FindToolbarObserver() { |
| 70 @Override |
| 71 public void onFindToolbarShown() { |
| 72 for (FindToolbarObserver observer : mObservers) { |
| 73 observer.onFindToolbarShown(); |
| 74 } |
| 75 } |
| 76 |
| 77 @Override |
| 78 public void onFindToolbarHidden() { |
| 79 for (FindToolbarObserver observer : mObservers) { |
| 80 observer.onFindToolbarHidden(); |
| 81 } |
| 82 } |
| 83 }); |
| 84 } |
| 85 |
| 86 mFindToolbar.activate(); |
| 87 } |
| 88 |
| 89 /** |
| 90 * Add an observer for find in page changes. |
| 91 */ |
| 92 public void addObserver(FindToolbarObserver observer) { |
| 93 mObservers.addObserver(observer); |
| 94 } |
| 95 |
| 96 /** |
| 97 * Remove an observer for find in page changes. |
| 98 */ |
| 99 public void removeObserver(FindToolbarObserver observer) { |
| 100 mObservers.removeObserver(observer); |
| 101 } |
| 102 } |
OLD | NEW |