package gueei.binding.viewAttributes.compoundButton;
import gueei.binding.Binder;
import gueei.binding.ViewAttribute;
import gueei.binding.listeners.OnCheckedChangeListenerMulticast;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
/**
* Checked state of Compound Buttons including Check box
*
* @name checked
* @widget CompoundButton
* @type Boolean
*
* @accepts Boolean
* @accepts Integer 0: false other: true
*
* @category simple
* @related http://developer.android.com/reference/android/widget/CompoundButton.html
*
* @author andy
*/
public class CheckedViewAttribute extends ViewAttribute<CompoundButton, Boolean>
implements OnCheckedChangeListener{
public CheckedViewAttribute(CompoundButton view) {
super(Boolean.class, view, "checked");
Binder.getMulticastListenerForView(view, OnCheckedChangeListenerMulticast.class)
.register(this);
}
@Override
protected void doSetAttributeValue(Object newValue) {
if(getView()==null) return;
boolean changeTo = getView().isChecked();
if (newValue==null){
changeTo = false;
}
if (newValue instanceof Boolean){
changeTo = (Boolean)newValue;
}
if (newValue instanceof Number){
changeTo = !((Number)newValue).equals(0);
}
if (changeTo != getView().isChecked()){
Binder.getMulticastListenerForView(getView(), OnCheckedChangeListenerMulticast.class).nextActionIsNotFromUser();
getView().setChecked(changeTo);
}
}
@Override
public Boolean get() {
if(getView()==null) return null;
return getView().isChecked();
}
public void onCheckedChanged(CompoundButton view, boolean checked) {
this.notifyChanged();
}
}