| 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 |