blob: e00dca55b9852348ac5890c7c7b1e1f1624fe431 [file] [log] [blame]
package com.xtremelabs.robolectric.shadows;
import android.widget.Checkable;
import android.widget.CompoundButton;
import com.xtremelabs.robolectric.internal.Implementation;
import com.xtremelabs.robolectric.internal.Implements;
/**
* Shadows the {@code android.widget.CompoundButton} class.
* <p/>
* Keeps track of whether or not its "checked" state is set and deals with listeners in an appropriate way.
*/
@SuppressWarnings({"UnusedDeclaration"})
@Implements(CompoundButton.class)
public class ShadowCompoundButton extends ShadowTextView implements Checkable {
private boolean checked;
private CompoundButton.OnCheckedChangeListener onCheckedChangeListener;
@Override public void applyAttributes() {
super.applyAttributes();
setChecked(this.attributeSet.getAttributeBooleanValue("android", "checked", false));
}
@Implementation
@Override public void toggle() {
setChecked(!checked);
}
@Implementation
@Override public boolean performClick() {
toggle();
return super.performClick();
}
@Implementation
@Override public boolean isChecked() {
return checked;
}
@Implementation
@Override public void setChecked(boolean checked) {
if (this.checked != checked) {
this.checked = checked;
if (onCheckedChangeListener != null) {
onCheckedChangeListener.onCheckedChanged((CompoundButton) realView, this.checked);
}
}
}
@Implementation
public void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener) {
onCheckedChangeListener = listener;
}
public CompoundButton.OnCheckedChangeListener getOnCheckedChangeListener() {
return onCheckedChangeListener;
}
}