package com.example.surgerylog; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.SortedSet; import net.redroid.medlog.R; import android.R.color; import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.graphics.Color; import android.os.Bundle; import android.sax.TextElementListener; import android.support.v4.app.Fragment; import android.text.method.DateTimeKeyListener; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewDebug.FlagToString; import android.webkit.WebView.FindListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.DatePicker; import android.widget.EditText; import android.widget.Spinner; import android.widget.AdapterView.OnItemSelectedListener; public class NewEntryFragment extends Fragment { /** * The fragment argument representing the section number for this fragment. */ public static final String ARG_SECTION_NUMBER = "section_number"; private MainActivity _activity; public NewEntryFragment() { } @Override public void onAttach(Activity activity) { super.onAttach(activity); // This makes sure that the container activity has implemented // the callback interface. If not, it throws an exception try { _activity = (MainActivity) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnHeadlineSelectedListener"); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // get root view View rootView = inflater.inflate(R.layout.fragment_new_entry, container, false); return rootView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); // get view View view = getView(); // set TYPE spinner listener Spinner typeSpinner = (Spinner) view.findViewById(R.id.medTypeSpinner); typeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { // An item was selected. You can retrieve the selected item using // parent.getItemAtPosition(pos) @Override public void onItemSelected(AdapterView parent, View view, int pos, long id) { // get TYPE MedLogType medType = _activity.Root.GetMedLogType(parent .getSelectedItem().toString()); // set TYPE child spinner SetSpinnerData(R.id.medSubTypeSpinner, medType.GetSubTypeList()); } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }); // set SUBTYPE spinner listener Spinner subTypeSpinner = (Spinner) view .findViewById(R.id.medSubTypeSpinner); subTypeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { // An item was selected. You can retrieve the selected item using // parent.getItemAtPosition(pos) @Override public void onItemSelected(AdapterView parent, View view, int pos, long id) { // get selected TYPE Spinner typeSpinner = (Spinner) getView().findViewById( R.id.medTypeSpinner); String selectedType = typeSpinner.getSelectedItem().toString(); MedLogType medType = _activity.Root.GetMedLogType(selectedType); // get selected SUBTYPE item MedLogSubType medSubtype = medType.GetMedLogSubType(parent .getSelectedItem().toString()); // set SUBTYPE children spinners SetSpinnerData(R.id.medSubSubTypeSpinner, medSubtype.GetSubSubTypeList()); SetSpinnerData(R.id.pathologySpinner, medSubtype.GetPathologyList()); SetSpinnerData(R.id.interventionSpinner, medSubtype.GetInterventionList()); } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }); // set save entry button Button saveBtn = (Button) getView().findViewById(R.id.saveButton); saveBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // if process number is missing... do not accept if (((EditText) getView().findViewById(R.id.nProcess)).getText() .toString().trim().isEmpty() == true) { _activity.ShowMessage(R.string.errorMissingProcessNumber_str); return; } // gather med log info GatherMedLogInfo(); // apply overriden fields if (OverrideIsActivate()) { ApplyOverride(); } // Log.e("Trace NewEntry", "All info collected"); _activity.AddNewEntry(); _activity.ShowMessage(R.string.successSavingEntry_str); // reset all entries to the initial state ResetAllEntries(); // Log.e("Trace NewEntry", "Entry saved"); } }); // set override check box CheckBox overrideCheck = (CheckBox) getView().findViewById( R.id.overrideCheckBox); overrideCheck.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { if (OverrideIsActivate()) { ShowOverrideFields(); } else { HideOverrideFields(); } } }); // set fill override text button Button fillOverrideBtn = (Button) getView().findViewById( R.id.fillOverrideButton); fillOverrideBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { FillOverrideFromSpinners(); } }); // hide override fields HideOverrideFields(); } @Override public void onResume() { super.onResume(); // update type spinner based on current activity root SetSpinnerData(R.id.medTypeSpinner, _activity.Root.GetTypeList()); // update first aider spinner SetSpinnerData(R.id.firstAiderSpinner, _activity.Root.GetFirstAiderList()); // update anesthesia spinner SetSpinnerData(R.id.anesthesiaSpinner, _activity.Root.GetAnesthesiaList()); // update place spinner SetSpinnerData(R.id.placeSpinner, _activity.Root.GetPlaceList()); } private void SetSpinnerData(int spinnerId, List spinnerValues) { // create array adapter ArrayAdapter adapter = new ArrayAdapter(getView() .getContext(), // android.R.layout.simple_spinner_dropdown_item, R.layout.multiline_spinner_dropdown_item, spinnerValues); // sort spinner values adapter.sort(new Comparator() { public int compare(String object1, String object2) { return object1.compareTo(object2); } }); // get spinner Spinner spinner = (Spinner) getView().findViewById(spinnerId); // set adapter spinner.setAdapter(adapter); } private Spinner GetSpinner(int spinnerId) { return (Spinner) getView().findViewById(spinnerId); } private EditText GetEditText(int editTextId) { return (EditText) getView().findViewById(editTextId); } private CheckBox GetCheckBox(int checkBoxId){ return (CheckBox) getView().findViewById(checkBoxId); } private String GetTextFromEditText(int editTextId) { return ((EditText) getView().findViewById(editTextId)).getText().toString(); } private Boolean OverrideIsActivate() { return ((CheckBox) getView().findViewById(R.id.overrideCheckBox)) .isChecked(); } private String GetTextFromSpinner(int spinnerId) { Object item = ((Spinner) getView().findViewById(spinnerId)).getSelectedItem(); if (item != null) return item.toString(); else return ""; } private void GatherMedLogInfo() { // Log.e("Trace NewEntry", "Save requested..."); // collect med log info _activity.CurrentInfo.ProcessNumber = Long .parseLong(((EditText) getView().findViewById(R.id.nProcess)) .getText().toString()); // check if surgery number is empty if (((EditText) getView().findViewById(R.id.nSurgery)).getText() .toString().trim().isEmpty() == true) { _activity.CurrentInfo.SurgeryNumber = (long) 0; } else { _activity.CurrentInfo.SurgeryNumber = Long .parseLong(((EditText) getView() .findViewById(R.id.nSurgery)).getText().toString()); } // Log.e("Trace NewEntry", "Collected numbers"); DatePicker date = ((DatePicker) getView().findViewById(R.id.datePicker)); _activity.CurrentInfo.Date.set(date.getYear(), date.getMonth(), date.getDayOfMonth()); // Log.e("Trace NewEntry", "Collected date"); // get spinners (avoid empty ones) _activity.CurrentInfo.Type = GetTextFromSpinner(R.id.medTypeSpinner); _activity.CurrentInfo.SubType = GetTextFromSpinner(R.id.medSubTypeSpinner); _activity.CurrentInfo.SubSubType = GetTextFromSpinner(R.id.medSubSubTypeSpinner); _activity.CurrentInfo.Pathology = GetTextFromSpinner(R.id.pathologySpinner); _activity.CurrentInfo.Intervention = GetTextFromSpinner(R.id.interventionSpinner); _activity.CurrentInfo.FirstAider = GetTextFromSpinner(R.id.firstAiderSpinner); _activity.CurrentInfo.Anesthesia = GetTextFromSpinner(R.id.anesthesiaSpinner); _activity.CurrentInfo.Place = GetTextFromSpinner(R.id.placeSpinner); _activity.CurrentInfo.Urgency = ((CheckBox) getView().findViewById( R.id.urgencyCheckBox)).isChecked(); _activity.CurrentInfo.Notes = GetTextFromEditText(R.id.notesText); } private void ResetAllEntries() { GetEditText(R.id.nProcess).setText(""); GetEditText(R.id.nSurgery).setText(""); GetEditText(R.id.placeOverride).setText(""); GetEditText(R.id.firstAiderOverride).setText(""); GetEditText(R.id.anesthesiaOverride).setText(""); GetEditText(R.id.medTypeOverride).setText(""); GetEditText(R.id.medSubTypeOverride).setText(""); GetEditText(R.id.medSubSubTypeOverride).setText(""); GetEditText(R.id.pathologyOverride).setText(""); GetEditText(R.id.interventionOverride).setText(""); GetCheckBox(R.id.urgencyCheckBox).setChecked(false); GetCheckBox(R.id.overrideCheckBox).setChecked(false); GetEditText(R.id.notesText).setText(""); // set default spinners GetSpinner(R.id.medTypeSpinner).setSelection(0); GetSpinner(R.id.firstAiderSpinner).setSelection(0); GetSpinner(R.id.anesthesiaSpinner).setSelection(0); GetSpinner(R.id.placeSpinner).setSelection(0); // hide override HideOverrideFields(); } private void ApplyOverride() { String value; value = GetTextFromEditText(R.id.medTypeOverride); if(value.isEmpty() == false) { _activity.CurrentInfo.Type = value; } value = GetTextFromEditText(R.id.medSubTypeOverride); if(value.isEmpty() == false) { _activity.CurrentInfo.SubType = value; } value = GetTextFromEditText(R.id.medSubSubTypeOverride); if(value.isEmpty() == false) { _activity.CurrentInfo.SubSubType = value; } value = GetTextFromEditText(R.id.pathologyOverride); if(value.isEmpty() == false) { _activity.CurrentInfo.Pathology = value; } value = GetTextFromEditText(R.id.interventionOverride); if(value.isEmpty() == false) { _activity.CurrentInfo.Intervention = value; } value = GetTextFromEditText(R.id.firstAiderOverride); if(value.isEmpty() == false) { _activity.CurrentInfo.FirstAider = value; } value = GetTextFromEditText(R.id.anesthesiaOverride); if(value.isEmpty() == false) { _activity.CurrentInfo.Anesthesia = value; } value = GetTextFromEditText(R.id.placeOverride); if(value.isEmpty() == false) { _activity.CurrentInfo.Place = value; } } private void HideOverrideFields() { GetEditText(R.id.firstAiderOverride).setVisibility(View.GONE); GetEditText(R.id.anesthesiaOverride).setVisibility(View.GONE); GetEditText(R.id.placeOverride).setVisibility(View.GONE); GetEditText(R.id.medTypeOverride).setVisibility(View.GONE); GetEditText(R.id.medSubTypeOverride).setVisibility(View.GONE); GetEditText(R.id.medSubSubTypeOverride).setVisibility(View.GONE); GetEditText(R.id.pathologyOverride).setVisibility(View.GONE); GetEditText(R.id.interventionOverride).setVisibility(View.GONE); ((Button) getView().findViewById(R.id.fillOverrideButton)).setVisibility(View.GONE); } private void ShowOverrideFields() { SetOverrideProperties(R.id.firstAiderOverride); SetOverrideProperties(R.id.anesthesiaOverride); SetOverrideProperties(R.id.placeOverride); SetOverrideProperties(R.id.medTypeOverride); SetOverrideProperties(R.id.medSubTypeOverride); SetOverrideProperties(R.id.medSubSubTypeOverride); SetOverrideProperties(R.id.pathologyOverride); SetOverrideProperties(R.id.interventionOverride); ((Button) getView().findViewById(R.id.fillOverrideButton)).setVisibility(View.VISIBLE); } private void SetOverrideProperties(int exitTextId) { int overrideColor = Color.argb(128, 51, 181, 229); EditText override; override = GetEditText(exitTextId); override.setVisibility(View.VISIBLE); override.setBackgroundColor(overrideColor); } private void FillOverrideFromSpinners() { GetEditText(R.id.firstAiderOverride).setText(GetTextFromSpinner(R.id.firstAiderSpinner)); GetEditText(R.id.anesthesiaOverride).setText(GetTextFromSpinner(R.id.anesthesiaSpinner)); GetEditText(R.id.placeOverride).setText(GetTextFromSpinner(R.id.placeSpinner)); GetEditText(R.id.medTypeOverride).setText(GetTextFromSpinner(R.id.medTypeSpinner)); GetEditText(R.id.medSubTypeOverride).setText(GetTextFromSpinner(R.id.medSubTypeSpinner)); GetEditText(R.id.medSubSubTypeOverride).setText(GetTextFromSpinner(R.id.medSubSubTypeSpinner)); GetEditText(R.id.pathologyOverride).setText(GetTextFromSpinner(R.id.pathologySpinner)); GetEditText(R.id.interventionOverride).setText(GetTextFromSpinner(R.id.interventionSpinner)); } }