ApplicationController.java
package org.microcol.gui;
import org.microcol.gui.event.GameController;
import org.microcol.gui.event.GameFinishedController;
import com.google.common.base.Preconditions;
import com.google.inject.Inject;
/**
* Control application state. It start or load new game. It control content of
* main application screen.
*/
public class ApplicationController {
private final MainFramePresenter mainFramePresenter;
private final GameController gameController;
@Inject
public ApplicationController(final MainFramePresenter mainFramePresenter, final GameController gameController,
final GameFinishedController gameFinishedController) {
this.mainFramePresenter = Preconditions.checkNotNull(mainFramePresenter);
this.gameController = Preconditions.checkNotNull(gameController);
gameFinishedController.addListener(event -> gameFinished());
}
public void startNewGame() {
gameController.newGame();
mainFramePresenter.showPanel(MainFramePresenter.MAIN_GAME_PANEL);
}
private void gameFinished() {
mainFramePresenter.showPanel(MainFramePresenter.START_PANEL);
}
}