001 package net.minecraft.server.gui;
002
003 import cpw.mods.fml.relauncher.Side;
004 import cpw.mods.fml.relauncher.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 import net.minecraft.server.dedicated.DedicatedServer;
019
020 @SideOnly(Side.SERVER)
021 public 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 }