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 }