package com.csound.wizard.view.unit;
import java.util.List;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.csound.wizard.layout.Layout;
import com.csound.wizard.layout.UnitUtils;
import com.csound.wizard.layout.Units.StatefulUnit;
import com.csound.wizard.layout.param.TextParam;
import com.csound.wizard.view.Listener;
import com.csound.wizard.view.Listener.OnTap;
import com.csound.wizard.view.Listener.OnTapListener;
public class Radio extends RadioGroup implements StatefulUnit, OnTapListener, OnClickListener {
private OnTap mListener = Listener.defaultOnTap();
private String mid;
private int mSelected;
public Radio(Context context) {
super(context);
}
public Radio(Context context, String id, int initVal, List<String> names, boolean isHor, TextParam textParam) {
super(context);
mid = id;
mSelected = initVal;
setOrientation(isHor);
addButtons(initVal, context, names, textParam);
}
private void setOrientation(boolean isHor) {
if (isHor) {
this.setOrientation(HORIZONTAL);
} else {
this.setOrientation(VERTICAL);
}
}
private void addButtons(int initVal, Context ctx, List<String> names, TextParam textParam) {
int k = 0;
for (String x: names) {
RadioButton btn = new RadioButton(ctx);
btn.setText(x);
btn.setId(k);
btn.setOnClickListener(this);
Layout.setTextProperties(btn, textParam);
this.addView(btn);
if (k == initVal) {
btn.setChecked(true);
}
k++;
}
}
@Override
public String getUnitId() {
return mid;
}
@Override
public double[] getUnitState() {
return UnitUtils.getUnitStateFloat(mSelected);
}
@Override
public void setOnTapListener(OnTap listener) {
mListener = listener;
}
@Override
public void onClick(View v) {
RadioButton rb = (RadioButton)v;
int pos = rb.getId();
mListener.tap(pos);
mSelected = pos;
}
public static int defaultState() {
return 0;
}
}