package soo.ui.simple;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;
import android.widget.ToggleButton;

public class ButtonTest extends Activity {			//외부 클래스 이다.
    /** Called when the activity is first created. */
	Button b;
	// 지역변수에 final을 넣던지...멤버변수로 선언하던지 선택해야 한다.
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
         b = (Button)findViewById(R.id.Button01); //강제 형 변환 (상속되어서 아래로(child)로 바뀌는 형변환을 말한다.
         //final b : 지역변수에 final을 사용하면, 내부클래스에서 접근할 수 있다.
        //final 을 사용 하는 이유 : 
        b.setOnClickListener(
        		new View.OnClickListener() {		//익명 내부 클래스 이다..			
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						Toast t = Toast.makeText(ButtonTest.this, "일반버튼", Toast.LENGTH_LONG);
						t.show();
						b.setText("눌려 졌어"); 
					}
				}
        );
        
       final ImageButton b2 = (ImageButton)findViewById(R.id.imageButton01); 
       //강제 형 변환 (상속되어서 아래로(child)로 바뀌는 형변환을 말한다.
        //final b : 지역변수에 final을 사용하면, 내부클래스에서 접근할 수 있다.
       //final 을 사용 하는 이유 : 
       b2.setOnClickListener(
       		new View.OnClickListener() {		//익명 내부 클래스 이다..			
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						Toast t = Toast.makeText(ButtonTest.this, "이미지 버튼", Toast.LENGTH_LONG);
						t.show();						 
					}
				}
       );
       
       final ToggleButton b3 = (ToggleButton)findViewById(R.id.ToggleButton01); 
       //강제 형 변환 (상속되어서 아래로(child)로 바뀌는 형변환을 말한다.
        //final b : 지역변수에 final을 사용하면, 내부클래스에서 접근할 수 있다.
       //final 을 사용 하는 이유 : 
       b3.setOnClickListener(
       		new View.OnClickListener() {		//익명 내부 클래스 이다..			
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						Toast t = null;
						if(b3.isChecked()){
							t = Toast.makeText(ButtonTest.this, "켜짐", Toast.LENGTH_SHORT);
						}else{
							t = Toast.makeText(ButtonTest.this, "꺼짐", Toast.LENGTH_SHORT);
						}
						t.show();						 
					}
				}
       );
    }
}

//내부 클래스를 만드는 이유 : 거추장 스럽고, 보안의 위험이 있다.
// 외부 클래스의 멤버변수,메소드(resourse)에 접근을 쉽게 하기 이해서...

//익명 내부클래스를 만드는 이유 : 1군데에서만 사용