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
025 /** This is set to true after server GUI window has been initialized. */
026 private static boolean serverGuiInitialized = false;
027 private DedicatedServer serverInstance;
028
029 /**
030 * Sets up the server GUI
031 */
032 public static void initGUI(DedicatedServer par0DedicatedServer)
033 {
034 try
035 {
036 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
037 }
038 catch (Exception var3)
039 {
040 ;
041 }
042
043 ServerGUI var1 = new ServerGUI(par0DedicatedServer);
044 serverGuiInitialized = true;
045 JFrame var2 = new JFrame("Minecraft server");
046 var2.add(var1);
047 var2.pack();
048 var2.setLocationRelativeTo((Component)null);
049 var2.setVisible(true);
050 var2.addWindowListener(new ServerWindowAdapter(par0DedicatedServer));
051 }
052
053 public ServerGUI(DedicatedServer par1DedicatedServer)
054 {
055 this.serverInstance = par1DedicatedServer;
056 this.setPreferredSize(new Dimension(854, 480));
057 this.setLayout(new BorderLayout());
058
059 try
060 {
061 this.add(this.getLogComponent(), "Center");
062 this.add(this.getStatsComponent(), "West");
063 }
064 catch (Exception var3)
065 {
066 var3.printStackTrace();
067 }
068 }
069
070 /**
071 * Returns a new JPanel with a new GuiStatsComponent inside.
072 */
073 private JComponent getStatsComponent()
074 {
075 JPanel var1 = new JPanel(new BorderLayout());
076 var1.add(new GuiStatsComponent(this.serverInstance), "North");
077 var1.add(this.getPlayerListComponent(), "Center");
078 var1.setBorder(new TitledBorder(new EtchedBorder(), "Stats"));
079 return var1;
080 }
081
082 /**
083 * Returns a new JScrollPane with a new PlayerListBox inside.
084 */
085 private JComponent getPlayerListComponent()
086 {
087 PlayerListBox var1 = new PlayerListBox(this.serverInstance);
088 JScrollPane var2 = new JScrollPane(var1, 22, 30);
089 var2.setBorder(new TitledBorder(new EtchedBorder(), "Players"));
090 return var2;
091 }
092
093 /**
094 * Returns a new JPanel with a new GuiStatsComponent inside.
095 */
096 private JComponent getLogComponent()
097 {
098 JPanel var1 = new JPanel(new BorderLayout());
099 JTextArea var2 = new JTextArea();
100 logger.addHandler(new GuiLogOutputHandler(var2));
101 JScrollPane var3 = new JScrollPane(var2, 22, 30);
102 var2.setEditable(false);
103 JTextField var4 = new JTextField();
104 var4.addActionListener(new ServerGuiCommandListener(this, var4));
105 var2.addFocusListener(new ServerGuiFocusAdapter(this));
106 var1.add(var3, "Center");
107 var1.add(var4, "South");
108 var1.setBorder(new TitledBorder(new EtchedBorder(), "Log and chat"));
109 return var1;
110 }
111
112 static DedicatedServer getDedicatedServer(ServerGUI par0ServerGUI)
113 {
114 return par0ServerGUI.serverInstance;
115 }
116 }