Je construis une application de calendrier très simple pour me familiariser avec le MVP-framework introduit avec la version 2.1 de GWT.
Ce que je veux réaliser, c'est pouvoir basculer entre une liste de rendez-vous planifiés et une liste de l'heure disponible.
J'ai créé le a CalendarPlace, CalendarActivity, CalendarView et CalendarViewImpl. Je sais que pour accéder à un autre endroit que je qualifierais PlaceController.goTo (Place), donc dans mon application de calendrier je qualifierais:Comment répondre aux URL avec le framework MVP intégré de GWT?
clientFactory.getPlaceController.goTo(new CalendarPlace("freeTime");
L'URL serait index.html # CalendarPlace: Freetime pour la liste de temps libre ou
clientFactory.getPlaceController.goTo(new CalendarPlace("appointments");
pour la liste des rendez-vous planifiés. L'URL serait index.html # CalendarPlace: rendez-vous
Mais la question est où dois-je répondre aux différents jetons? Je suppose que le CalendarPlace serait le bon endroit, mais comment ferais-je cela?
Voici mon code source (j'ai pris la majeure partie du passe-partout du tutoriel here:
CalendarPlace:
public class CalendarPlace extends Place {
private String calendarName;
public CalendarPlace(String token) {
this.calendarName = token;
}
public String getCalendarName() {
return calendarName;
}
public static class Tokenizer implements PlaceTokenizer<CalendarPlace> {
@Override
public CalendarPlace getPlace(String token) {
return new CalendarPlace(token);
}
@Override
public String getToken(CalendarPlace place) {
return place.getCalendarName();
}
}
}
CalendarActivity:
public class CalendarActivity extends AbstractActivity
implements
CalendarView.Presenter {
private ClientFactory clientFactory;
private String name;
public CalendarActivity(CalendarPlace place, ClientFactory clientFactory) {
this.name = place.getCalendarName();
this.clientFactory = clientFactory;
}
@Override
public void goTo(Place place) {
clientFactory.getPlaceController().goTo(place);
}
@Override
public void start(AcceptsOneWidget containerWidget, EventBus eventBus) {
CalendarView calendarView = clientFactory.getCalendarView();
calendarView.setName(name);
calendarView.setPresenter(this);
containerWidget.setWidget(calendarView.asWidget());
}
}
CalendarViewImpl:
public class CalendarViewImpl extends Composite implements CalendarView {
private VerticalPanel content;
private String name;
private Presenter presenter;
private OptionBox optionBox;
public CalendarViewImpl() {
//optionBox is used for navigation
//optionBox is where I call PlaceController.goTo() from
optionBox=new OptionBox();
RootPanel.get("bluebar").add(optionBox);
content=new VerticalPanel();
this.initWidget(content);
}
@Override
public void setPresenter(Presenter listener) {
this.presenter=listener;
}
@Override
public void setName(String calendarName) {
this.name = calendarName;
}
public void displayFreeTime() {
//called from somewhere to display the free time
}
public void getAppointments() {
//called from somewhere to display the appointments
}
}
Merci beaucoup d'avoir clarifié cela pour moi. –