package com.csound.wizard.view.unit;
import android.content.Context;
import android.widget.NumberPicker;
import com.csound.wizard.layout.UnitUtils;
import com.csound.wizard.layout.Units.StatefulUnit;
import com.csound.wizard.layout.param.TextParam;
import com.csound.wizard.layout.param.Types.Range;
import com.csound.wizard.view.Listener;
import com.csound.wizard.view.Listener.OnTap;
import com.csound.wizard.view.Listener.OnTapListener;
public class CsdNumberPicker extends NumberPicker implements OnTapListener, StatefulUnit {
private OnTap mListener = Listener.defaultOnTap();
private String mid;
private int mSelected;
public CsdNumberPicker(Context context) {
super(context);
}
public CsdNumberPicker(Context context, String id, int initVal, Range range, final TextParam textParam) {
super(context);
mid = id;
mSelected = initVal;
this.setMinValue((int) range.getMin());
this.setMaxValue((int) range.getMax());
this.setValue(initVal);
this.setWrapSelectorWheel(false);
this.setOnValueChangedListener(new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal,
int newVal) {
mSelected = newVal;
mListener.tap(newVal);
}
});
}
@Override
public String getUnitId() {
return mid;
}
@Override
public double[] getUnitState() {
return UnitUtils.getUnitStateFloat(mSelected);
}
@Override
public void setOnTapListener(OnTap listener) {
mListener = listener;
}
public static int defaultState(Range r) {
return (int) Math.round(0.5 * (r.getMin() + r.getMax()));
}
}