package com.litesuits.android.samples;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ScrollView;
import android.widget.TextView;
import com.litesuits.android.async.Log;
import com.litesuits.async.R;

/**
 * 动态添加按钮和点击事件
 *
 * @author MaTianyu
 *         2014-2-25下午2:36:30
 */
public abstract class BaseActivity extends Activity implements OnClickListener {
    protected String TAG = "BaseActivity";
    private TextView mTvSubTitle;
    public LinearLayout container;
    public ScrollView scroll;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_list_btn);
        TAG = this.getClass().getSimpleName();
        Log.setTag(TAG);

        container = (LinearLayout) findViewById(R.id.container);
        scroll = (ScrollView) container.getParent();
        TextView tv = (TextView) container.findViewById(R.id.title);
        tv.setText(getMainTitle());
        mTvSubTitle = (TextView) container.findViewById(R.id.sub_title);

        String[] bttxt = getButtonTexts();
        if (bttxt != null) {
            for (int i = 0; i < bttxt.length; i++) {
                Button bt = new Button(this);
                LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
                int margin = getResources().getDimensionPixelSize(R.dimen.common_marin);
                lp.setMargins(margin, margin, margin, margin);
                bt.setId(i);
                bt.setText(bttxt[i]);
                bt.setOnClickListener(this);
                bt.setLayoutParams(lp);
                container.addView(bt);
            }
        }
    }

    /**
     * 获取主标题
     */
    public abstract String getMainTitle();

    /**
     * 设置二级标题
     */
    public void setSubTitile(String st) {
        mTvSubTitle.setText(st);
    }

    /**
     * 取button列表
     */
    public abstract String[] getButtonTexts();

    /**
     * 在{@link #onClick(View)} 里调用。
     * id值得含义为:若{@link #getButtonTexts()}的string[]数组长度为len,则id从0,1,2到len-1.
     * 点击第N个按钮,id变为N。
     */
    public abstract Runnable getButtonClickRunnable(final int id);

    @Override
    public void onClick(View v) {
        Runnable r = getButtonClickRunnable(v.getId());
        if (r != null) {
            new Thread(r).start();
        }
    }

}