| Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/SpinnerPreference.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SpinnerPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SpinnerPreference.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b7c43b305650ccf2e580d4b907faa8cef6c19ffe
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SpinnerPreference.java
|
| @@ -0,0 +1,75 @@
|
| +// Copyright 2014 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.preferences;
|
| +
|
| +import android.content.Context;
|
| +import android.preference.Preference;
|
| +import android.util.AttributeSet;
|
| +import android.view.View;
|
| +import android.widget.AdapterView;
|
| +import android.widget.ArrayAdapter;
|
| +import android.widget.Spinner;
|
| +import android.widget.TextView;
|
| +
|
| +import org.chromium.chrome.R;
|
| +
|
| +/**
|
| + * A preference that takes value from a specified list of objects, presented as a dropdown.
|
| + */
|
| +public class SpinnerPreference extends Preference {
|
| + private Spinner mSpinner;
|
| + private ArrayAdapter<Object> mAdapter;
|
| + private int mInitialIndex;
|
| +
|
| + /**
|
| + * Constructor for inflating from XML.
|
| + */
|
| + public SpinnerPreference(Context context, AttributeSet attrs) {
|
| + super(context, attrs);
|
| + setLayoutResource(R.layout.preference_spinner);
|
| + }
|
| +
|
| + public void setOptions(Object[] options, int initialIndex) {
|
| + mAdapter = new ArrayAdapter<Object>(
|
| + getContext(), android.R.layout.simple_spinner_item, options);
|
| + mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
| + mInitialIndex = initialIndex;
|
| + }
|
| +
|
| + public Object getSelectedOption() {
|
| + if (mSpinner == null) return null;
|
| + return mSpinner.getSelectedItem();
|
| + }
|
| +
|
| + @Override
|
| + protected void onBindView(View view) {
|
| + super.onBindView(view);
|
| +
|
| + ((TextView) view.findViewById(R.id.title)).setText(this.getTitle());
|
| +
|
| + mSpinner = (Spinner) view.findViewById(R.id.spinner);
|
| + mSpinner.setAdapter(mAdapter);
|
| + mSpinner.setSelection(mInitialIndex);
|
| +
|
| + mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
| + @Override
|
| + public void onItemSelected(
|
| + AdapterView<?> parent, View view, int position, long id) {
|
| + if (getOnPreferenceChangeListener() != null) {
|
| + getOnPreferenceChangeListener().onPreferenceChange(
|
| + SpinnerPreference.this, getSelectedOption());
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public void onNothingSelected(AdapterView<?> parent) {
|
| + if (getOnPreferenceChangeListener() != null) {
|
| + getOnPreferenceChangeListener().onPreferenceChange(
|
| + SpinnerPreference.this, null);
|
| + }
|
| + }
|
| + });
|
| + }
|
| +}
|
|
|