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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ContextualMenuBar.java

Issue 1292923004: Refactor chrome's action mode logics and namings (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: make webview to compile Created 5 years, 4 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/ContextualMenuBar.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ContextualMenuBar.java b/chrome/android/java/src/org/chromium/chrome/browser/ContextualMenuBar.java
deleted file mode 100644
index eab406d7cb5af4ce816efbbe222a5c7e5297c8ff..0000000000000000000000000000000000000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/ContextualMenuBar.java
+++ /dev/null
@@ -1,197 +0,0 @@
-// 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;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.ObjectAnimator;
-import android.animation.ValueAnimator;
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.support.v7.app.ActionBar;
-import android.util.Property;
-
-import org.chromium.chrome.R;
-
-/**
- * This class handles the animation for the contextual menu bar and adds a custom
- * ActionMode.Callback to the menu bar.
- */
-public class ContextualMenuBar {
-
- private static final int SLIDE_DURATION_MS = 200;
-
- private CustomSelectionActionModeCallback mCustomSelectionActionModeCallback;
- private ObjectAnimator mCurrentAnimation = null;
- private boolean mShowingContextualActionBar = false;
- private float mTabStripHeight;
- private final Context mContext;
- private final ActionBarDelegate mActionBarDelegate;
-
- /** Property for animating the top margin of ActionBarDelegate. */
- public static final Property<ActionBarDelegate, Integer> TOP_MARGIN_ANIM_PROPERTY =
- new Property<ActionBarDelegate, Integer>(Integer.class, "controlTopMargin") {
- @Override
- public Integer get(ActionBarDelegate delegate) {
- return delegate.getControlTopMargin();
- }
- @Override
- public void set(ActionBarDelegate delegate, Integer value) {
- delegate.setControlTopMargin(value);
- }
- };
-
- /**
- * This is an interface for objects that the contextualMenuBar can use for animating the action
- * bar.
- */
- public interface ActionBarDelegate {
-
- /**
- * Sets the top margin of the control container.
- * @param margin The new top margin of the control container.
- */
- public void setControlTopMargin(int margin);
-
- /**
- * @return The top margin of the control container.
- */
- public int getControlTopMargin();
-
- /**
- * @return The action bar that will be animated in and out.
- */
- public ActionBar getSupportActionBar();
-
- /**
- * Change the background visibility for the action bar.
- * @param visible Whether the background should be visible.
- */
- public void setActionBarBackgroundVisibility(boolean visible);
- }
-
- /**
- * Creates the contextual menu bar and ties it to an action bar using the given action bar
- * delegate.
- * @param context The context which the contextual action menu bar should be using for accessing
- * resources.
- * @param actionBarDelegate The delegate for communicating with the action bar while animating
- * it.
- */
- public ContextualMenuBar(Context context, ActionBarDelegate actionBarDelegate) {
- mActionBarDelegate = actionBarDelegate;
- mContext = context;
- mTabStripHeight = mContext.getResources().getDimension(R.dimen.tab_strip_height);
- }
-
- /**
- * Overrides the preset height of the tab strip.
- */
- public void setTabStripHeight(int tabStripHeight) {
- mTabStripHeight = tabStripHeight;
- }
-
- /**
- * @return The delegate handling action bar positioning for the contextual menu bar.
- */
- public ActionBarDelegate getActionBarDelegate() {
- return mActionBarDelegate;
- }
-
- /**
- * Sets the custom ActionMode.Callback
- * @param customSelectionActionModeCallback
- */
- public void setCustomSelectionActionModeCallback(
- CustomSelectionActionModeCallback customSelectionActionModeCallback) {
- if (customSelectionActionModeCallback.equals(mCustomSelectionActionModeCallback)) return;
- mCustomSelectionActionModeCallback = customSelectionActionModeCallback;
- mCustomSelectionActionModeCallback.setContextualMenuBar(this);
- }
-
- /**
- * @return The custom ActionMode.Callback.
- */
- public CustomSelectionActionModeCallback getCustomSelectionActionModeCallback() {
- return mCustomSelectionActionModeCallback;
- }
-
- /**
- * @return The current action bar height.
- */
- private int queryCurrentActionBarHeight() {
- ActionBar actionBar = mActionBarDelegate.getSupportActionBar();
- if (actionBar != null) return actionBar.getHeight();
-
- TypedArray styledAttributes =
- mContext.obtainStyledAttributes(new int[] {R.attr.actionBarSize});
- int height = styledAttributes.getDimensionPixelSize(0, 0);
- styledAttributes.recycle();
- return height;
- }
-
- /**
- * Show controls after orientation change if previously visible.
- */
- public void showControlsOnOrientationChange() {
- if (mShowingContextualActionBar && mCurrentAnimation == null) {
- showControls();
- }
- }
-
- /**
- * Animation for the textview if the action bar is visible.
- */
- public void showControls() {
- if (mCurrentAnimation != null) mCurrentAnimation.cancel();
-
- mCurrentAnimation = ObjectAnimator.ofInt(mActionBarDelegate, TOP_MARGIN_ANIM_PROPERTY,
- (int) (Math.max(0, queryCurrentActionBarHeight() - mTabStripHeight))).setDuration(
- SLIDE_DURATION_MS);
-
- mCurrentAnimation.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- mCurrentAnimation = null;
- }
- });
-
- mCurrentAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- ActionBar actionBar = mActionBarDelegate.getSupportActionBar();
- if (actionBar != null) {
- animation.setIntValues((int) (Math.max(0,
- queryCurrentActionBarHeight() - mTabStripHeight)));
- }
- }
- });
-
- mActionBarDelegate.setActionBarBackgroundVisibility(true);
- mCurrentAnimation.start();
- mShowingContextualActionBar = true;
- }
-
- /**
- * Hide animation for the textview if the action bar is not visible.
- */
- public void hideControls() {
- if (mCurrentAnimation != null) mCurrentAnimation.cancel();
-
- mCurrentAnimation = ObjectAnimator.ofInt(mActionBarDelegate, TOP_MARGIN_ANIM_PROPERTY,
- 0).setDuration(SLIDE_DURATION_MS);
-
- mCurrentAnimation.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- mCurrentAnimation = null;
- mActionBarDelegate.setActionBarBackgroundVisibility(false);
- }
- });
-
- mCurrentAnimation.start();
- mShowingContextualActionBar = false;
- }
-}

Powered by Google App Engine
This is Rietveld 408576698