package view;

import java.util.LinkedList;
import java.util.List;
import java.util.regex.Pattern;

import tool.Swap;
import tool.ZoneRadar;
import Model.AccessPoint;
import Model.Location;
import android.content.Context;
import android.database.sqlite.SQLiteOpenHelper;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridLayout;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.Toast;

public final class AddLocationForm extends LinearLayout implements OnClickListener, TextWatcher{
	private final Button ok;
	private final EditText name;
	
	private final SQLiteOpenHelper db;
	private final ZoneRadar radar;
	private final Swap swap;
	
	private final List<ApCheckBox> _aplst;
	
	public AddLocationForm(Context context, final SQLiteOpenHelper _db,final ZoneRadar _radar, final Swap _swap) {
		super(context);
		setOrientation(LinearLayout.VERTICAL);	
	    

		name = new EditText(context);
		name.addTextChangedListener(this);
		name.setLines(1);
		name.requestFocus();
		addView(name);
		
		ok = new Button(context);
		ok.setText("Submit");
		ok.setEnabled(false);
		ok.setOnClickListener(this);
		addView(ok);
		
		_aplst = new LinkedList();
		for (AccessPoint ap : AccessPoint.getFromRadar(_db, _radar)){
			ApCheckBox tmp = new ApCheckBox(context,ap);
			_aplst.add(tmp);
			addView(tmp);
		}
		
		db=_db;
		radar=_radar;
		swap=_swap;
	}

	public void afterTextChanged(Editable arg0) {}

	public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}

	public void onTextChanged(CharSequence s, int start, int before, int count) {
		boolean regex = Pattern.matches("^[a-z]{3,16}$", s.toString());
		ok.setEnabled(regex);
	}
	
    public void onClick(View v) {
    	List<AccessPoint> selected = new LinkedList();
    	for (ApCheckBox apcb : _aplst)
    		if (apcb.isChecked())
    			selected.add(apcb.getAp());
    	Location.makeNewWith(db, name.getText().toString(), selected);
    }
}
