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

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

Issue 2747453002: Split context menu display and population/handling (Closed)
Patch Set: Created 3 years, 9 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/contextmenu/SimpleContextMenuUi.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/SimpleContextMenuUi.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/SimpleContextMenuUi.java
new file mode 100644
index 0000000000000000000000000000000000000000..efe65c28708b34bd062974d61cf76194e06dd5c8
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/SimpleContextMenuUi.java
@@ -0,0 +1,62 @@
+// Copyright 2017 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.contextmenu;
+
+import android.app.Activity;
+import android.content.Context;
+import android.util.Pair;
+import android.view.ContextMenu;
+import android.view.MenuItem;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A context menu that displays the Android Standard Context Menu. Comes the Item Groups into one
+ * list displayed in the order received.
+ */
+public class SimpleContextMenuUi implements ContextMenuUi {
Ted C 2017/03/11 00:31:14 as mentioned offline, I think PlatformContextMenuU
JJ 2017/03/13 20:24:29 Done.
+ private ContextMenu mMenu;
+ private OnMenuClickedListener mMenuClickedListener;
+
+ SimpleContextMenuUi(ContextMenu menu, OnMenuClickedListener listener) {
+ mMenu = menu;
+ mMenuClickedListener = listener;
+ }
+
+ @Override
+ public void displayMenu(Activity activity, ContextMenuParams params,
+ List<Pair<Integer, List<ContextMenuItems>>> itemGroups) {
+ setHeaderText(activity, mMenu, ChromeContextMenuPopulator.createHeaderText(params));
+
+ if (params.isFile()) return;
Ted C 2017/03/11 00:31:14 yeah, since this is in two places, moving it to th
JJ 2017/03/13 23:39:32 Done.
+
+ List<ContextMenuItems> items = new ArrayList<>();
Ted C 2017/03/11 00:31:14 I wouldn't create this intermediate list. Just ha
JJ 2017/03/13 20:24:29 nested loops it is!
+ for (Pair<Integer, List<ContextMenuItems>> group : itemGroups) {
Ted C 2017/03/11 00:31:14 same thing about using the for (int i = 0; i <...)
JJ 2017/03/13 20:24:29 Done.
+ items.addAll(group.second);
+ }
+ for (ContextMenuItems item : items) {
+ mMenu.add(0, item.menuId, 0, item.getString(activity));
+ }
+
+ for (int i = 0; i < mMenu.size(); i++) {
Ted C 2017/03/11 00:31:14 can this just be part of the loop above?
JJ 2017/03/13 20:24:29 Done.
+ MenuItem menuItem = mMenu.getItem(i);
+ if (menuItem.isVisible()) {
Ted C 2017/03/11 00:31:14 they're all going to be visible at this point righ
JJ 2017/03/13 20:24:29 Yup
+ menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem menuItem) {
+ mMenuClickedListener.onItemClicked(menuItem.getItemId());
+ return true;
+ }
+ });
+ }
+ }
+ }
+
+ private void setHeaderText(Context context, ContextMenu menu, String text) {
+ ContextMenuTitleView title = new ContextMenuTitleView(context, text);
+ menu.setHeaderView(title);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698