package net.demilich.metastone.gui.main;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.Node;
import javafx.scene.layout.Pane;
import net.demilich.metastone.GameNotification;
import net.demilich.metastone.gui.battleofdecks.BattleOfDecksMediator;
import net.demilich.metastone.gui.deckbuilder.DeckBuilderMediator;
import net.demilich.metastone.gui.mainmenu.MainMenuMediator;
import net.demilich.metastone.gui.playmode.PlayModeMediator;
import net.demilich.metastone.gui.playmode.config.PlayModeConfigMediator;
import net.demilich.metastone.gui.sandboxmode.SandboxModeMediator;
import net.demilich.metastone.gui.simulationmode.SimulationMediator;
import net.demilich.metastone.gui.trainingmode.TrainingModeMediator;
import net.demilich.nittygrittymvc.Mediator;
import net.demilich.nittygrittymvc.interfaces.INotification;
public class ApplicationMediator extends Mediator<GameNotification> {
public static final String NAME = "ApplicationMediator";
private Pane root;
public ApplicationMediator() {
super(NAME);
}
@Override
public void handleNotification(final INotification<GameNotification> notification) {
switch (notification.getId()) {
case CANVAS_CREATED:
root = (Pane) notification.getBody();
break;
case SHOW_VIEW:
final Node view = (Node) notification.getBody();
root.getChildren().clear();
root.getChildren().add(view);
break;
case MAIN_MENU:
removeOtherViews();
getFacade().registerMediator(new MainMenuMediator());
break;
default:
break;
}
}
@Override
public List<GameNotification> listNotificationInterests() {
List<GameNotification> notificationInterests = new ArrayList<GameNotification>();
notificationInterests.add(GameNotification.CANVAS_CREATED);
notificationInterests.add(GameNotification.SHOW_VIEW);
notificationInterests.add(GameNotification.MAIN_MENU);
notificationInterests.add(GameNotification.CARD_PARSE_ERROR);
return notificationInterests;
}
private void removeOtherViews() {
getFacade().removeMediator(PlayModeMediator.NAME);
getFacade().removeMediator(PlayModeConfigMediator.NAME);
getFacade().removeMediator(DeckBuilderMediator.NAME);
getFacade().removeMediator(SimulationMediator.NAME);
getFacade().removeMediator(TrainingModeMediator.NAME);
getFacade().removeMediator(SandboxModeMediator.NAME);
getFacade().removeMediator(BattleOfDecksMediator.NAME);
}
}