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

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

Issue 2751333006: Create the base Custom Context Menu Dialog. (Closed)
Patch Set: Fixed based off tedchoc's comments 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/TabularContextMenuListAdapter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/TabularContextMenuListAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/TabularContextMenuListAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..80894d34dbc3785be33d3195becc982dcec2a481
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/TabularContextMenuListAdapter.java
@@ -0,0 +1,93 @@
+// 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.graphics.drawable.Drawable;
+import android.util.Pair;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import org.chromium.chrome.R;
+
+import java.util.List;
+
+/**
+ * Takes a list of {@link ContextMenuItem} and puts them in an adapter meant to be used within a
+ * list view.
+ */
+class TabularContextMenuListAdapter extends BaseAdapter {
+ private final List<ContextMenuItem> mMenuItems;
+ private final Activity mActivity;
+
+ /**
+ * Adapter for the tabular context menu UI
+ * @param menuItems The list of items to display in the view.
+ * @param activity Used to inflate the layout.
+ */
+ TabularContextMenuListAdapter(List<ContextMenuItem> menuItems, Activity activity) {
+ mMenuItems = menuItems;
+ mActivity = activity;
+ }
+
+ @Override
+ public int getCount() {
+ return mMenuItems.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mMenuItems.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return mMenuItems.get(position).menuId;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ContextMenuItem menuItem = mMenuItems.get(position);
+ ViewHolderItem viewHolder;
+
+ if (convertView == null) {
+ LayoutInflater inflater = LayoutInflater.from(mActivity);
+ convertView = inflater.inflate(R.layout.tabular_context_menu_row, null);
+
+ viewHolder = new ViewHolderItem();
+ viewHolder.mIcon = (ImageView) convertView.findViewById(R.id.context_menu_icon);
+ viewHolder.mText = (TextView) convertView.findViewById(R.id.context_text);
+ viewHolder.mShareIcon =
+ (ImageView) convertView.findViewById(R.id.context_menu_share_icon);
+
+ convertView.setTag(viewHolder);
+ } else {
+ viewHolder = (ViewHolderItem) convertView.getTag();
+ }
+
+ viewHolder.mText.setText(menuItem.getString(mActivity));
+ Pair<Drawable, String> iconPair = menuItem.getDrawableAndDescription(mActivity);
+ viewHolder.mIcon.setImageDrawable(iconPair.first);
+ if (iconPair.first != null) {
+ viewHolder.mIcon.setVisibility(View.VISIBLE);
+ viewHolder.mIcon.setContentDescription(iconPair.second);
+ } else {
+ viewHolder.mIcon.setVisibility(View.INVISIBLE);
+ viewHolder.mIcon.setContentDescription(null);
+ }
+
+ return convertView;
+ }
+
+ private static class ViewHolderItem {
+ ImageView mIcon;
+ TextView mText;
+ ImageView mShareIcon;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698