package com.num.ui.viewgenerator;
import java.util.ArrayList;
import com.num.activities.GraphActivity;
import com.num.database.DatabasePicker;
import com.num.database.datasource.LatencyDataSource;
import com.num.database.mapping.LatencyMapping;
import com.num.graph.PingGraph;
import com.num.models.Model;
import com.num.models.Ping;
import com.num.models.Row;
import com.num.R;
import com.num.Values;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class PickerViewGenerator extends ViewGenerator{
ViewHolder holder;
final DatabasePicker picker;
String column;
ArrayList<String> items;
ArrayList<String> displayitems;
public PickerViewGenerator(DatabasePicker picker,String column) {
super(R.layout.cell_view_spinner);
this.picker = picker;
this.column = column;
holder = new ViewHolder();
}
@Override
public ViewHolder fillViewHolder(View view, LayoutInflater inflater) {
holder.spinner = (Spinner) view.findViewById(R.id.choose);
holder.first = (TextView) view.findViewById(R.id.key);
holder.second = (TextView) view.findViewById(R.id.value);
holder.imageview = (ImageView) view.findViewById(R.id.edit);
return holder;
}
@Override
public void populateView(Row item,final Context context,View view) {
holder.first.setText(picker.getDisplayName(column));
items = picker.datasource.getDistinctValues(column);
displayitems = new ArrayList<String>();
int initialSelection = 0;
int count = 0;
for(String str : items) {
if(str.equals(picker.get(column))) {
initialSelection = count;
}
displayitems.add(makeStringUppercase(str));
count++;
}
ArrayAdapter<String> adapter =
new ArrayAdapter<String> (context,
R.layout.spinner_text,displayitems);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
holder.spinner.setAdapter(adapter);
holder.spinner.setSelection(initialSelection);
holder.imageview.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
holder.spinner.performClick();
}
});
holder.spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
int pos = holder.spinner.getSelectedItemPosition();
picker.updateFilter(column, items.get(pos));
holder.second.setText(displayitems.get(pos));
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
private String makeStringUppercase(String s) {
final StringBuilder result = new StringBuilder(s.length());
String[] words = s.split("\\s");
for(int i=0,l=words.length;i<l;++i) {
if(i>0) result.append(" ");
result.append(Character.toUpperCase(words[i].charAt(0)))
.append(words[i].substring(1));
}
return result.toString();
}
}