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 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 { /** 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 exception) { ; } ServerGUI servergui = new ServerGUI(par0DedicatedServer); serverGuiInitialized = true; JFrame jframe = new JFrame("Minecraft server"); jframe.add(servergui); jframe.pack(); jframe.setLocationRelativeTo((Component)null); jframe.setVisible(true); jframe.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 exception) { exception.printStackTrace(); } } /** * Returns a new JPanel with a new GuiStatsComponent inside. */ private JComponent getStatsComponent() { JPanel jpanel = new JPanel(new BorderLayout()); jpanel.add(new GuiStatsComponent(this.serverInstance), "North"); jpanel.add(this.getPlayerListComponent(), "Center"); jpanel.setBorder(new TitledBorder(new EtchedBorder(), "Stats")); return jpanel; } /** * Returns a new JScrollPane with a new PlayerListBox inside. */ private JComponent getPlayerListComponent() { PlayerListBox playerlistbox = new PlayerListBox(this.serverInstance); JScrollPane jscrollpane = new JScrollPane(playerlistbox, 22, 30); jscrollpane.setBorder(new TitledBorder(new EtchedBorder(), "Players")); return jscrollpane; } /** * Returns a new JPanel with a new GuiStatsComponent inside. */ private JComponent getLogComponent() { JPanel jpanel = new JPanel(new BorderLayout()); JTextArea jtextarea = new JTextArea(); this.serverInstance.getLogAgent().getServerLogger().addHandler(new GuiLogOutputHandler(jtextarea)); JScrollPane jscrollpane = new JScrollPane(jtextarea, 22, 30); jtextarea.setEditable(false); JTextField jtextfield = new JTextField(); jtextfield.addActionListener(new ServerGuiCommandListener(this, jtextfield)); jtextarea.addFocusListener(new ServerGuiFocusAdapter(this)); jpanel.add(jscrollpane, "Center"); jpanel.add(jtextfield, "South"); jpanel.setBorder(new TitledBorder(new EtchedBorder(), "Log and chat")); return jpanel; } static DedicatedServer getDedicatedServer(ServerGUI par0ServerGUI) { return par0ServerGUI.serverInstance; } }