package com.example.stopwatchexam;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class StopWatchActivity extends Activity {
	TextView myOutput;
	TextView myRec;
	Button myBtnStart;
	Button myBtnRec;

	final static int Init =0;
	final static int Run =1;
	final static int Pause =2;
	
	int cur_Status = Init; //ÇöÀçÀÇ »óÅÂ¸¦ ÀúÀåÇÒº¯¼ö¸¦ ÃÊ±âÈ­ÇÔ.
	int myCount=1;
	long myBaseTime;
	long myPauseTime;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_stop_watch);
		
		myOutput = (TextView) findViewById(R.id.time_out);
		myRec = (TextView) findViewById(R.id.record);
		myBtnStart = (Button) findViewById(R.id.btn_start);
		myBtnRec = (Button) findViewById(R.id.btn_rec);
		
		
	
	
	}
	
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
	}
	
	public void myOnClick(View v){
		switch(v.getId()){
		case R.id.btn_start: //½ÃÀÛ¹öÆ°À» Å¬¸¯ÇßÀ»¶§ ÇöÀç »óÅÂ°ª¿¡ µû¶ó ´Ù¸¥ µ¿ÀÛÀ» ÇÒ¼öÀÖ°Ô²û ±¸Çö.
			switch(cur_Status){
				case Init:
					myBaseTime = SystemClock.elapsedRealtime();
					System.out.println(myBaseTime);
					//myTimerÀÌ¶ó´Â ÇÚµé·¯¸¦ ºó ¸Þ¼¼Áö¸¦ º¸³»¼­ È£Ãâ
					myTimer.sendEmptyMessage(0);
					myBtnStart.setText("¸ØÃã"); //¹öÆ°ÀÇ ¹®ÀÚ"½ÃÀÛ"À» "¸ØÃã"À¸·Î º¯°æ
					myBtnRec.setEnabled(true); //±â·Ï¹öÆ° È°¼º
					cur_Status = Run; //ÇöÀç»óÅÂ¸¦ ·±»óÅÂ·Î º¯°æ
					break;
				case Run:
					myTimer.removeMessages(0); //ÇÚµé·¯ ¸Þ¼¼Áö Á¦°Å
					myPauseTime = SystemClock.elapsedRealtime();
					myBtnStart.setText("½ÃÀÛ");
					myBtnRec.setText("¸®¼Â");
					cur_Status = Pause;
					break;
				case Pause:
					long now = SystemClock.elapsedRealtime();
					myTimer.sendEmptyMessage(0);
					myBaseTime += (now- myPauseTime);
					myBtnStart.setText("¸ØÃã");
					myBtnRec.setText("±â·Ï");
					cur_Status = Run;
					break;
					
					
			}
			break;
		case R.id.btn_rec:
			switch(cur_Status){
			case Run:
				
				String str = myRec.getText().toString();
				str +=  String.format("%d. %s\n",myCount,getTimeOut());
				myRec.setText(str);
				myCount++; //Ä«¿îÆ® Áõ°¡
				
				break;
			case Pause:
				//ÇÚµé·¯¸¦ ¸ØÃã
				myTimer.removeMessages(0);
				
				myBtnStart.setText("½ÃÀÛ");
				myBtnRec.setText("±â·Ï");
				myOutput.setText("00:00:00");
				
				cur_Status = Init;
				myCount = 1;
				myRec.setText("");
				myBtnRec.setEnabled(false);
				break;
				
				
		}
		break;
			
		}
	}
	
	Handler myTimer = new Handler(){
		public void handleMessage(Message msg){
			myOutput.setText(getTimeOut());
			
			//sendEmptyMessage ´Â ºñ¾îÀÖ´Â ¸Þ¼¼Áö¸¦ Handler ¿¡°Ô Àü¼ÛÇÏ´Â°Ì´Ï´Ù.
			myTimer.sendEmptyMessage(0);
		}
	};
	//ÇöÀç½Ã°£À» °è¼Ó ±¸ÇØ¼­ Ãâ·ÂÇÏ´Â ¸Þ¼Òµå
	String getTimeOut(){
		long now = SystemClock.elapsedRealtime(); //¾ÖÇÃ¸®ÄÉÀÌ¼ÇÀÌ ½ÇÇàµÇ°í³ª¼­ ½ÇÁ¦·Î °æ°úµÈ ½Ã°£(??)^^;
		long outTime = now - myBaseTime;
		String easy_outTime = String.format("%02d:%02d:%02d", outTime/1000 / 60, (outTime/1000)%60, (outTime%1000)/10);
		return easy_outTime;
		 
	}
	

}
