package net.basilwang;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import net.basilwang.dao.SemesterService;
import net.basilwang.entity.Semester;
import net.basilwang.listener.ActionModeListener;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
import br.com.dina.ui.model.BasicItem;
import br.com.dina.ui.widget.UITableView;
import br.com.dina.ui.widget.UITableView.ClickListener;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.ActionMode;
public class EditSemesterBeginAndEndDateActivity extends SherlockActivity
implements ActionModeListener {
private UITableView tableView;
private ActionMode mode;
private Calendar cal;
private Semester selectedSemester;
private SemesterService semesterService;
DateFormat dateFormat;
private List<BasicItem> items;
private void tableViewShowList() {
tableView.clear();
tableView.setClickListener(new DateTableViewOnClickListener());
for (int i = 0; i < items.size(); i++) {
tableView.addBasicItem(items.get(i));
}
tableView.commit();
}
public void initItem() {
semesterService = new SemesterService(getActivity());
selectedSemester = semesterService
.getSemesterByName(getSemsterNameInIntent());
dateFormat = new SimpleDateFormat("yyyy-MM-dd");
BasicItem beginDateItem = new BasicItem("单击设置学期起始时间");
if (selectedSemester.getBeginDate() != 0) {
beginDateItem.setSubtitle(getStringValueOfBeginDate());
}
BasicItem endDateItem = new BasicItem("单击设置学期结束时间");
if (selectedSemester.getEndDate() != 0) {
endDateItem.setSubtitle(getStringValueOfEndDate());
}
items = new ArrayList<BasicItem>(2);
items.add(beginDateItem);
items.add(endDateItem);
}
/**
* Example:Modify 2009-2010|2 to 2009-2010学年第二学期
*/
public String ModifySemesterName(String value) {
if (value.equals(""))
return "";
value = value.replace("|", "第");
value += "学期";
return value;
}
private String getStringValueOfBeginDate() {
return dateFormat.format(new Date(selectedSemester.getBeginDate()));
}
private String getStringValueOfEndDate() {
return dateFormat.format(new Date(selectedSemester.getEndDate()));
}
private void initView() {
cal = Calendar.getInstance();
setContentView(R.layout.edit_semester);
TextView textviewTitle = (TextView) findViewById(R.id.edit_semester_textView);
textviewTitle.setText(ModifySemesterName(getSemsterNameInIntent()));
tableView = (UITableView) findViewById(R.id.edit_semester_tableView);
String[] titles = { "保存" };
mode = startActionMode(new AddActionMode(titles, this));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initItem();
initView();
tableViewShowList();
}
private String getSemsterNameInIntent() {
return this.getIntent().getExtras().getString("semester");
}
public void setBeginDate(int year, int monthOfYear, int dayOfMonth,
int index) {
cal.set(year, monthOfYear, dayOfMonth);
selectedSemester.setBeginDate(cal.getTime().getTime());
items.get(index).setSubtitle(getStringValueOfBeginDate());
refreshTableView();
}
public void refreshTableView() {
tableViewShowList();
}
public void setEndDate(int year, int monthOfYear, int dayOfMonth, int index) {
cal.set(year, monthOfYear, dayOfMonth);
selectedSemester.setEndDate(cal.getTime().getTime());
items.get(index).setSubtitle(getStringValueOfEndDate());
refreshTableView();
}
private Activity getActivity() {
return EditSemesterBeginAndEndDateActivity.this;
}
@Override
public void onActionItemClickedListener(String title) {
if (title.equals("保存")) {
if (updateBeginAndEndDate() == true) {
mode.finish();
}
}
}
public boolean updateBeginAndEndDate() {
if (selectedSemester.getBeginDate() == 0
|| selectedSemester.getEndDate() == 0) {
Toast.makeText(getActivity(), "没有设置起始或结束日期.不能保存..",
Toast.LENGTH_SHORT).show();
return false;
} else if (selectedSemester.getBeginDate() > selectedSemester
.getEndDate()) {
Toast.makeText(getActivity(), "起始日期大于结束日期.不能保存..",
Toast.LENGTH_SHORT).show();
return false;
} else {
semesterService.updateBeginAndEndDataOfSemester(selectedSemester);
}
return true;
}
@Override
public void finishActionMode() {
EditSemesterBeginAndEndDateActivity.this.finish();
}
private class DateTableViewOnClickListener implements ClickListener {
private int year;
private int monthOfYear;
private int dayOfMonth;
public DateTableViewOnClickListener() {
this.initDate();
}
public void initDate() {
year = cal.get(Calendar.YEAR);
monthOfYear = cal.get(Calendar.MONTH);
dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
}
@Override
public void onClick(int index) {
new DatePickerDialog(getActivity(), new DatePickerDialogListener(
index), year, monthOfYear, dayOfMonth).show();
}
}
class DatePickerDialogListener implements OnDateSetListener {
private int index;
public DatePickerDialogListener(int index) {
this.index = index;
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
if (index == 0) {
setBeginDate(year, monthOfYear, dayOfMonth, index);
} else if (index == 1) {
setEndDate(year, monthOfYear, dayOfMonth, index);
}
}
}
}