package kr.kdev.dg1s.biowiki.ui.info.viewer;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import com.actionbarsherlock.view.MenuItem;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Random;
import kr.kdev.dg1s.biowiki.R;
import kr.kdev.dg1s.biowiki.ui.BIActionBarActivity;
import kr.kdev.dg1s.biowiki.ui.info.viewer.utils.ArrayUtils;
import uk.ac.cam.cl.dtg.snowdon.LineGraphView;
public class ChartViewerActivity extends BIActionBarActivity {
ArrayUtils arrayUtils;
TextView startingDateText;
TextView endDateText;
LineGraphView lineGraph;
Random random;
boolean startingDateSet = false;
private DatePickerDialog.OnDateSetListener startDayListener;
private DatePickerDialog.OnDateSetListener endDayListener;
void recalculate(int dataSize) {
ArrayList<Integer> randomIntegerArray = new ArrayList<Integer>();
int maxInt1 = arrayUtils.regenerateRandomIntegerValues(randomIntegerArray, dataSize, random, 0, 20);
float[] integerArray1 = new float[randomIntegerArray.size()];
arrayUtils.migrateValues(randomIntegerArray, integerArray1);
int maxInt2 = arrayUtils.regenerateRandomIntegerValues(randomIntegerArray, dataSize, random, 0, 20);
float[] integerArray2 = new float[randomIntegerArray.size()];
arrayUtils.migrateValues(randomIntegerArray, integerArray2);
int maxInt3 = arrayUtils.regenerateRandomIntegerValues(randomIntegerArray, dataSize, random, 0, 20);
float[] integerArray3 = new float[randomIntegerArray.size()];
arrayUtils.migrateValues(randomIntegerArray, integerArray3);
/**
int maxValueRounded = (int) (Math.ceil(
Collections.max(Arrays.asList(org.apache.commons.lang.ArrayUtils.toObject(new float[]{maxInt1, maxInt2, maxInt3}))).floatValue()) + 1);
*/
int fir = 0;
int sec = 3;
int thi = 6;
int fou = 7;
int fif = 4;
int six = 1;
int maxValueRounded = (int) (Math.ceil(
Collections.max(Arrays.asList(org.apache.commons.lang.ArrayUtils.toObject(new float[]{fir, sec, thi, fou, fif, six}))).floatValue()) + 1);
/**
float[][] data1 = {arrayUtils.genericPositions(dataSize), integerArray1};
float[][] data2 = {arrayUtils.genericPositions(dataSize), integerArray2};
float[][] data3 = {arrayUtils.genericPositions(dataSize), integerArray3};
*/
float[][] data1 = {arrayUtils.genericPositions(dataSize), new float[]{fir, sec, thi, fou, fif, six, Float.NaN}};
lineGraph.setXLabelPositions(arrayUtils.genericAxisIndex(dataSize));
lineGraph.setXLabels(new String[]{"5", "10", "15", "20", "25", "30", "35"});
//lineGraph.setXLabels(ar);
lineGraph.setData(new float[][][]{data1}, 0, dataSize - 1, 0, maxValueRounded);
lineGraph.setYLabels(arrayUtils.genericLabels(maxValueRounded));
lineGraph.setYLabelPositions(arrayUtils.genericAxisIndex(maxValueRounded));
findViewById(R.id.info_text).setVisibility(View.GONE);
lineGraph.redraw();
}
void initializeGlobalVariables() {
arrayUtils = new ArrayUtils();
random = new Random();
lineGraph = (LineGraphView) findViewById(R.id.graph);
startingDateText = (TextView) findViewById(R.id.startDate);
startingDateText.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Calendar calendar = Calendar.getInstance();
Dialog mDialog = new DatePickerDialog(ChartViewerActivity.this,
startDayListener, calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH), calendar
.get(Calendar.DAY_OF_MONTH)
);
mDialog.show();
}
});
endDateText = (TextView) findViewById(R.id.endDate);
endDateText.setOnClickListener(
new View.OnClickListener() {
public void onClick(View arg0) {
String[] dateParts = startingDateText.getText().toString().split("-");
try {
Dialog mDialog;
mDialog = new DatePickerDialog(ChartViewerActivity.this,
endDayListener, Integer.valueOf(dateParts[0]), Integer.valueOf(dateParts[1]) - 1,
Integer.valueOf(dateParts[2]));
mDialog.show();
} catch (NumberFormatException e) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
ChartViewerActivity.this);
alertDialogBuilder.setTitle(getResources().getString(R.string.error));
alertDialogBuilder
.setMessage(getResources().getString(R.string.select_start_date))
.setCancelable(false)
.setPositiveButton(getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
}
}
);
startDayListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
Calendar calendar = Calendar.getInstance();
final int SELECTED_YEAR = Integer.valueOf(String.valueOf(arg1));
final int SELECTED_MONTH = Integer.valueOf(String.valueOf(arg2)) + 1;
final int SELECTED_DAY = Integer.valueOf(String.valueOf(arg3));
final int CURRENT_YEAR = calendar.get(Calendar.YEAR);
final int CURRENT_MONTH = calendar.get(Calendar.MONTH);
final int CURRENT_DAY = calendar.get(Calendar.DAY_OF_MONTH);
String date = SELECTED_YEAR + "-" + SELECTED_MONTH + "-" + SELECTED_DAY;
startingDateText.setText(date);
startingDateText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
startingDateSet = true;
recalculate(6);
}
};
endDayListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
String date = arg1 + "-" + (arg2 + 1) + "-" + arg3;
endDateText.setText(date);
endDateText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
lineGraph.setVisibility(View.VISIBLE);
recalculate(6);
}
};
}
@Override
public boolean onOptionsItemSelected(MenuItem menu) {
switch (menu.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(menu);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
title = getString(R.string.habitatTitle);
super.onCreate(savedInstanceState);
setContentView(R.layout.graph);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
initializeGlobalVariables();
}
}