package org.zkforge.zktodo2;
import static java.lang.System.out;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Textbox;
public class ZkToDoControllerV3 extends GenericSpringComposer {
private static final long serialVersionUID = 2560535692993939331L;
protected transient Textbox name;
protected transient Intbox priority;
protected transient Datebox date;
protected transient Listbox list;
public ZkToDoControllerV3(){
return;
}
@Resource(name="toDoModel")
protected transient ZkToDoModel toDoModel = null;
public ZkToDoModel getToDoModel() {
return toDoModel;
}
public void onClick$add(Event e) {
Date dateValue = date.getValue();
Integer priorityValue = priority.getValue();
String nameValue = name.getValue();
if( dateValue != null && priorityValue != null && nameValue != null ){
Reminder reminder = new Reminder();
reminder.setDate(date.getValue());
reminder.setName(name.getValue());
reminder.setPriority(priority.getValue());
this.toDoModel.persistEvent(reminder);
List<Reminder> reminders = this.toDoModel.findAll();
ListModel listModel = this.list.getModel();
ListModelList listModelList = (ListModelList)listModel;
listModelList.clear();
listModelList.addAll(reminders);
}
return;
}
public void onClick$update(Event e) {
Reminder selectedReminder = this.toDoModel.getSelectedReminder();
if( selectedReminder != null ){
ListModelList listModelList = (ListModelList)this.list.getModel();
try {
this.toDoModel.mergeEvent(selectedReminder);
} catch (EntityNotFoundException exception){
int index = list.getSelectedIndex();
listModelList.remove(index);
alert("Reminder "+selectedReminder.getName()+" has been deleted by another user.");
if( listModelList.size() > 0 ){
selectedReminder = (Reminder)listModelList.get(0);
list.setSelectedIndex(0);
name.setValue(selectedReminder.getName());
date.setValue(selectedReminder.getDate());
priority.setValue(selectedReminder.getPriority());
} else {
selectedReminder = null;
}
}
List<Reminder> reminders = toDoModel.findAll();
listModelList.clear();
listModelList.addAll(reminders);
}
}
public void onClick$delete(Event e) {
Reminder selectedReminder = this.toDoModel.getSelectedReminder();
if( null != selectedReminder ){
ListModel listModel = this.list.getModel();
ListModelList listModelList = (ListModelList)listModel;
int index = listModelList.indexOf(selectedReminder);
try {
this.toDoModel.deleteEvent(selectedReminder);
} catch (EntityNotFoundException exception ){
out.println("This is harmless as someone else has already deleted this item.");
}
listModelList.remove(selectedReminder);
if( index >= listModelList.size() ){
index = listModelList.size() - 1;
}
if( listModelList.size() > 0 ){
selectedReminder = (Reminder)listModelList.get(index);
list.setSelectedIndex(index);
name.setValue(selectedReminder.getName());
date.setValue(selectedReminder.getDate());
priority.setValue(selectedReminder.getPriority());
} else {
selectedReminder = null;
}
}
}
}