    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}