package cryodex.modules.destiny;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import cryodex.CryodexController;
import cryodex.CryodexController.Modules;
import cryodex.MenuBar;
import cryodex.Player;
import cryodex.modules.Menu;
import cryodex.modules.Module;
import cryodex.modules.ModulePlayer;
import cryodex.modules.RegistrationPanel;
import cryodex.modules.Tournament;
import cryodex.modules.destiny.DestinyTournamentCreationWizard.WizardOptions;
import cryodex.xml.XMLUtils;
import cryodex.xml.XMLUtils.Element;
public class DestinyModule implements Module {
private static DestinyModule module;
public static DestinyModule getInstance() {
if (module == null) {
module = new DestinyModule();
}
return module;
}
private JCheckBoxMenuItem viewMenuItem;
private DestinyRegistrationPanel registrationPanel;
private DestinyMenu menu;
private DestinyOptions options;
private boolean isEnabled = true;
private DestinyModule() {
}
@Override
public Menu getMenu() {
if (menu == null) {
menu = new DestinyMenu();
}
return menu;
}
@Override
public RegistrationPanel getRegistration() {
if (registrationPanel == null) {
registrationPanel = new DestinyRegistrationPanel();
}
return registrationPanel;
}
@Override
public void setModuleEnabled(Boolean enabled) {
isEnabled = enabled;
getRegistration().getPanel().setVisible(enabled);
getMenu().getMenu().setVisible(enabled);
}
@Override
public boolean isModuleEnabled() {
return isEnabled;
}
public static void createTournament() {
JDialog wizard = new DestinyTournamentCreationWizard();
wizard.setVisible(true);
}
public static void makeTournament(WizardOptions wizardOptions) {
DestinyTournament tournament = new DestinyTournament(wizardOptions.getName(),
wizardOptions.getPlayerList(),
wizardOptions.getInitialSeedingEnum(),
wizardOptions.isSingleElimination());
CryodexController.registerTournament(tournament);
tournament.startTournament();
MenuBar.getInstance().resetMenuBar();
CryodexController.saveData();
}
public DestinyOptions getOptions() {
if (options == null) {
options = new DestinyOptions();
}
return options;
}
@Override
public StringBuilder appendXML(StringBuilder sb) {
XMLUtils.appendXMLObject(sb, "OPTIONS", getOptions());
XMLUtils.appendObject(sb, "NAME", Modules.DESTINY.getName());
return sb;
}
@Override
public ModulePlayer loadPlayer(Player p, Element element) {
return new DestinyPlayer(p, element);
}
@Override
public Tournament loadTournament(Element element) {
return new DestinyTournament(element);
}
@Override
public void loadModuleData(Element element) {
options = new DestinyOptions(element.getChild("OPTIONS"));
}
@Override
public ModulePlayer getNewModulePlayer(Player player) {
return new DestinyPlayer(player);
}
@Override
public JCheckBoxMenuItem getViewMenuItem() {
return viewMenuItem;
}
@Override
public void setViewMenuItem(JCheckBoxMenuItem viewMenuItem) {
this.viewMenuItem = viewMenuItem;
}
}