package mil.nga.giat.asam;
import java.util.List;
import mil.nga.giat.asam.model.AsamBean;
import mil.nga.giat.asam.util.AsamConstants;
import mil.nga.giat.asam.util.AsamListContainer;
import mil.nga.giat.asam.util.AsamLog;
import mil.nga.giat.asam.widget.AsamArrayAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
public class AsamListFragment extends Fragment implements AdapterView.OnItemClickListener {
public interface OnAsamSelectedListener {
public void onAsamSelected(AsamBean asam);
}
private int mSortDirection;
private int mSortPopupSpinnerSelection;
private List<AsamBean> mAsams;
private ListView mAsamListViewUI;
private AsamArrayAdapter mAsamArrayAdapter;
private OnAsamSelectedListener mOnAsamSelectedListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AsamLog.i(AsamListFragment.class.getName() + ":onCreate");
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.asam_list_fragment, container, false);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.asam_list_fragment_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.asam_list_fragment_menu_sort_ui) {
DialogFragment dialogFragment = SortAsamListDialogFragment.newInstance(mSortDirection, mSortPopupSpinnerSelection);
dialogFragment.show(getActivity().getSupportFragmentManager(), "dialog");
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
AsamLog.i(AsamListFragment.class.getName() + ":onActivityCreated");
mAsamListViewUI = (ListView)getActivity().findViewById(R.id.asam_list_tablet_list_view_ui);
TextView emptyListViewUI = new TextView(getActivity());
emptyListViewUI.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
emptyListViewUI.setText(getResources().getString(R.string.asam_list_empty_list_text));
emptyListViewUI.setVisibility(View.GONE);
mAsamListViewUI.setEmptyView(emptyListViewUI);
mAsams = AsamListContainer.mAsams;
mAsamArrayAdapter = new AsamArrayAdapter(getActivity(), R.layout.asam_list_row, mAsams);
mSortDirection = AsamConstants.SORT_DESCENDING;
mSortPopupSpinnerSelection = AsamConstants.OCURRENCE_DATE_SORT;
mAsamArrayAdapter.sort(new AsamBean.DescendingOccurrenceDateComparator());
mAsamListViewUI.setAdapter(mAsamArrayAdapter);
mAsamListViewUI.setOnItemClickListener(this);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
AsamLog.i(AsamListFragment.class.getName() + ":onAttach");
try {
mOnAsamSelectedListener = (OnAsamSelectedListener)activity;
}
catch (ClassCastException caught) {
throw new ClassCastException(activity.toString() + " must implement OnAsamSelectedListener");
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mOnAsamSelectedListener.onAsamSelected(mAsams.get(position));
}
public void onSortAsamList(int sortDirection, int sortPopupSpinnerSelection) {
mSortDirection = sortDirection;
mSortPopupSpinnerSelection = sortPopupSpinnerSelection;
switch (mSortPopupSpinnerSelection) {
case AsamConstants.AGGRESSOR_SORT:
if (mSortDirection == AsamConstants.SORT_ASCENDING) {
mAsamArrayAdapter.sort(new AsamBean.AscendingAggressorComparator());
}
else {
mAsamArrayAdapter.sort(new AsamBean.DescendingAggressorComparator());
}
break;
case AsamConstants.OCURRENCE_DATE_SORT:
if (mSortDirection == AsamConstants.SORT_ASCENDING) {
mAsamArrayAdapter.sort(new AsamBean.AscendingOccurrenceDateComparator());
}
else {
mAsamArrayAdapter.sort(new AsamBean.DescendingOccurrenceDateComparator());
}
break;
case AsamConstants.REFERENCE_NUMBER_SORT:
if (mSortDirection == AsamConstants.SORT_ASCENDING) {
mAsamArrayAdapter.sort(new AsamBean.AscendingReferenceNumberComparator());
}
else {
mAsamArrayAdapter.sort(new AsamBean.DescendingReferenceNumberComparator());
}
break;
case AsamConstants.SUBREGION_SORT:
if (mSortDirection == AsamConstants.SORT_ASCENDING) {
mAsamArrayAdapter.sort(new AsamBean.AscendingSubregionComparator());
}
else {
mAsamArrayAdapter.sort(new AsamBean.DescendingSubregionComparator());
}
break;
case AsamConstants.VICTIM_SORT:
if (mSortDirection == AsamConstants.SORT_ASCENDING) {
mAsamArrayAdapter.sort(new AsamBean.AscendingVictimComparator());
}
else {
mAsamArrayAdapter.sort(new AsamBean.DescendingVictimComparator());
}
break;
}
}
}