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

Unified Diff: ui/android/java/src/org/chromium/ui/DropdownAdapter.java

Issue 231953003: Show Ash like <select> popup on Android tablets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@newpopupx
Patch Set: Rebased Created 6 years, 8 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: ui/android/java/src/org/chromium/ui/DropdownAdapter.java
diff --git a/ui/android/java/src/org/chromium/ui/DropdownAdapter.java b/ui/android/java/src/org/chromium/ui/DropdownAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b218b3d48cccbdb308a20c861221fdd0f65e6bf
--- /dev/null
+++ b/ui/android/java/src/org/chromium/ui/DropdownAdapter.java
@@ -0,0 +1,119 @@
+// Copyright 2013 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.ui;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView.LayoutParams;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import org.chromium.base.ApiCompatibilityUtils;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Dropdown item adapter for DropdownPopupWindow.
+ */
+public class DropdownAdapter extends ArrayAdapter<DropdownItem> {
+ private Context mContext;
+ private Set<Integer> mSeparators;
+ private boolean mAreAllItemsEnabled;
+
+ public DropdownAdapter(Context context, List<DropdownItem> items, Set<Integer> separators) {
+ super(context, R.layout.dropdown_item, items);
+ mSeparators = separators;
+ mContext = context;
+ mAreAllItemsEnabled = checkAreAllItemsEnabled();
+ }
+
+ public DropdownAdapter(Context context, DropdownItem[] items, Set<Integer> separators) {
+ super(context, R.layout.dropdown_item, items);
+ mSeparators = separators;
+ mContext = context;
+ mAreAllItemsEnabled = checkAreAllItemsEnabled();
+ }
+
+ private boolean checkAreAllItemsEnabled() {
+ for (int i = 0; i < getCount(); i++) {
+ DropdownItem item = getItem(i);
+ if (item.isEnabled() && !item.isGroupHeader()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View layout = convertView;
+ if (convertView == null) {
+ LayoutInflater inflater =
+ (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ layout = inflater.inflate(R.layout.dropdown_item, null);
+ ApiCompatibilityUtils.setBackgroundForView(layout, new DropdownDividerDrawable());
+ }
+
+ DropdownItem item = getItem(position);
+
+ TextView labelView = (TextView) layout.findViewById(R.id.dropdown_label);
+ labelView.setText(item.getLabel());
+
+ labelView.setEnabled(item.isEnabled());
+ if (item.isGroupHeader()) {
+ labelView.setTypeface(null, Typeface.BOLD);
+ } else {
+ labelView.setTypeface(null, Typeface.NORMAL);
+ }
+
+ DropdownDividerDrawable divider = (DropdownDividerDrawable) layout.getBackground();
+ int height = mContext.getResources().getDimensionPixelSize(R.dimen.dropdown_item_height);
+ if (position == 0) {
+ divider.setColor(Color.TRANSPARENT);
+ } else {
+ int dividerHeight = mContext.getResources().getDimensionPixelSize(
+ R.dimen.dropdown_item_divider_height);
+ height += dividerHeight;
+ divider.setHeight(dividerHeight);
+ if (mSeparators != null && mSeparators.contains(position)) {
+ divider.setColor(mContext.getResources().getColor(
+ R.color.dropdown_dark_divider_color));
+ } else {
+ divider.setColor(mContext.getResources().getColor(
+ R.color.dropdown_divider_color));
+ }
+ }
+ layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, height));
+
+ TextView sublabelView = (TextView) layout.findViewById(R.id.dropdown_sublabel);
+ CharSequence sublabel = item.getSublabel();
+ if (TextUtils.isEmpty(sublabel)) {
+ sublabelView.setVisibility(View.GONE);
+ } else {
+ sublabelView.setText(sublabel);
+ sublabelView.setVisibility(View.VISIBLE);
+ }
+
+ return layout;
+ }
+
+ @Override
+ public boolean areAllItemsEnabled() {
+ return mAreAllItemsEnabled;
+ }
+
+ @Override
+ public boolean isEnabled(int position) {
+ if (position < 0 || position >= getCount()) return false;
+ DropdownItem item = getItem(position);
+ return item.isEnabled() && !item.isGroupHeader();
+ }
+}
« no previous file with comments | « ui/android/java/resource_map/org/chromium/ui/R.java ('k') | ui/android/java/src/org/chromium/ui/DropdownDividerDrawable.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698