OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.payments.ui; | 5 package org.chromium.chrome.browser.payments.ui; |
6 | 6 |
7 import android.annotation.SuppressLint; | 7 import android.annotation.SuppressLint; |
8 import android.content.Context; | 8 import android.content.Context; |
9 import android.view.LayoutInflater; | 9 import android.view.LayoutInflater; |
10 import android.view.MotionEvent; | 10 import android.view.MotionEvent; |
11 import android.view.View; | 11 import android.view.View; |
12 import android.view.ViewGroup; | 12 import android.view.ViewGroup; |
13 import android.view.accessibility.AccessibilityEvent; | 13 import android.view.accessibility.AccessibilityEvent; |
14 import android.widget.AdapterView; | 14 import android.widget.AdapterView; |
15 import android.widget.AdapterView.OnItemSelectedListener; | 15 import android.widget.AdapterView.OnItemSelectedListener; |
16 import android.widget.ArrayAdapter; | 16 import android.widget.ArrayAdapter; |
17 import android.widget.Spinner; | 17 import android.widget.Spinner; |
18 import android.widget.TextView; | 18 import android.widget.TextView; |
19 | 19 |
20 import org.chromium.chrome.R; | 20 import org.chromium.chrome.R; |
| 21 import org.chromium.chrome.browser.payments.ui.PaymentRequestUI.PaymentRequestOb
serverForTest; |
21 import org.chromium.chrome.browser.preferences.autofill.AutofillProfileBridge.Dr
opdownKeyValue; | 22 import org.chromium.chrome.browser.preferences.autofill.AutofillProfileBridge.Dr
opdownKeyValue; |
22 import org.chromium.ui.UiUtils; | 23 import org.chromium.ui.UiUtils; |
23 | 24 |
24 import java.util.ArrayList; | 25 import java.util.ArrayList; |
25 import java.util.List; | 26 import java.util.List; |
26 | 27 |
| 28 import javax.annotation.Nullable; |
| 29 |
27 /** | 30 /** |
28 * Helper class for creating a dropdown view with a label. | 31 * Helper class for creating a dropdown view with a label. |
29 */ | 32 */ |
30 class EditorDropdownField implements EditorFieldView { | 33 class EditorDropdownField implements EditorFieldView { |
31 private final EditorFieldModel mFieldModel; | 34 private final EditorFieldModel mFieldModel; |
32 private final View mLayout; | 35 private final View mLayout; |
33 private final TextView mLabel; | 36 private final TextView mLabel; |
34 private final Spinner mDropdown; | 37 private final Spinner mDropdown; |
35 private int mSelectedIndex; | 38 private int mSelectedIndex; |
| 39 @Nullable |
| 40 private PaymentRequestObserverForTest mObserverForTest; |
36 | 41 |
37 /** | 42 /** |
38 * Builds a dropdown view. | 43 * Builds a dropdown view. |
39 * | 44 * |
40 * @param context The application context to use when creating widge
ts. | 45 * @param context The application context to use when creating widge
ts. |
41 * @param root The object that provides a set of LayoutParams val
ues for the view. | 46 * @param root The object that provides a set of LayoutParams val
ues for the view. |
42 * @param fieldModel The data model of the dropdown. | 47 * @param fieldModel The data model of the dropdown. |
43 * @param changedCallback The callback to invoke after user's dropdwn item s
election has been | 48 * @param changedCallback The callback to invoke after user's dropdwn item s
election has been |
44 * processed. | 49 * processed. |
45 */ | 50 */ |
46 public EditorDropdownField(Context context, ViewGroup root, final EditorFiel
dModel fieldModel, | 51 public EditorDropdownField(Context context, ViewGroup root, final EditorFiel
dModel fieldModel, |
47 final Runnable changedCallback) { | 52 final Runnable changedCallback, @Nullable PaymentRequestObserverForT
est observer) { |
48 assert fieldModel.getInputTypeHint() == EditorFieldModel.INPUT_TYPE_HINT
_DROPDOWN; | 53 assert fieldModel.getInputTypeHint() == EditorFieldModel.INPUT_TYPE_HINT
_DROPDOWN; |
49 mFieldModel = fieldModel; | 54 mFieldModel = fieldModel; |
| 55 mObserverForTest = observer; |
50 | 56 |
51 mLayout = LayoutInflater.from(context).inflate( | 57 mLayout = LayoutInflater.from(context).inflate( |
52 R.layout.payment_request_editor_dropdown, root, false); | 58 R.layout.payment_request_editor_dropdown, root, false); |
53 | 59 |
54 mLabel = (TextView) mLayout.findViewById(R.id.spinner_label); | 60 mLabel = (TextView) mLayout.findViewById(R.id.spinner_label); |
55 mLabel.setText(mFieldModel.isRequired() | 61 mLabel.setText(mFieldModel.isRequired() |
56 ? mFieldModel.getLabel() + EditorView.REQUIRED_FIELD_INDICATOR | 62 ? mFieldModel.getLabel() + EditorView.REQUIRED_FIELD_INDICATOR |
57 : mFieldModel.getLabel()); | 63 : mFieldModel.getLabel()); |
58 | 64 |
59 final List<DropdownKeyValue> dropdownKeyValues = mFieldModel.getDropdown
KeyValues(); | 65 final List<DropdownKeyValue> dropdownKeyValues = mFieldModel.getDropdown
KeyValues(); |
(...skipping 30 matching lines...) Expand all Loading... |
90 mDropdown.setSelection(mSelectedIndex); | 96 mDropdown.setSelection(mSelectedIndex); |
91 mDropdown.setOnItemSelectedListener(new OnItemSelectedListener() { | 97 mDropdown.setOnItemSelectedListener(new OnItemSelectedListener() { |
92 @Override | 98 @Override |
93 public void onItemSelected(AdapterView<?> parent, View view, int pos
ition, long id) { | 99 public void onItemSelected(AdapterView<?> parent, View view, int pos
ition, long id) { |
94 if (mSelectedIndex != position) { | 100 if (mSelectedIndex != position) { |
95 mSelectedIndex = position; | 101 mSelectedIndex = position; |
96 mFieldModel.setDropdownKey( | 102 mFieldModel.setDropdownKey( |
97 mFieldModel.getDropdownKeyValues().get(position).get
Key(), | 103 mFieldModel.getDropdownKeyValues().get(position).get
Key(), |
98 changedCallback); | 104 changedCallback); |
99 } | 105 } |
| 106 if (mObserverForTest != null) { |
| 107 mObserverForTest.onPaymentRequestEditorTextUpdate(); |
| 108 } |
100 } | 109 } |
101 | 110 |
102 @Override | 111 @Override |
103 public void onNothingSelected(AdapterView<?> parent) {} | 112 public void onNothingSelected(AdapterView<?> parent) {} |
104 }); | 113 }); |
105 mDropdown.setOnTouchListener(new View.OnTouchListener() { | 114 mDropdown.setOnTouchListener(new View.OnTouchListener() { |
106 @SuppressLint("ClickableViewAccessibility") | 115 @SuppressLint("ClickableViewAccessibility") |
107 @Override | 116 @Override |
108 public boolean onTouch(View v, MotionEvent event) { | 117 public boolean onTouch(View v, MotionEvent event) { |
109 if (event.getAction() == MotionEvent.ACTION_DOWN) requestFocusAn
dHideKeyboard(); | 118 if (event.getAction() == MotionEvent.ACTION_DOWN) requestFocusAn
dHideKeyboard(); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 } | 190 } |
182 | 191 |
183 private static int getDropdownIndex( | 192 private static int getDropdownIndex( |
184 List<DropdownKeyValue> dropdownKeyValues, CharSequence value) { | 193 List<DropdownKeyValue> dropdownKeyValues, CharSequence value) { |
185 for (int i = 0; i < dropdownKeyValues.size(); i++) { | 194 for (int i = 0; i < dropdownKeyValues.size(); i++) { |
186 if (dropdownKeyValues.get(i).getKey().equals(value)) return i; | 195 if (dropdownKeyValues.get(i).getKey().equals(value)) return i; |
187 } | 196 } |
188 return 0; | 197 return 0; |
189 } | 198 } |
190 } | 199 } |
OLD | NEW |