package org.zkoss.zktest.bind.basic;
import java.util.List;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.Init;
import org.zkoss.bind.annotation.NotifyChange;
public class BookCrudViewModel {
String message;
String confirmMessage;
boolean confirmWindowVisible;
Book selectedBook;
List<Book> bookList;
public String getMessage() {
return message;
}
public String getConfirmMessage() {
return confirmMessage;
}
public boolean isConfirmWindowVisible() {
return confirmWindowVisible;
}
public Book getSelectedBook() {
return selectedBook;
}
public void setSelectedBook(Book selectedBook) {
this.selectedBook = selectedBook;
}
public List<Book> getBookList() {
return bookList;
}
@Init
public void index() {
bookList = BookDataProvider.list();
selectedBook = bookList.size() > 0 ? bookList.get(0) : null;
}
@Command
@NotifyChange({ "message", "selectedBook", "bookList" })
public void save() {
if (selectedBook == null) {
throw new RuntimeException("selectedBook not found");
}
BookDataProvider.save(selectedBook);
bookList = BookDataProvider.list();
message = "save book " + selectedBook.getName();
}
@Command
@NotifyChange({ "confirmMessage", "confirmWindowVisible" })
public void delete() {
confirmMessage = "Do you want to delete Book " + selectedBook.name
+ "?";
confirmWindowVisible = true;
}
@Command
@NotifyChange({ "confirmMessage", "confirmWindowVisible","bookList","selectedBook" })
public void confirmDelete(@BindingParam("confirm") boolean confirm) {
if (confirm) {
if (selectedBook == null) {
throw new RuntimeException("selectedBook not found");
}
BookDataProvider.delete(selectedBook);// have to flush before list
bookList = BookDataProvider.list();
message = "Deleted book " + selectedBook.getName();
selectedBook = null;
}
confirmWindowVisible = false;
}
@Command
@NotifyChange({ "selectedBook" })
public void create() {
selectedBook = new Book("Name", "Author", "12345");
}
}