package ch.vorburger.uftam.sample.vaadin;
import java.util.Collection;
import com.vaadin.event.ItemClickEvent;
import ch.vorburger.appviewsnflows.dyn.Event;
import ch.vorburger.appviewsnflows.dyn.Flow;
import ch.vorburger.appviewsnflows.vaadin.AbstractPresenter;
import ch.vorburger.uftam.sample.model.domain.Customer;
import ch.vorburger.uftam.sample.model.domain.repository.CustomersRepository;
import ch.vorburger.uftam.sample.vaadin.views.CustomerOrdersView;
import ch.vorburger.uftam.sample.vaadin.views.CustomersListView;
import ch.vorburger.uftam.sample.vaadin.views.MainRootWindowView;
/**
* MVP Presenter.
*
* @author Michael Vorburger
*/
public class SampleAppPresenter extends AbstractPresenter {
MainRootWindowView mainView;
// public void showOrders(Customer customer) {
// CustomerOrdersView view = new CustomerOrdersView();
// view.setPresenter(this);
// view.setModel(customer);
// mainView.setMainView(view);
// }
// p.mainView = mainDecoView;
// mainDecoView.setPresenter(p);
// firstView.setPresenter(p);
@Override
protected Flow configureFlow() {
Flow flow = new Flow("main");
// TODO start should be strongly typed!
flow.onView(Flow.EmptyView.class).onEvent("start").goTo(CustomersListView.class);
// TODO Support CustomersListView.ItemClickedEvent instead of "itemClicked" !
flow.onView(CustomersListView.class).onEvent("itemClicked").goTo(CustomerOrdersView.class);
// TODO Following shouldn't here, but in an "Action" (remember to distinguish two types of
// Actions)
Collection<Customer> customers = CustomersRepository.getAFewCustomers();
// TODO How should the Flow get started, who should kick off 'start' (which shouldn't be
// String but a Class) ?
flow.onEvent(new Event("start", customers));
return flow;
}
}