package com.github.donkirkby.vograbulary.client;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.HasWidgets;
public class AppController
implements ValueChangeHandler<String>, VograbularyPresenter.NavigationListener {
private HasWidgets container;
private GwtPreferences preferences = new GwtPreferences();
public AppController() {
History.addValueChangeHandler(this);
}
@Override
public void onValueChange(ValueChangeEvent<String> event) {
VograbularyPresenter presenter;
if (event.getValue().equals(RussianDollsPresenter.HISTORY_TOKEN)) {
presenter = new RussianDollsPresenter();
}
else if (event.getValue().equals(UltraghostPresenter.HISTORY_TOKEN)) {
presenter = new StudentChooserPresenter(preferences);
}
else if (event.getValue().equals(UltraghostPresenter.HISTORY_TOKEN_HYPER)) {
presenter = new StudentChooserPresenter(preferences).setHyperghost(true);
}
else if (event.getValue().equals(StudentEditorPresenter.HISTORY_TOKEN)) {
presenter = new StudentEditorPresenter(preferences);
}
else if (event.getValue().equals(BacronymsPresenter.HISTORY_TOKEN)) {
presenter = new BacronymsPresenter();
}
else {
presenter = new MainPresenter(preferences);
}
showPresenter(presenter);
}
public void go(HasWidgets container) {
this.container = container;
History.newItem(null); //clear the history so a change event gets fired
History.newItem(MainPresenter.HISTORY_TOKEN);
}
@Override
public void showPresenter(VograbularyPresenter presenter) {
presenter.setNavigationListener(this);
this.container.clear();
this.container.add(presenter);
}
@Override
public void showPresenter(
VograbularyPresenter presenter,
String historyToken) {
boolean issueEvent = false;
History.newItem(historyToken, issueEvent);
showPresenter(presenter);
}
}