Source code: plugins/CsBeagle/ServerInfoDlg.java
1 /*
2 * ServerInfoDlg.java
3 *
4 * Created on October 26, 2002, 6:49 PM
5 */
6
7 package plugins.CsBeagle;
8
9 import java.awt.*;
10 import java.awt.event.*;
11 import javax.swing.border.*;
12 import javax.swing.*;
13 import java.util.Vector;
14 import javax.swing.JTable;
15 import javax.swing.table.AbstractTableModel;
16 import javax.swing.table.TableColumn;
17 import javax.swing.JPopupMenu;
18 import javax.swing.JMenu;
19 import javax.swing.JMenuItem;
20 import dexter.property.*;
21 import dexter.swingExtensions.sortedTable.*;
22 /**
23 *
24 * @author Tobias Riemer
25 */
26 public class ServerInfoDlg extends javax.swing.JFrame {
27
28 protected JPopupMenu popup = new JPopupMenu();
29 protected Server server;
30 protected Property pBuddies;
31 protected PlayerTableModel playerTableModel = new PlayerTableModel();
32 protected JSortableTable jPlayerTable = new JSortableTable(playerTableModel, 1, true);
33
34 /** Creates new form ServerInfoDlg */
35
36 public ServerInfoDlg(javax.swing.ImageIcon icon, Property pBuddies) {
37 super();
38 this.setIconImage(icon.getImage());
39 this.pBuddies = pBuddies;
40 initComponents();
41
42 jPlayerTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
43 jPlayerTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
44
45 jScrollPane1.getViewport().setView(jPlayerTable);
46
47
48 TableColumn column = null;
49 for (int i = 0; i < 2; i++) {
50 column = jPlayerTable.getColumnModel().getColumn(i);
51 if (i == 0) {
52 column.setPreferredWidth(210);
53 } else {
54 column.setPreferredWidth(40);
55 }
56 }
57 JMenuItem menuItem = new JMenuItem("Add To CsBeagle");
58 menuItem.addActionListener(new java.awt.event.ActionListener() {
59 public void actionPerformed(java.awt.event.ActionEvent evt) {
60 addToCsBeagle();
61 }
62 });
63 popup.add(menuItem);
64 jPlayerTable.addMouseListener(new PlayerMouseListener());
65 }
66
67
68 /** This method is called from within the constructor to
69 * initialize the form.
70 * WARNING: Do NOT modify this code. The content of this method is
71 * always regenerated by the Form Editor.
72 */
73 private void initComponents() {//GEN-BEGIN:initComponents
74 java.awt.GridBagConstraints gridBagConstraints;
75
76 jScrollPane1 = new javax.swing.JScrollPane();
77 jPanel11 = new javax.swing.JPanel();
78 jLabel1 = new javax.swing.JLabel();
79 jLabel2 = new javax.swing.JLabel();
80 jLabel3 = new javax.swing.JLabel();
81 jServerName = new javax.swing.JTextField();
82 jIP = new javax.swing.JTextField();
83 jMap = new javax.swing.JTextField();
84 jLabel4 = new javax.swing.JLabel();
85 jPort = new javax.swing.JTextField();
86 jPanel1 = new javax.swing.JPanel();
87 jRefresh = new javax.swing.JButton();
88
89 addWindowListener(new java.awt.event.WindowAdapter() {
90 public void windowClosing(java.awt.event.WindowEvent evt) {
91 closeDialog(evt);
92 }
93 });
94
95 jScrollPane1.setPreferredSize(new java.awt.Dimension(300, 250));
96 getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
97
98 jPanel11.setLayout(new java.awt.GridBagLayout());
99
100 jPanel11.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(1, 1, 1, 10)));
101 jLabel1.setText("Name");
102 gridBagConstraints = new java.awt.GridBagConstraints();
103 gridBagConstraints.gridx = 0;
104 gridBagConstraints.gridy = 0;
105 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
106 gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
107 jPanel11.add(jLabel1, gridBagConstraints);
108
109 jLabel2.setText("IP");
110 gridBagConstraints = new java.awt.GridBagConstraints();
111 gridBagConstraints.gridx = 0;
112 gridBagConstraints.gridy = 1;
113 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
114 jPanel11.add(jLabel2, gridBagConstraints);
115
116 jLabel3.setText("Map");
117 gridBagConstraints = new java.awt.GridBagConstraints();
118 gridBagConstraints.gridx = 0;
119 gridBagConstraints.gridy = 2;
120 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
121 jPanel11.add(jLabel3, gridBagConstraints);
122
123 jServerName.setColumns(20);
124 jServerName.setEditable(false);
125 gridBagConstraints = new java.awt.GridBagConstraints();
126 gridBagConstraints.gridx = 1;
127 gridBagConstraints.gridy = 0;
128 jPanel11.add(jServerName, gridBagConstraints);
129
130 jIP.setColumns(20);
131 jIP.setEditable(false);
132 gridBagConstraints = new java.awt.GridBagConstraints();
133 gridBagConstraints.gridx = 1;
134 gridBagConstraints.gridy = 1;
135 jPanel11.add(jIP, gridBagConstraints);
136
137 jMap.setColumns(20);
138 jMap.setEditable(false);
139 gridBagConstraints = new java.awt.GridBagConstraints();
140 gridBagConstraints.gridx = 1;
141 gridBagConstraints.gridy = 2;
142 jPanel11.add(jMap, gridBagConstraints);
143
144 jLabel4.setText("Port");
145 gridBagConstraints = new java.awt.GridBagConstraints();
146 gridBagConstraints.gridx = 0;
147 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
148 jPanel11.add(jLabel4, gridBagConstraints);
149
150 jPort.setEditable(false);
151 gridBagConstraints = new java.awt.GridBagConstraints();
152 gridBagConstraints.gridx = 1;
153 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
154 jPanel11.add(jPort, gridBagConstraints);
155
156 getContentPane().add(jPanel11, java.awt.BorderLayout.NORTH);
157
158 jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
159
160 jRefresh.setText("Refresh");
161 jRefresh.addActionListener(new java.awt.event.ActionListener() {
162 public void actionPerformed(java.awt.event.ActionEvent evt) {
163 jRefreshActionPerformed(evt);
164 }
165 });
166
167 jPanel1.add(jRefresh);
168
169 getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);
170
171 pack();
172 }//GEN-END:initComponents
173
174 private void jRefreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRefreshActionPerformed
175 // Add your handling code here:
176 server.getData();
177 refresh();
178 }//GEN-LAST:event_jRefreshActionPerformed
179
180 /** Closes the dialog */
181 private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
182 setVisible(false);
183 dispose();
184 }//GEN-LAST:event_closeDialog
185
186
187 public void addToCsBeagle() {
188 for(int i=0;i<jPlayerTable.getSelectedRows().length;i++) {
189 Vector v = pBuddies.getVector();
190 v.add(new Buddy(((Player)server.getPlayer(jPlayerTable.getSelectedRows()[i])).getName()));
191 pBuddies.setValue(v);
192 pBuddies.commitValue();
193 }
194 }
195
196 /**
197 * @param args the command line arguments
198 */
199 public static void main(String args[]) {
200 Property p = new Property("Buddies",Property.VECTOR_VALUE);
201 p.setVector(new Vector());
202 //new ServerInfoDlg(new javax.swing.I, true, p).show();
203 }
204
205 /** Getter for property server.
206 * @return Value of property server.
207 */
208 public plugins.CsBeagle.Server getServer() {
209 return server;
210 }
211
212 /** Setter for property server.
213 * @param server New value of property server.
214 */
215 public void setServer(plugins.CsBeagle.Server server) {
216 this.server = server;
217 refresh();
218 }
219
220 public void refresh() {
221 setTitle("Server: " + server.getName());
222 jIP.setText(server.getIp());
223 jServerName.setText(server.getName());
224 jPort.setText(Integer.toString(server.getPort()));
225 jServerName.setCaretPosition(0);
226 jMap.setText(server.getMap());
227 playerTableModel.fireTableDataChanged();
228 }
229
230 class PlayerTableModel extends AbstractTableModel {
231 final String[] columnNames = {"Name",
232 "Frags"};
233
234 public int getColumnCount() {
235 return columnNames.length;
236 }
237
238 public int getRowCount() {
239 if (server != null)
240 return server.getPlayers().size();
241 return 0;
242 }
243
244 public String getColumnName(int col) {
245 return columnNames[col];
246 }
247
248 public Object getValueAt(int row, int col) {
249 Player player = (Player) server.getPlayers().get(row);
250 switch (col) {
251 case 0: return player.getName();
252 case 1: return (new Integer((int)player.getFrags()));
253 }
254 return new String();
255 }
256
257 }
258
259 class PlayerMouseListener extends MouseAdapter {
260
261 public void mouseClicked(MouseEvent e) {
262 if (e.getClickCount() > 1) {
263 if (jPlayerTable.getSelectedRow() >= 0) {
264
265 }
266 }
267 }
268
269 public void mousePressed(MouseEvent e) {
270 maybeShowPopup(e);
271 }
272
273 public void mouseReleased(MouseEvent e) {
274 maybeShowPopup(e);
275 }
276
277 private void maybeShowPopup(MouseEvent e) {
278 if (e.isPopupTrigger()) {
279 if (popup!=null) popup.show(e.getComponent(), e.getX(), e.getY());
280 }
281 }
282 }
283
284
285
286
287 // Variables declaration - do not modify//GEN-BEGIN:variables
288 private javax.swing.JLabel jLabel4;
289 private javax.swing.JScrollPane jScrollPane1;
290 private javax.swing.JLabel jLabel1;
291 private javax.swing.JLabel jLabel3;
292 private javax.swing.JTextField jPort;
293 private javax.swing.JTextField jServerName;
294 private javax.swing.JLabel jLabel2;
295 private javax.swing.JButton jRefresh;
296 private javax.swing.JPanel jPanel11;
297 private javax.swing.JTextField jIP;
298 private javax.swing.JPanel jPanel1;
299 private javax.swing.JTextField jMap;
300 // End of variables declaration//GEN-END:variables
301
302 }