001package net.minecraft.server.gui;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import java.awt.BorderLayout;
006import java.awt.Component;
007import java.awt.Dimension;
008import java.util.logging.Logger;
009import javax.swing.JComponent;
010import javax.swing.JFrame;
011import javax.swing.JPanel;
012import javax.swing.JScrollPane;
013import javax.swing.JTextArea;
014import javax.swing.JTextField;
015import javax.swing.UIManager;
016import javax.swing.border.EtchedBorder;
017import javax.swing.border.TitledBorder;
018import net.minecraft.server.dedicated.DedicatedServer;
019
020@SideOnly(Side.SERVER)
021public class ServerGUI extends JComponent
022{
023    /** Reference to the logger. */
024    public static Logger logger = Logger.getLogger("Minecraft");
025
026    /** This is set to true after server GUI window has been initialized. */
027    private static boolean serverGuiInitialized = false;
028    private DedicatedServer serverInstance;
029
030    /**
031     * Sets up the server GUI
032     */
033    public static void initGUI(DedicatedServer par0DedicatedServer)
034    {
035        try
036        {
037            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
038        }
039        catch (Exception var3)
040        {
041            ;
042        }
043
044        ServerGUI var1 = new ServerGUI(par0DedicatedServer);
045        serverGuiInitialized = true;
046        JFrame var2 = new JFrame("Minecraft server");
047        var2.add(var1);
048        var2.pack();
049        var2.setLocationRelativeTo((Component)null);
050        var2.setVisible(true);
051        var2.addWindowListener(new ServerWindowAdapter(par0DedicatedServer));
052    }
053
054    public ServerGUI(DedicatedServer par1DedicatedServer)
055    {
056        this.serverInstance = par1DedicatedServer;
057        this.setPreferredSize(new Dimension(854, 480));
058        this.setLayout(new BorderLayout());
059
060        try
061        {
062            this.add(this.getLogComponent(), "Center");
063            this.add(this.getStatsComponent(), "West");
064        }
065        catch (Exception var3)
066        {
067            var3.printStackTrace();
068        }
069    }
070
071    /**
072     * Returns a new JPanel with a new GuiStatsComponent inside.
073     */
074    private JComponent getStatsComponent()
075    {
076        JPanel var1 = new JPanel(new BorderLayout());
077        var1.add(new GuiStatsComponent(this.serverInstance), "North");
078        var1.add(this.getPlayerListComponent(), "Center");
079        var1.setBorder(new TitledBorder(new EtchedBorder(), "Stats"));
080        return var1;
081    }
082
083    /**
084     * Returns a new JScrollPane with a new PlayerListBox inside.
085     */
086    private JComponent getPlayerListComponent()
087    {
088        PlayerListBox var1 = new PlayerListBox(this.serverInstance);
089        JScrollPane var2 = new JScrollPane(var1, 22, 30);
090        var2.setBorder(new TitledBorder(new EtchedBorder(), "Players"));
091        return var2;
092    }
093
094    /**
095     * Returns a new JPanel with a new GuiStatsComponent inside.
096     */
097    private JComponent getLogComponent()
098    {
099        JPanel var1 = new JPanel(new BorderLayout());
100        JTextArea var2 = new JTextArea();
101        logger.addHandler(new GuiLogOutputHandler(var2));
102        JScrollPane var3 = new JScrollPane(var2, 22, 30);
103        var2.setEditable(false);
104        JTextField var4 = new JTextField();
105        var4.addActionListener(new ServerGuiCommandListener(this, var4));
106        var2.addFocusListener(new ServerGuiFocusAdapter(this));
107        var1.add(var3, "Center");
108        var1.add(var4, "South");
109        var1.setBorder(new TitledBorder(new EtchedBorder(), "Log and chat"));
110        return var1;
111    }
112
113    static DedicatedServer getDedicatedServer(ServerGUI par0ServerGUI)
114    {
115        return par0ServerGUI.serverInstance;
116    }
117}