package net.minecraft.server.gui;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.util.logging.Logger;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import net.minecraft.server.dedicated.DedicatedServer;
@SideOnly(Side.SERVER)
public class ServerGUI extends JComponent
{
/** Reference to the logger. */
public static Logger logger = Logger.getLogger("Minecraft");
/** This is set to true after server GUI window has been initialized. */
private static boolean serverGuiInitialized = false;
private DedicatedServer serverInstance;
/**
* Sets up the server GUI
*/
public static void initGUI(DedicatedServer par0DedicatedServer)
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception var3)
{
;
}
ServerGUI var1 = new ServerGUI(par0DedicatedServer);
serverGuiInitialized = true;
JFrame var2 = new JFrame("Minecraft server");
var2.add(var1);
var2.pack();
var2.setLocationRelativeTo((Component)null);
var2.setVisible(true);
var2.addWindowListener(new ServerWindowAdapter(par0DedicatedServer));
}
public ServerGUI(DedicatedServer par1DedicatedServer)
{
this.serverInstance = par1DedicatedServer;
this.setPreferredSize(new Dimension(854, 480));
this.setLayout(new BorderLayout());
try
{
this.add(this.getLogComponent(), "Center");
this.add(this.getStatsComponent(), "West");
}
catch (Exception var3)
{
var3.printStackTrace();
}
}
/**
* Returns a new JPanel with a new GuiStatsComponent inside.
*/
private JComponent getStatsComponent()
{
JPanel var1 = new JPanel(new BorderLayout());
var1.add(new GuiStatsComponent(this.serverInstance), "North");
var1.add(this.getPlayerListComponent(), "Center");
var1.setBorder(new TitledBorder(new EtchedBorder(), "Stats"));
return var1;
}
/**
* Returns a new JScrollPane with a new PlayerListBox inside.
*/
private JComponent getPlayerListComponent()
{
PlayerListBox var1 = new PlayerListBox(this.serverInstance);
JScrollPane var2 = new JScrollPane(var1, 22, 30);
var2.setBorder(new TitledBorder(new EtchedBorder(), "Players"));
return var2;
}
/**
* Returns a new JPanel with a new GuiStatsComponent inside.
*/
private JComponent getLogComponent()
{
JPanel var1 = new JPanel(new BorderLayout());
JTextArea var2 = new JTextArea();
logger.addHandler(new GuiLogOutputHandler(var2));
JScrollPane var3 = new JScrollPane(var2, 22, 30);
var2.setEditable(false);
JTextField var4 = new JTextField();
var4.addActionListener(new ServerGuiCommandListener(this, var4));
var2.addFocusListener(new ServerGuiFocusAdapter(this));
var1.add(var3, "Center");
var1.add(var4, "South");
var1.setBorder(new TitledBorder(new EtchedBorder(), "Log and chat"));
return var1;
}
static DedicatedServer getDedicatedServer(ServerGUI par0ServerGUI)
{
return par0ServerGUI.serverInstance;
}
}