| Index: chrome/android/java/src/org/chromium/chrome/browser/widget/RadioButtonWithDescription.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/RadioButtonWithDescription.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/RadioButtonWithDescription.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c51f15dc2d579f596118d999404bf9ab8e70d396
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/RadioButtonWithDescription.java
|
| @@ -0,0 +1,107 @@
|
| +// Copyright 2016 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.widget;
|
| +
|
| +import android.content.Context;
|
| +import android.content.res.TypedArray;
|
| +import android.util.AttributeSet;
|
| +import android.view.LayoutInflater;
|
| +import android.view.View;
|
| +import android.view.View.OnClickListener;
|
| +import android.widget.RadioButton;
|
| +import android.widget.RelativeLayout;
|
| +import android.widget.TextView;
|
| +
|
| +import org.chromium.chrome.R;
|
| +
|
| +import java.util.List;
|
| +
|
| +/**
|
| + * A RadioButton with a title and descriptive text to the right.
|
| + */
|
| +public class RadioButtonWithDescription extends RelativeLayout implements OnClickListener {
|
| + private RadioButton mRadioButton;
|
| + private TextView mTitle;
|
| + private TextView mDescription;
|
| +
|
| + private List<RadioButtonWithDescription> mGroup;
|
| +
|
| + /**
|
| + * Constructor for inflating via XML.
|
| + */
|
| + public RadioButtonWithDescription(Context context, AttributeSet attrs) {
|
| + super(context, attrs);
|
| + LayoutInflater.from(context).inflate(R.layout.radio_button_with_description, this, true);
|
| +
|
| + mRadioButton = (RadioButton) findViewById(R.id.radio_button);
|
| + mTitle = (TextView) findViewById(R.id.title);
|
| + mDescription = (TextView) findViewById(R.id.description);
|
| +
|
| + if (attrs != null) applyAttributes(attrs);
|
| +
|
| + // We want RadioButtonWithDescription to handle the clicks itself.
|
| + mRadioButton.setClickable(false);
|
| + setOnClickListener(this);
|
| + }
|
| +
|
| + private void applyAttributes(AttributeSet attrs) {
|
| + TypedArray a = getContext().getTheme().obtainStyledAttributes(attrs,
|
| + R.styleable.RadioButtonWithDescription, 0, 0);
|
| +
|
| + String titleText = a.getString(R.styleable.RadioButtonWithDescription_titleText);
|
| + if (titleText != null) mTitle.setText(titleText);
|
| +
|
| + a.recycle();
|
| + }
|
| +
|
| + @Override
|
| + public void onClick(View v) {
|
| + if (mGroup != null) {
|
| + for (RadioButtonWithDescription button : mGroup) {
|
| + button.setChecked(false);
|
| + }
|
| + }
|
| +
|
| + setChecked(true);
|
| + }
|
| +
|
| + /**
|
| + * Sets the text shown in the title section.
|
| + */
|
| + public void setTitleText(CharSequence text) {
|
| + mTitle.setText(text);
|
| + }
|
| +
|
| + /**
|
| + * Sets the text shown in the description section.
|
| + */
|
| + public void setDescriptionText(CharSequence text) {
|
| + mDescription.setText(text);
|
| + }
|
| +
|
| + /**
|
| + * Returns true if checked.
|
| + */
|
| + public boolean isChecked() {
|
| + return mRadioButton.isChecked();
|
| + }
|
| +
|
| + /**
|
| + * Sets the checked status.
|
| + */
|
| + public void setChecked(boolean checked) {
|
| + mRadioButton.setChecked(checked);
|
| + }
|
| +
|
| + /**
|
| + * Sets the group of RadioButtonWithDescriptions that should be unchecked when this button is
|
| + * checked.
|
| + * @param group A list containing all elements of the group.
|
| + */
|
| + public void setRadioButtonGroup(List<RadioButtonWithDescription> group) {
|
| + mGroup = group;
|
| + }
|
| +}
|
| +
|
|
|