001 package org.server; 002 003 import java.util.*; 004 import java.io.*; 005 import java.net.*; 006 import java.awt.*; 007 import java.awt.event.*; 008 import javax.swing.*; 009 import javax.swing.event.*; 010 import org.server.motion.*; 011 012 public class DummyServerGUI extends JPanel { 013 014 private JPanel state_panel_; 015 private JPanel player_panel_; 016 private JTextArea log_area_; 017 private DummyServer server_; 018 private SoccerField field_; 019 private JComboBox motion_simulator_list_; 020 021 public DummyServerGUI(DummyServer server) { 022 server_ = server; 023 player_panel_ = new JPanel(); 024 player_panel_.setPreferredSize(new Dimension(200, 200)); 025 player_panel_.setLayout(new BoxLayout(player_panel_, BoxLayout.Y_AXIS)); 026 027 motion_simulator_list_ = new JComboBox(new String[]{"None", "org.server.motion.SimpleMotionSimulator"}); 028 motion_simulator_list_.setEditable(true); 029 motion_simulator_list_.addActionListener(new ActionListener(){ 030 public void actionPerformed(ActionEvent e) { 031 JComboBox c = (JComboBox)e.getSource(); 032 String item = (String)c.getSelectedItem(); 033 try{ 034 if("None".equals(item)) { 035 server_.setMotionSimulator(null); 036 } else { 037 server_.setMotionSimulator((MotionSimulator)(Class.forName(item).newInstance())); 038 } 039 }catch(Exception exc){ 040 exc.printStackTrace(); 041 } 042 } 043 }); 044 045 JPanel control_panel_ = new JPanel(); 046 control_panel_.setLayout(new BoxLayout(control_panel_, BoxLayout.Y_AXIS)); 047 control_panel_.add(motion_simulator_list_); 048 049 state_panel_ = new JPanel(); 050 state_panel_.setLayout(new BoxLayout(state_panel_, BoxLayout.Y_AXIS)); 051 state_panel_.add(player_panel_); 052 053 field_ = new SoccerField(server); 054 field_.createAndShowGUI(); 055 056 server_.addDummyServerListener(new DummyServerListener(){ 057 public void connectionDetected(InetSocketAddress address) { 058 player_panel_.add(new JLabel(address.toString())); 059 player_panel_.revalidate(); 060 alert(address); 061 } 062 public void failedToConnect(InetSocketAddress address, String message) { 063 alert(address+","+message); 064 } 065 public void update() { 066 field_.update(); 067 } 068 public void log(String message) { 069 log_area_.append(message+"\n"); 070 log_area_.setCaretPosition(log_area_.getDocument().getLength()); 071 } 072 }); 073 log_area_ = new JTextArea(); 074 setLayout(new BorderLayout()); 075 add(control_panel_, BorderLayout.NORTH); 076 add(state_panel_, BorderLayout.CENTER); 077 JScrollPane sp = new JScrollPane(log_area_); 078 sp.setPreferredSize(new Dimension(100, 100)); 079 add(sp, BorderLayout.SOUTH); 080 081 JFrame frame = new JFrame("Dummy Server"); 082 frame.setContentPane(this); 083 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 084 frame.setSize(500, 500); 085 frame.setVisible(true); 086 } 087 088 public static void alert(Object message) { 089 System.out.println(message); 090 // javax.swing.JOptionPane.showMessageDialog(null, message); 091 } 092 }