package com.quemb.qmbform.view;
import com.quemb.qmbform.R;
import com.quemb.qmbform.descriptor.DataSourceListener;
import com.quemb.qmbform.descriptor.RowDescriptor;
import com.quemb.qmbform.descriptor.Value;
import com.quemb.qmbform.exceptions.NoDataSourceException;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import java.util.ArrayList;
import java.util.List;
/**
* Created by tonimoeckel on 15.07.14.
*/
public class FormTextPickerDialogFieldCell extends FormEditTextFieldCell {
private ImageButton mImageButton;
public FormTextPickerDialogFieldCell(Context context,
RowDescriptor rowDescriptor) {
super(context, rowDescriptor);
}
@Override
protected void init() {
super.init();
mImageButton = (ImageButton) findViewById(R.id.imageButton);
addListenerOnButton();
}
@Override
protected int getResource() {
return R.layout.text_picker_field_cell;
}
public void addListenerOnButton() {
mImageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onCellSelected();
}
});
}
@Override
public void onCellSelected() {
super.onCellSelected();
if (getRowDescriptor().getDataSource() == null) {
throw new NoDataSourceException();
} else {
getRowDescriptor().getDataSource().loadData(new DataSourceListener() {
@Override
public void onDataSourceLoaded(List list) {
if (list.size() > 0) {
final ArrayAdapter adapter = new ArrayAdapter(getContext(), android.R.layout.simple_selectable_list_item, list);
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
onValueChanged(new Value<Object>(adapter.getItem(which)));
update();
dialog.dismiss();
}
})
.setTitle(getRowDescriptor().getTitle());
AlertDialog dialog = builder.create();
dialog.show();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(R.string.title_no_entries);
builder.setMessage(R.string.msg_no_entries);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
}
}