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