001    /*
002     * HumanBotPanel.java
003     *
004     * Created on February 22, 2002, 12:42 PM
005     */
006    
007    package edu.tamu.gamebots.humanbot;
008    
009    import edu.isi.gamebots.client.*;
010    import edu.tamu.gamebots.ui.*;
011    import us.ca.la.anm.util.io.*;
012    import javax.swing.*;
013    import java.util.*;
014    import java.net.*;
015    
016    /**
017     * <p>
018     * The User interface portion of the HumanBot.
019     * </p>
020     * @author Ryan Rozich (rozich@tamu.edu)
021     */
022    public class HumanBotPanel extends javax.swing.JPanel {
023      
024      HumanBot bot;
025      boolean connected = false;
026      
027      /**
028       * <p>
029       * Creates new form HumanBotPanel
030       * </p>
031       * @param hBot The HumanBot that this interface is for.
032       */
033      public HumanBotPanel(HumanBot hBot) {
034        bot = hBot;
035        initComponents();
036        bot.setSyncMessagesTextArea((UnrealMessageTextArea)serverMessagesField);
037        bot.setASyncMessagesTextArea((UnrealMessageTextArea)asyncMessagesField);
038        bot.setCurrentBotStatePanel((CurrentBotStatePanel)statePanel);
039        bot.addJTableForMessages(asyncMessagesTable);
040      }
041      
042      /** 
043       * <p>
044       * This method is called from within the constructor to
045       * initialize the form.
046       * WARNING: Do NOT modify this code. The content of this method is
047       * always regenerated by the Form Editor.
048       * </p>
049       */
050      private void initComponents() {//GEN-BEGIN:initComponents
051        mainPanel = new javax.swing.JPanel();
052        jTabbedPane1 = new javax.swing.JTabbedPane();
053        messagesPanel = new javax.swing.JPanel();
054        jScrollPane1 = new javax.swing.JScrollPane();
055        serverMessagesField = new UnrealMessageTextArea();
056        jButton1 = new javax.swing.JButton();
057        messageTablePanel = new javax.swing.JPanel();
058        jScrollPane3 = new javax.swing.JScrollPane();
059        asyncMessagesTable = new javax.swing.JTable();
060        asyncMessagesTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
061        tableButtonPanel = new javax.swing.JPanel();
062        pauseTableUpdateButton = new javax.swing.JButton();
063        shootButton = new javax.swing.JButton();
064        runToButton = new javax.swing.JButton();
065        turnToButton = new javax.swing.JButton();
066        rotateLeftButton = new javax.swing.JButton();
067        rotateRightButton = new javax.swing.JButton();
068        jPanel1 = new javax.swing.JPanel();
069        jScrollPane2 = new javax.swing.JScrollPane();
070        asyncMessagesField = new UnrealMessageTextArea();
071        bottomPanel = new javax.swing.JPanel();
072        inputPanel = new BotMessagesPanel(bot);
073        statePanel = new CurrentBotStatePanel();
074    
075        setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.Y_AXIS));
076    
077        mainPanel.setLayout(new javax.swing.BoxLayout(mainPanel, javax.swing.BoxLayout.Y_AXIS));
078    
079        messagesPanel.setLayout(new javax.swing.BoxLayout(messagesPanel, javax.swing.BoxLayout.Y_AXIS));
080    
081        jScrollPane1.setPreferredSize(new java.awt.Dimension(400, 200));
082        jScrollPane1.setViewportView(serverMessagesField);
083    
084        messagesPanel.add(jScrollPane1);
085    
086        jButton1.setText("Toggle Pause");
087        jButton1.setMaximumSize(new java.awt.Dimension(4000, 27));
088        jButton1.addActionListener(new java.awt.event.ActionListener() {
089          public void actionPerformed(java.awt.event.ActionEvent evt) {
090            jButton1ActionPerformed(evt);
091          }
092        });
093    
094        messagesPanel.add(jButton1);
095    
096        jTabbedPane1.addTab("Sync Messages", messagesPanel);
097    
098        messageTablePanel.setLayout(new javax.swing.BoxLayout(messageTablePanel, javax.swing.BoxLayout.Y_AXIS));
099    
100        jScrollPane3.setViewportView(asyncMessagesTable);
101    
102        messageTablePanel.add(jScrollPane3);
103    
104        tableButtonPanel.setLayout(new java.awt.GridLayout(1, 0));
105    
106        pauseTableUpdateButton.setText("Update");
107        pauseTableUpdateButton.addActionListener(new java.awt.event.ActionListener() {
108          public void actionPerformed(java.awt.event.ActionEvent evt) {
109            pauseTableUpdateButtonActionPerformed(evt);
110          }
111        });
112    
113        tableButtonPanel.add(pauseTableUpdateButton);
114    
115        shootButton.setText("Shoot");
116        shootButton.addActionListener(new java.awt.event.ActionListener() {
117          public void actionPerformed(java.awt.event.ActionEvent evt) {
118            shootButtonActionPerformed(evt);
119          }
120        });
121    
122        tableButtonPanel.add(shootButton);
123    
124        runToButton.setText("RunTo");
125        runToButton.addActionListener(new java.awt.event.ActionListener() {
126          public void actionPerformed(java.awt.event.ActionEvent evt) {
127            runToButtonActionPerformed(evt);
128          }
129        });
130    
131        tableButtonPanel.add(runToButton);
132    
133        turnToButton.setText("TurnTo");
134        turnToButton.addActionListener(new java.awt.event.ActionListener() {
135          public void actionPerformed(java.awt.event.ActionEvent evt) {
136            turnToButtonActionPerformed(evt);
137          }
138        });
139    
140        tableButtonPanel.add(turnToButton);
141    
142        rotateLeftButton.setText("Rotate Left");
143        rotateLeftButton.addActionListener(new java.awt.event.ActionListener() {
144          public void actionPerformed(java.awt.event.ActionEvent evt) {
145            rotateLeftButtonActionPerformed(evt);
146          }
147        });
148    
149        tableButtonPanel.add(rotateLeftButton);
150    
151        rotateRightButton.setText("Rotate Right");
152        rotateRightButton.addActionListener(new java.awt.event.ActionListener() {
153          public void actionPerformed(java.awt.event.ActionEvent evt) {
154            rotateRightButtonActionPerformed(evt);
155          }
156        });
157    
158        tableButtonPanel.add(rotateRightButton);
159    
160        messageTablePanel.add(tableButtonPanel);
161    
162        jTabbedPane1.addTab("Visible Points", messageTablePanel);
163    
164        jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.X_AXIS));
165    
166        jScrollPane2.setViewportView(asyncMessagesField);
167    
168        jPanel1.add(jScrollPane2);
169    
170        jTabbedPane1.addTab("ASync Messages", jPanel1);
171    
172        mainPanel.add(jTabbedPane1);
173    
174        bottomPanel.setLayout(new javax.swing.BoxLayout(bottomPanel, javax.swing.BoxLayout.Y_AXIS));
175    
176        bottomPanel.setMaximumSize(new java.awt.Dimension(99999999, 50));
177        inputPanel.setLayout(new javax.swing.BoxLayout(inputPanel, javax.swing.BoxLayout.X_AXIS));
178    
179        bottomPanel.add(inputPanel);
180    
181        mainPanel.add(bottomPanel);
182    
183        add(mainPanel);
184    
185        statePanel.setMaximumSize(new java.awt.Dimension(32767, 20));
186        add(statePanel);
187    
188      }//GEN-END:initComponents
189    
190      private void rotateLeftButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rotateLeftButtonActionPerformed
191        bot.rotate(-6000);
192      }//GEN-LAST:event_rotateLeftButtonActionPerformed
193    
194      private void rotateRightButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rotateRightButtonActionPerformed
195        bot.rotate(6000);
196      }//GEN-LAST:event_rotateRightButtonActionPerformed
197      
198      private void turnToButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_turnToButtonActionPerformed
199        int selectedRow = asyncMessagesTable.getSelectedRow();
200        if(asyncMessagesTable.getSelectedRow() != -1){
201          String coord = (String)asyncMessagesTable.getValueAt(selectedRow, 2);
202          bot.turnToLoc(coord);
203        }
204      }//GEN-LAST:event_turnToButtonActionPerformed
205      
206      private void runToButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_runToButtonActionPerformed
207        int selectedRow = asyncMessagesTable.getSelectedRow();
208        if(asyncMessagesTable.getSelectedRow() != -1){
209          String id = (String)asyncMessagesTable.getValueAt(selectedRow, 1);
210          bot.runTo(id);
211        }
212      }//GEN-LAST:event_runToButtonActionPerformed
213      
214      private void shootButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_shootButtonActionPerformed
215        int selectedRow = asyncMessagesTable.getSelectedRow();
216        if(asyncMessagesTable.getSelectedRow() != -1){
217          String id = (String)asyncMessagesTable.getValueAt(selectedRow, 1);
218          bot.shoot(id, false);
219        }
220      }//GEN-LAST:event_shootButtonActionPerformed
221      
222      private void pauseTableUpdateButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pauseTableUpdateButtonActionPerformed
223        bot.setUpdateTable();
224      }//GEN-LAST:event_pauseTableUpdateButtonActionPerformed
225      
226      private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
227        ((UnrealMessageTextArea)serverMessagesField).togglePause();
228      }//GEN-LAST:event_jButton1ActionPerformed
229      
230      
231      // Variables declaration - do not modify//GEN-BEGIN:variables
232      private javax.swing.JPanel messageTablePanel;
233      private javax.swing.JButton runToButton;
234      private javax.swing.JPanel jPanel1;
235      private javax.swing.JButton jButton1;
236      private javax.swing.JScrollPane jScrollPane3;
237      private javax.swing.JPanel statePanel;
238      private javax.swing.JScrollPane jScrollPane2;
239      private javax.swing.JButton pauseTableUpdateButton;
240      private javax.swing.JTextPane asyncMessagesField;
241      private javax.swing.JScrollPane jScrollPane1;
242      private javax.swing.JButton shootButton;
243      private javax.swing.JButton turnToButton;
244      private javax.swing.JPanel inputPanel;
245      private javax.swing.JPanel bottomPanel;
246      private javax.swing.JPanel messagesPanel;
247      private javax.swing.JButton rotateLeftButton;
248      private javax.swing.JButton rotateRightButton;
249      private javax.swing.JTabbedPane jTabbedPane1;
250      private javax.swing.JTextPane serverMessagesField;
251      private javax.swing.JPanel mainPanel;
252      private javax.swing.JTable asyncMessagesTable;
253      private javax.swing.JPanel tableButtonPanel;
254      // End of variables declaration//GEN-END:variables
255      
256    }