package mil.nga.giat.asam; import java.text.ParseException; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import mil.nga.giat.asam.db.AsamDbHelper; import mil.nga.giat.asam.map.AllAsamsMapActivity; import mil.nga.giat.asam.model.SubregionTextParser; import mil.nga.giat.asam.model.TextQueryParametersBean; import mil.nga.giat.asam.util.AsamConstants; import mil.nga.giat.asam.util.AsamLog; import mil.nga.giat.asam.util.AsamUtils; import mil.nga.giat.asam.util.CurrentSubregionHelper; import android.app.DatePickerDialog; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager.LayoutParams; import android.widget.ArrayAdapter; import android.widget.DatePicker; import android.widget.EditText; import android.widget.Spinner; public class TextQueryActivity extends ActionBarActivity { private static final int SUBREGION_SPINNER_EMPTY_POSITION = 0; private static final int SUBREGION_SPINNER_CURRENT_LOCATION_POSITION = 1; private EditText mDateFromUI; private EditText mDateToUI; private Spinner mSubregionSpinnerUI; private EditText mReferenceNumberYearUI; private EditText mReferenceNumberIdUI; private EditText mVictimUI; private EditText mAggressorUI; private CurrentSubregionHelper mCurrentSubregionHelper; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AsamLog.i(TextQueryActivity.class.getName() + ":onCreate"); setContentView(R.layout.text_query); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.subregions, R.layout.subregion_spinner_item); adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); mSubregionSpinnerUI = (Spinner)findViewById(R.id.text_query_subregion_spinner_ui); mSubregionSpinnerUI.setAdapter(adapter); mReferenceNumberYearUI = (EditText)findViewById(R.id.text_query_reference_number_year_edit_text_ui); mReferenceNumberIdUI = (EditText)findViewById(R.id.text_query_reference_number_id_edit_text_ui); mDateFromUI = (EditText)findViewById(R.id.text_query_date_from_edit_text_ui); mDateToUI = (EditText)findViewById(R.id.text_query_date_to_edit_text_ui); mVictimUI = (EditText)findViewById(R.id.text_query_victim_edit_text_ui); mAggressorUI = (EditText)findViewById(R.id.text_query_aggressor_edit_text_ui); mDateFromUI.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { DatePickerDialog.OnDateSetListener listener; listener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { GregorianCalendar calendar = new GregorianCalendar(year, monthOfYear, dayOfMonth); mDateFromUI.setText(AsamDbHelper.TEXT_QUERY_DATE_FORMAT.format(calendar.getTime())); } }; Calendar calendar = Calendar.getInstance(); if (mDateFromUI != null && !AsamUtils.isEmpty(mDateFromUI.getText().toString())) { try { Date date = AsamDbHelper.TEXT_QUERY_DATE_FORMAT.parse(mDateFromUI.getText().toString()); calendar.setTime(date); } catch (ParseException caught) {} // ignore. } int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); DatePickerDialog dialog = new DatePickerDialog(TextQueryActivity.this, listener, year, month, day); dialog.show(); } }); mDateToUI.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { DatePickerDialog.OnDateSetListener listener; listener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { GregorianCalendar calendar = new GregorianCalendar(year, monthOfYear, dayOfMonth); mDateToUI.setText(AsamDbHelper.TEXT_QUERY_DATE_FORMAT.format(calendar.getTime())); } }; Calendar calendar = Calendar.getInstance(); if (mDateToUI != null && !AsamUtils.isEmpty(mDateToUI.getText().toString())) { try { Date date = AsamDbHelper.TEXT_QUERY_DATE_FORMAT.parse(mDateToUI.getText().toString()); calendar.setTime(date); } catch (ParseException caught) {} // ignore. } int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); DatePickerDialog dialog = new DatePickerDialog(TextQueryActivity.this, listener, year, month, day); dialog.show(); } }); mCurrentSubregionHelper = new CurrentSubregionHelper(this, new SubregionTextParser().parseSubregions(this)); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.text_query_menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); if (itemId == android.R.id.home) { finish(); return true; } else if (itemId == R.id.text_query_menu_query_ui) { showQueryOnMap(); return true; } else if (itemId == R.id.text_query_menu_reset_ui) { clearFields(); return true; } return super.onOptionsItemSelected(item); } public void queryButtonClicked(View view) { showQueryOnMap(); } public void clearButtonClicked(View view) { clearFields(); } private void showQueryOnMap() { TextQueryParametersBean parameters = new TextQueryParametersBean(); parameters.mDateFrom = mDateFromUI.getText().toString(); parameters.mDateTo = mDateToUI.getText().toString(); if (mSubregionSpinnerUI.getSelectedItemPosition() == SUBREGION_SPINNER_CURRENT_LOCATION_POSITION) { parameters.mSubregion = mCurrentSubregionHelper.getCurrentSubregion() + ""; } else if (mSubregionSpinnerUI.getSelectedItemPosition() != SUBREGION_SPINNER_EMPTY_POSITION) { parameters.mSubregion = ((String)mSubregionSpinnerUI.getSelectedItem()).split(" ")[1]; // Looks like "Subregion 32". } parameters.mAggressor = mAggressorUI.getText().toString(); parameters.mVictim = mVictimUI.getText().toString(); if (!AsamUtils.isEmpty(mReferenceNumberYearUI.getText().toString()) && !AsamUtils.isEmpty(mReferenceNumberIdUI.getText().toString())) { parameters.mReferenceNumber = mReferenceNumberYearUI.getText().toString() + "-" + mReferenceNumberIdUI.getText().toString(); } Intent intent = new Intent(this, AllAsamsMapActivity.class); intent.putExtra(AsamConstants.QUERY_TYPE_KEY, AsamConstants.TEXT_QUERY); intent.putExtra(AsamConstants.TEXT_QUERY_PARAMETERS_KEY, parameters); startActivity(intent); } private void clearFields() { mSubregionSpinnerUI.setSelection(SUBREGION_SPINNER_EMPTY_POSITION); mDateFromUI.setText(""); mDateToUI.setText(""); mVictimUI.setText(""); mAggressorUI.setText(""); mReferenceNumberYearUI.setText(""); mReferenceNumberIdUI.setText(""); } }