package cryodex;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import cryodex.widget.RegisterPanel;
import cryodex.widget.SplashPanel;
import cryodex.widget.TournamentTabbedPane;
/**
* Main class that creates a singleton of the GUI which everything else is built
* on.
*
* @author cbrown
*
*/
public class Main extends JFrame {
public static final String version = "4.6.6";
public static final long delay = 3000;
private static final long serialVersionUID = 1L;
private static Main instance = null;
public static Main getInstance() {
if (instance == null) {
instance = new Main();
instance.setSize(300, 700);
CryodexController.loadData(null);
instance.getRegisterPanel().addPlayers(
CryodexController.getPlayers());
CryodexController.isLoading = true;
MenuBar.getInstance().resetMenuBar();
CryodexController.isLoading = false;
}
return instance;
}
private JPanel contentPane;
private JPanel registerPane;
private RegisterPanel registerPanel;
private TournamentTabbedPane multipleTournamentTabbedPane;
private JPanel tournamentPane;
private JPanel singleTournamentPane;
private JPanel warningPane;
private JLabel warningLabel;
private Main() {
super("Cryodex - Version " + version);
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
Thread.sleep(delay - 1000);
} catch (Exception e) {
e.printStackTrace();
}
getContentFlowPane().add(getWarningPane(), BorderLayout.SOUTH);
getContentFlowPane().add(getRegisterPane(), BorderLayout.WEST);
getContentFlowPane().add(getTournamentPane(), BorderLayout.CENTER);
this.add(getContentFlowPane());
registerPanel.registerButton();
this.setJMenuBar(MenuBar.getInstance());
}
public JPanel getContentFlowPane() {
if (contentPane == null) {
contentPane = new JPanel(new BorderLayout());
}
return contentPane;
}
public RegisterPanel getRegisterPanel() {
if (registerPanel == null) {
registerPanel = new RegisterPanel();
}
return registerPanel;
}
public JPanel getRegisterPane() {
if (registerPane == null) {
registerPane = new JPanel(new BorderLayout());
registerPane.add(getRegisterPanel(), BorderLayout.CENTER);
}
return registerPane;
}
public JPanel getTournamentPane() {
if (tournamentPane == null) {
tournamentPane = new JPanel(new BorderLayout());
}
return tournamentPane;
}
public JPanel getSingleTournamentPane() {
if (singleTournamentPane == null) {
singleTournamentPane = new JPanel(new BorderLayout());
}
return singleTournamentPane;
}
public JTabbedPane getMultipleTournamentTabbedPane() {
if (multipleTournamentTabbedPane == null) {
multipleTournamentTabbedPane = new TournamentTabbedPane();
}
return multipleTournamentTabbedPane;
}
public void setMultiple(boolean isMultiple) {
getTournamentPane().removeAll();
if (isMultiple) {
getTournamentPane().add(getMultipleTournamentTabbedPane(),
BorderLayout.CENTER);
} else {
getTournamentPane().add(getSingleTournamentPane(),
BorderLayout.CENTER);
}
getTournamentPane().validate();
getTournamentPane().repaint();
}
public JPanel getWarningPane() {
if(warningPane == null){
warningPane = new JPanel();
warningPane.setVisible(false);
warningLabel = new JLabel();
warningPane.add(warningLabel);
warningPane.setBackground(Color.orange);
warningLabel.setBackground(Color.orange);
Font font = new Font("Courier", Font.BOLD,15);
warningLabel.setFont(font);
}
return warningPane;
}
public void setError(String error){
if(error == null || error.isEmpty()){
warningLabel.setText("");
getWarningPane().setVisible(false);
} else {
warningLabel.setText(error);
getWarningPane().setVisible(true);
}
}
public static void main(String[] args) {
new SplashPanel();
Main.getInstance().setVisible(true);
Main.getInstance().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}