Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(629)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionToolbar.java

Issue 2640333003: [Downloads UI] Implement search (Closed)
Patch Set: Explicitly handle empty downloads query Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionToolbar.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionToolbar.java
deleted file mode 100644
index ae56de8498abd5007a9d1287e2c778c6c4de9bc4..0000000000000000000000000000000000000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionToolbar.java
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright 2016 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.selection;
-
-import android.app.Activity;
-import android.content.Context;
-import android.support.annotation.CallSuper;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.widget.Toolbar;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.View.OnClickListener;
-
-import org.chromium.base.ApiCompatibilityUtils;
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.widget.NumberRollView;
-import org.chromium.chrome.browser.widget.TintedDrawable;
-import org.chromium.chrome.browser.widget.selection.SelectionDelegate.SelectionObserver;
-
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-/**
- * A toolbar that changes its view depending on whether a selection is established. The XML inflated
- * for this class must include number_roll_view.xml.
- *
- * @param <E> The type of the selectable items this toolbar interacts with.
- */
-public class SelectionToolbar<E> extends Toolbar implements SelectionObserver<E>, OnClickListener {
- /** No navigation button is displayed. **/
- protected static final int NAVIGATION_BUTTON_NONE = 0;
- /** Button to open the DrawerLayout. Only valid if mDrawerLayout is set. **/
- protected static final int NAVIGATION_BUTTON_MENU = 1;
- /** Button to navigate back. This calls {@link #onNavigationBack()}. **/
- protected static final int NAVIGATION_BUTTON_BACK = 2;
- /** Button to clear the selection. **/
- protected static final int NAVIGATION_BUTTON_SELECTION_BACK = 3;
-
- protected boolean mIsSelectionEnabled;
- protected SelectionDelegate<E> mSelectionDelegate;
-
- protected NumberRollView mNumberRollView;
- private DrawerLayout mDrawerLayout;
- private ActionBarDrawerToggle mActionBarDrawerToggle;
- private int mNavigationButton;
- private int mTitleResId;
- private int mNormalBackgroundColor;
- protected int mNormalGroupResId;
- protected int mSelectedGroupResId;
-
- /**
- * Constructor for inflating from XML.
- */
- public SelectionToolbar(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- /**
- * Destroys and cleans up itself.
- */
- public void destroy() {
- if (mSelectionDelegate != null) {
- mSelectionDelegate.removeObserver(this);
- }
- }
-
- /**
- * Initializes the SelectionToolbar.
- *
- * @param delegate The SelectionDelegate that will inform the toolbar of selection changes.
- * @param titleResId The resource id of the title string. May be 0 if this class shouldn't set
- * set a title when the selection is cleared.
- * @param drawerLayout The DrawerLayout whose navigation icon is displayed in this toolbar.
- * @param normalGroupResId The resource id of the menu group to show when a selection isn't
- * established.
- * @param selectedGroupResId The resource id of the menu item to show when a selection is
- * established.
- * @param normalBackgroundColorResId The resource id of the color to use as the background color
- * when selection is not enabled. If null the default appbar
- * background color will be used.
- */
- public void initialize(SelectionDelegate<E> delegate, int titleResId,
- @Nullable DrawerLayout drawerLayout, int normalGroupResId, int selectedGroupResId,
- @Nullable Integer normalBackgroundColorResId) {
- mTitleResId = titleResId;
- mDrawerLayout = drawerLayout;
- mNormalGroupResId = normalGroupResId;
- mSelectedGroupResId = selectedGroupResId;
-
- mSelectionDelegate = delegate;
- mSelectionDelegate.addObserver(this);
-
- if (mDrawerLayout != null) initActionBarDrawerToggle();
-
- normalBackgroundColorResId = normalBackgroundColorResId != null ? normalBackgroundColorResId
- : R.color.appbar_background;
- mNormalBackgroundColor =
- ApiCompatibilityUtils.getColor(getResources(), normalBackgroundColorResId);
- setBackgroundColor(mNormalBackgroundColor);
- if (mTitleResId != 0) setTitle(mTitleResId);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- mNumberRollView = (NumberRollView) findViewById(R.id.selection_mode_number);
- mNumberRollView.setContentDescriptionString(R.plurals.accessibility_selected_items);
- }
-
- @Override
- @CallSuper
- public void onSelectionStateChange(List<E> selectedItems) {
- boolean wasSelectionEnabled = mIsSelectionEnabled;
- mIsSelectionEnabled = mSelectionDelegate.isSelectionEnabled();
-
- // If onSelectionStateChange() gets called before onFinishInflate(), mNumberRollView
- // will be uninitialized. See crbug.com/637948.
- if (mNumberRollView == null) {
- mNumberRollView = (NumberRollView) findViewById(R.id.selection_mode_number);
- }
-
- if (mIsSelectionEnabled) {
- // TODO(twellington): add the concept of normal & selected tint to apply to all
- // toolbar buttons.
- setOverflowIcon(TintedDrawable.constructTintedDrawable(getResources(),
- R.drawable.btn_menu, android.R.color.white));
- setNavigationButton(NAVIGATION_BUTTON_SELECTION_BACK);
- setTitle(null);
-
- getMenu().setGroupVisible(mNormalGroupResId, false);
- getMenu().setGroupVisible(mSelectedGroupResId, true);
-
- setBackgroundColor(
- ApiCompatibilityUtils.getColor(getResources(), R.color.light_active_color));
-
- mNumberRollView.setVisibility(View.VISIBLE);
- if (!wasSelectionEnabled) mNumberRollView.setNumber(0, false);
- mNumberRollView.setNumber(selectedItems.size(), true);
- } else {
- setOverflowIcon(TintedDrawable.constructTintedDrawable(getResources(),
- R.drawable.btn_menu));
- getMenu().setGroupVisible(mNormalGroupResId, true);
- getMenu().setGroupVisible(mSelectedGroupResId, false);
- setBackgroundColor(mNormalBackgroundColor);
-
- if (mTitleResId != 0) setTitle(mTitleResId);
- setNavigationButton(NAVIGATION_BUTTON_MENU);
-
- mNumberRollView.setVisibility(View.GONE);
- mNumberRollView.setNumber(0, false);
- }
-
- if (mIsSelectionEnabled && !wasSelectionEnabled) {
- announceForAccessibility(
- getResources().getString(R.string.accessibility_toolbar_screen_position));
- }
- }
-
- @Override
- public void onClick(View view) {
- switch (mNavigationButton) {
- case NAVIGATION_BUTTON_NONE:
- break;
- case NAVIGATION_BUTTON_MENU:
- // ActionBarDrawerToggle handles this.
- break;
- case NAVIGATION_BUTTON_BACK:
- onNavigationBack();
- break;
- case NAVIGATION_BUTTON_SELECTION_BACK:
- mSelectionDelegate.clearSelection();
- break;
- default:
- assert false : "Incorrect navigation button state";
- }
- }
-
- /**
- * Handle a click on the navigation back button. Subclasses should override this method if
- * navigation back is a valid toolbar action.
- */
- protected void onNavigationBack() {}
-
- /**
- * Update the current navigation button (the top-left icon on LTR)
- * @param navigationButton one of NAVIGATION_BUTTON_* constants.
- */
- protected void setNavigationButton(int navigationButton) {
- int iconResId = 0;
- int contentDescriptionId = 0;
-
- if (navigationButton == NAVIGATION_BUTTON_MENU && mDrawerLayout == null) {
- mNavigationButton = NAVIGATION_BUTTON_NONE;
- } else {
- mNavigationButton = navigationButton;
- }
-
- if (mNavigationButton == NAVIGATION_BUTTON_MENU) {
- initActionBarDrawerToggle();
- // ActionBarDrawerToggle will take care of icon and content description, so just return.
- return;
- }
-
- if (mActionBarDrawerToggle != null) {
- mActionBarDrawerToggle.setDrawerIndicatorEnabled(false);
- mDrawerLayout.addDrawerListener(null);
- }
-
- setNavigationOnClickListener(this);
-
- switch (mNavigationButton) {
- case NAVIGATION_BUTTON_NONE:
- break;
- case NAVIGATION_BUTTON_BACK:
- // TODO(twellington): use ic_arrow_back_white_24dp and tint it.
- iconResId = R.drawable.back_normal;
- contentDescriptionId = R.string.accessibility_toolbar_btn_back;
- break;
- case NAVIGATION_BUTTON_SELECTION_BACK:
- // TODO(twellington): use btn_close and tint it.
- iconResId = R.drawable.btn_close_white;
- contentDescriptionId = R.string.accessibility_cancel_selection;
- break;
- default:
- assert false : "Incorrect navigationButton argument";
- }
-
- if (iconResId == 0) {
- setNavigationIcon(null);
- } else {
- setNavigationIcon(iconResId);
- }
- setNavigationContentDescription(contentDescriptionId);
- }
-
- /**
- * Called when the data in the selectable list this toolbar is associated with changes.
- * @param numItems The number of items in the selectable list.
- */
- protected void onDataChanged(int numItems) {}
-
- /**
- * Set up ActionBarDrawerToggle, a.k.a. hamburger button.
- */
- private void initActionBarDrawerToggle() {
- // Sadly, the only way to set correct toolbar button listener for ActionBarDrawerToggle
- // is constructing, so we will need to construct every time we re-show this button.
- mActionBarDrawerToggle = new ActionBarDrawerToggle((Activity) getContext(),
- mDrawerLayout, this,
- R.string.accessibility_drawer_toggle_btn_open,
- R.string.accessibility_drawer_toggle_btn_close);
- mDrawerLayout.addDrawerListener(mActionBarDrawerToggle);
- mActionBarDrawerToggle.syncState();
- }
-}

Powered by Google App Engine
This is Rietveld 408576698