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

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: Introduce DropdownPopupWindow 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/autofill/AutofillListAdapter.java b/ui/android/java/src/org/chromium/ui/DropdownAdapter.java
similarity index 58%
rename from ui/android/java/src/org/chromium/ui/autofill/AutofillListAdapter.java
rename to ui/android/java/src/org/chromium/ui/DropdownAdapter.java
index 94608af980270c8b4391044118bf88bb82b2c297..42fb11a76b4d785fb4176d29a667861294f5a48f 100644
--- a/ui/android/java/src/org/chromium/ui/autofill/AutofillListAdapter.java
+++ b/ui/android/java/src/org/chromium/ui/DropdownAdapter.java
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-package org.chromium.ui.autofill;
+package org.chromium.ui;
import android.content.Context;
import android.graphics.Color;
@@ -15,24 +15,30 @@ import android.widget.ArrayAdapter;
import android.widget.TextView;
import org.chromium.base.ApiCompatibilityUtils;
-import org.chromium.ui.R;
-import java.util.ArrayList;
+import java.util.List;
import java.util.Set;
/**
- * Autofill suggestion adapter for AutofillWindow.
+ * Dropdown item adapter for DropdownPopupWindow.
*/
-public class AutofillListAdapter extends ArrayAdapter<AutofillSuggestion> {
+public class DropdownAdapter extends ArrayAdapter<DropdownItem> {
private Context mContext;
private Set<Integer> mSeparators;
+ private boolean mAreAllItemsEnabled;
- AutofillListAdapter(Context context,
- ArrayList<AutofillSuggestion> objects,
- Set<Integer> separators) {
- super(context, R.layout.autofill_text, objects);
+ public DropdownAdapter(Context context, List<DropdownItem> items, Set<Integer> separators) {
+ super(context, R.layout.dropdown_item, items);
mSeparators = separators;
mContext = context;
+
+ mAreAllItemsEnabled = true;
+ for (int i = 0; i < items.size(); i++) {
+ if (items.get(i).isEnabled()) {
+ mAreAllItemsEnabled = false;
+ break;
+ }
+ }
}
@Override
@@ -41,33 +47,36 @@ public class AutofillListAdapter extends ArrayAdapter<AutofillSuggestion> {
if (convertView == null) {
LayoutInflater inflater =
(LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- layout = inflater.inflate(R.layout.autofill_text, null);
- ApiCompatibilityUtils.setBackgroundForView(layout, new AutofillDividerDrawable());
+ layout = inflater.inflate(R.layout.dropdown_item, null);
+ ApiCompatibilityUtils.setBackgroundForView(layout, new DropdownDividerDrawable());
}
- TextView labelView = (TextView) layout.findViewById(R.id.autofill_label);
- labelView.setText(getItem(position).mLabel);
- AutofillDividerDrawable divider = (AutofillDividerDrawable) layout.getBackground();
- int height = mContext.getResources().getDimensionPixelSize(R.dimen.autofill_text_height);
+ DropdownItem item = getItem(position);
+
+ TextView labelView = (TextView) layout.findViewById(R.id.dropdown_label);
+ labelView.setText(item.getLabel());
+
+ 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.autofill_text_divider_height);
+ R.dimen.dropdown_item_divider_height);
height += dividerHeight;
divider.setHeight(dividerHeight);
- if (mSeparators.contains(position)) {
+ if (mSeparators != null && mSeparators.contains(position)) {
divider.setColor(mContext.getResources().getColor(
- R.color.autofill_dark_divider_color));
+ R.color.dropdown_dark_divider_color));
} else {
divider.setColor(mContext.getResources().getColor(
- R.color.autofill_divider_color));
+ R.color.dropdown_divider_color));
}
}
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, height));
- TextView sublabelView = (TextView) layout.findViewById(R.id.autofill_sublabel);
- CharSequence sublabel = getItem(position).mSublabel;
+ TextView sublabelView = (TextView) layout.findViewById(R.id.dropdown_sublabel);
+ CharSequence sublabel = item.getSublabel();
if (TextUtils.isEmpty(sublabel)) {
sublabelView.setVisibility(View.GONE);
} else {
@@ -77,4 +86,15 @@ public class AutofillListAdapter extends ArrayAdapter<AutofillSuggestion> {
return layout;
}
+
+ @Override
+ public boolean areAllItemsEnabled() {
+ return mAreAllItemsEnabled;
+ }
+
+ @Override
+ public boolean isEnabled(int position) {
+ if (position < 0 || position >= getCount()) return false;
+ return getItem(position).isEnabled();
+ }
}

Powered by Google App Engine
This is Rietveld 408576698