Source code: org/jabbee/ui/panels/InputOutput.java
1 /*
2 * InputOutput.java
3 *
4 * Created on October 24, 2002, 11:27 AM
5 *
6 *
7 * License:
8 *
9 * The contents of this file are subject to the Jabber Open Source
10 * License Version 1.0 (the "License"). You may not copy or use this
11 * file, in either source code or executable form, except in compliance
12 * with the License. You may obtain a copy of the License at
13 * http://www.jabber.com/license/ or at http://www.opensource.org/.
14 * Software distributed under the License is distributed on an "AS IS"
15 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
16 * the License for the specific language governing rights and limitations
17 * under the License.
18 *
19 * Copyrights:
20 *
21 * Portions created by or assigned to Jabber.com, Inc. are Copyright
22 * (c) 1999-2000 Jabber.com, Inc. All Rights Reserved. Contact information
23 * for Jabber.com, Inc. is available at http://www.jabber.com/. Portions
24 * Copyright (c) 1998-1999 Jeremie Miller.
25 *
26 * Acknowledgements:
27 *
28 * Special thanks to the Jabber Open Source Contributors for their
29 * suggestions and support of Jabber.
30 *
31 */
32
33 package org.jabbee.ui.panels;
34
35 import java.awt.event.KeyEvent;
36 import org.jabbee.resources.ToolTipText;
37
38 /** Panel for the <io> section of the jabber configuration file.
39 *
40 * @author Gregory Kaczmarczyk
41 *
42 * @version 0.01
43 */
44 public final class InputOutput extends javax.swing.JPanel {
45
46 /** Creates new form InputOutput */
47 public InputOutput() {
48 initComponents();
49
50 setSampleKarmaLimits();
51 }
52
53 /** This method is called from within the constructor to
54 * initialize the form.
55 * WARNING: Do NOT modify this code. The content of this method is
56 * always regenerated by the Form Editor.
57 */
58 private void initComponents() {//GEN-BEGIN:initComponents
59 java.awt.GridBagConstraints gridBagConstraints;
60
61 karmaPanel = new javax.swing.JPanel();
62 configKarmaCheckBox = new javax.swing.JCheckBox();
63 karmaLimitsComboBox = new javax.swing.JComboBox();
64 heartbeatLabel = new javax.swing.JLabel();
65 heartbeatTextField = new javax.swing.JTextField();
66 initLabel = new javax.swing.JLabel();
67 initTextField = new javax.swing.JTextField();
68 maxLabel = new javax.swing.JLabel();
69 maxTextField = new javax.swing.JTextField();
70 incLabel = new javax.swing.JLabel();
71 incTextField = new javax.swing.JTextField();
72 decLabel = new javax.swing.JLabel();
73 decTextField = new javax.swing.JTextField();
74 penaltyLabel = new javax.swing.JLabel();
75 penaltyTextField = new javax.swing.JTextField();
76 restoreLabel = new javax.swing.JLabel();
77 restoreTextField = new javax.swing.JTextField();
78 rateLimitPanel = new javax.swing.JPanel();
79 ratePointsLabel = new javax.swing.JLabel();
80 ratePointsTextField = new javax.swing.JTextField();
81 rateTimeLabel = new javax.swing.JLabel();
82 rateTimeTextField = new javax.swing.JTextField();
83 overviewPanel = new javax.swing.JPanel();
84 ATLabel = new javax.swing.JLabel();
85 ATTextField = new javax.swing.JTextField();
86 BALabel = new javax.swing.JLabel();
87 BATextField = new javax.swing.JTextField();
88 MSRLabel = new javax.swing.JLabel();
89 MSRTextField = new javax.swing.JTextField();
90 StRfBLabel = new javax.swing.JLabel();
91 StRfBTextField = new javax.swing.JTextField();
92 PLLabel = new javax.swing.JLabel();
93 PLTextField = new javax.swing.JTextField();
94
95 setLayout(new java.awt.GridBagLayout());
96
97 karmaPanel.setLayout(new java.awt.GridBagLayout());
98
99 karmaPanel.setBorder(new javax.swing.border.TitledBorder(null, "Karma Limits", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 0, 11), new java.awt.Color(51, 51, 51)));
100 configKarmaCheckBox.setText("Configure Karma");
101 configKarmaCheckBox.setToolTipText(ToolTipText.KARMA_DESC);
102 configKarmaCheckBox.addItemListener(new java.awt.event.ItemListener() {
103 public void itemStateChanged(java.awt.event.ItemEvent evt) {
104 configKarmaCheckBoxItemStateChanged(evt);
105 }
106 });
107
108 gridBagConstraints = new java.awt.GridBagConstraints();
109 gridBagConstraints.gridx = 0;
110 gridBagConstraints.gridy = 0;
111 gridBagConstraints.gridwidth = 3;
112 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
113 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
114 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
115 karmaPanel.add(configKarmaCheckBox, gridBagConstraints);
116
117 karmaLimitsComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Low Karma Limits", "Medium Karma Limits", "High Karma Limits", "Custom ..." }));
118 karmaLimitsComboBox.setToolTipText(ToolTipText.KARMA_EX);
119 karmaLimitsComboBox.setEnabled(false);
120 karmaLimitsComboBox.addItemListener(new java.awt.event.ItemListener() {
121 public void itemStateChanged(java.awt.event.ItemEvent evt) {
122 karmaLimitsComboBoxItemStateChanged(evt);
123 }
124 });
125
126 gridBagConstraints = new java.awt.GridBagConstraints();
127 gridBagConstraints.gridx = 3;
128 gridBagConstraints.gridy = 0;
129 gridBagConstraints.gridwidth = 3;
130 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
131 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
132 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
133 karmaPanel.add(karmaLimitsComboBox, gridBagConstraints);
134
135 heartbeatLabel.setText("Heartbeat: ");
136 heartbeatLabel.setToolTipText(ToolTipText.KARMA_HEARTBEAT);
137 heartbeatLabel.setEnabled(false);
138 gridBagConstraints = new java.awt.GridBagConstraints();
139 gridBagConstraints.gridx = 0;
140 gridBagConstraints.gridy = 1;
141 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
142 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
143 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
144 karmaPanel.add(heartbeatLabel, gridBagConstraints);
145
146 heartbeatTextField.setColumns(5);
147 heartbeatTextField.setToolTipText(ToolTipText.KARMA_HEARTBEAT);
148 heartbeatTextField.setEnabled(false);
149 heartbeatTextField.addKeyListener(new java.awt.event.KeyAdapter() {
150 public void keyReleased(java.awt.event.KeyEvent evt) {
151 heartbeatTextFieldKeyReleased(evt);
152 }
153 });
154
155 gridBagConstraints = new java.awt.GridBagConstraints();
156 gridBagConstraints.gridx = 1;
157 gridBagConstraints.gridy = 1;
158 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
159 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
160 karmaPanel.add(heartbeatTextField, gridBagConstraints);
161
162 initLabel.setText("Init: ");
163 initLabel.setToolTipText(ToolTipText.KARMA_INIT);
164 initLabel.setEnabled(false);
165 gridBagConstraints = new java.awt.GridBagConstraints();
166 gridBagConstraints.gridx = 0;
167 gridBagConstraints.gridy = 2;
168 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
169 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
170 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
171 karmaPanel.add(initLabel, gridBagConstraints);
172
173 initTextField.setColumns(5);
174 initTextField.setToolTipText(ToolTipText.KARMA_INIT);
175 initTextField.setEnabled(false);
176 initTextField.addKeyListener(new java.awt.event.KeyAdapter() {
177 public void keyReleased(java.awt.event.KeyEvent evt) {
178 initTextFieldKeyReleased(evt);
179 }
180 });
181
182 gridBagConstraints = new java.awt.GridBagConstraints();
183 gridBagConstraints.gridx = 1;
184 gridBagConstraints.gridy = 2;
185 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
186 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
187 karmaPanel.add(initTextField, gridBagConstraints);
188
189 maxLabel.setText("Max: ");
190 maxLabel.setToolTipText(ToolTipText.KARMA_MAX);
191 maxLabel.setEnabled(false);
192 gridBagConstraints = new java.awt.GridBagConstraints();
193 gridBagConstraints.gridx = 2;
194 gridBagConstraints.gridy = 1;
195 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
196 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
197 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
198 karmaPanel.add(maxLabel, gridBagConstraints);
199
200 maxTextField.setColumns(5);
201 maxTextField.setToolTipText(ToolTipText.KARMA_MAX);
202 maxTextField.setEnabled(false);
203 maxTextField.addKeyListener(new java.awt.event.KeyAdapter() {
204 public void keyReleased(java.awt.event.KeyEvent evt) {
205 maxTextFieldKeyReleased(evt);
206 }
207 });
208
209 gridBagConstraints = new java.awt.GridBagConstraints();
210 gridBagConstraints.gridx = 3;
211 gridBagConstraints.gridy = 1;
212 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
213 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
214 karmaPanel.add(maxTextField, gridBagConstraints);
215
216 incLabel.setText("Inc: ");
217 incLabel.setToolTipText(ToolTipText.KARMA_INC);
218 incLabel.setEnabled(false);
219 gridBagConstraints = new java.awt.GridBagConstraints();
220 gridBagConstraints.gridx = 2;
221 gridBagConstraints.gridy = 2;
222 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
223 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
224 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
225 karmaPanel.add(incLabel, gridBagConstraints);
226
227 incTextField.setColumns(5);
228 incTextField.setToolTipText(ToolTipText.KARMA_INC);
229 incTextField.setEnabled(false);
230 incTextField.addKeyListener(new java.awt.event.KeyAdapter() {
231 public void keyReleased(java.awt.event.KeyEvent evt) {
232 incTextFieldKeyReleased(evt);
233 }
234 });
235
236 gridBagConstraints = new java.awt.GridBagConstraints();
237 gridBagConstraints.gridx = 3;
238 gridBagConstraints.gridy = 2;
239 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
240 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
241 karmaPanel.add(incTextField, gridBagConstraints);
242
243 decLabel.setText("Dec: ");
244 decLabel.setToolTipText(ToolTipText.KARMA_DEC);
245 decLabel.setEnabled(false);
246 gridBagConstraints = new java.awt.GridBagConstraints();
247 gridBagConstraints.gridx = 2;
248 gridBagConstraints.gridy = 3;
249 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
250 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
251 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 0);
252 karmaPanel.add(decLabel, gridBagConstraints);
253
254 decTextField.setColumns(5);
255 decTextField.setToolTipText(ToolTipText.KARMA_DEC);
256 decTextField.setEnabled(false);
257 decTextField.addKeyListener(new java.awt.event.KeyAdapter() {
258 public void keyReleased(java.awt.event.KeyEvent evt) {
259 decTextFieldKeyReleased(evt);
260 }
261 });
262
263 gridBagConstraints = new java.awt.GridBagConstraints();
264 gridBagConstraints.gridx = 3;
265 gridBagConstraints.gridy = 3;
266 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
267 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
268 karmaPanel.add(decTextField, gridBagConstraints);
269
270 penaltyLabel.setText("Penalty: ");
271 penaltyLabel.setToolTipText(ToolTipText.KARMA_PENALTY);
272 penaltyLabel.setEnabled(false);
273 gridBagConstraints = new java.awt.GridBagConstraints();
274 gridBagConstraints.gridx = 4;
275 gridBagConstraints.gridy = 1;
276 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
277 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
278 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
279 karmaPanel.add(penaltyLabel, gridBagConstraints);
280
281 penaltyTextField.setColumns(5);
282 penaltyTextField.setToolTipText(ToolTipText.KARMA_PENALTY);
283 penaltyTextField.setEnabled(false);
284 penaltyTextField.addKeyListener(new java.awt.event.KeyAdapter() {
285 public void keyReleased(java.awt.event.KeyEvent evt) {
286 penaltyTextFieldKeyReleased(evt);
287 }
288 });
289
290 gridBagConstraints = new java.awt.GridBagConstraints();
291 gridBagConstraints.gridx = 5;
292 gridBagConstraints.gridy = 1;
293 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
294 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
295 karmaPanel.add(penaltyTextField, gridBagConstraints);
296
297 restoreLabel.setText("Restore: ");
298 restoreLabel.setToolTipText(ToolTipText.KARMA_RESTORE);
299 restoreLabel.setEnabled(false);
300 gridBagConstraints = new java.awt.GridBagConstraints();
301 gridBagConstraints.gridx = 4;
302 gridBagConstraints.gridy = 2;
303 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
304 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
305 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
306 karmaPanel.add(restoreLabel, gridBagConstraints);
307
308 restoreTextField.setColumns(5);
309 restoreTextField.setToolTipText(ToolTipText.KARMA_RESTORE);
310 restoreTextField.setEnabled(false);
311 restoreTextField.addKeyListener(new java.awt.event.KeyAdapter() {
312 public void keyReleased(java.awt.event.KeyEvent evt) {
313 restoreTextFieldKeyReleased(evt);
314 }
315 });
316
317 gridBagConstraints = new java.awt.GridBagConstraints();
318 gridBagConstraints.gridx = 5;
319 gridBagConstraints.gridy = 2;
320 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
321 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
322 karmaPanel.add(restoreTextField, gridBagConstraints);
323
324 gridBagConstraints = new java.awt.GridBagConstraints();
325 gridBagConstraints.gridx = 0;
326 gridBagConstraints.gridy = 0;
327 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
328 add(karmaPanel, gridBagConstraints);
329
330 rateLimitPanel.setLayout(new java.awt.GridBagLayout());
331
332 rateLimitPanel.setBorder(new javax.swing.border.TitledBorder(null, "Rate Limits", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 0, 11), new java.awt.Color(51, 51, 51)));
333 ratePointsLabel.setText("Points: ");
334 ratePointsLabel.setToolTipText(ToolTipText.RATE_LIMITS);
335 gridBagConstraints = new java.awt.GridBagConstraints();
336 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
337 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
338 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 0);
339 rateLimitPanel.add(ratePointsLabel, gridBagConstraints);
340
341 ratePointsTextField.setColumns(5);
342 ratePointsTextField.setToolTipText(ToolTipText.RATE_LIMITS);
343 gridBagConstraints = new java.awt.GridBagConstraints();
344 gridBagConstraints.gridy = 0;
345 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
346 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 20);
347 rateLimitPanel.add(ratePointsTextField, gridBagConstraints);
348
349 rateTimeLabel.setText("Time: ");
350 rateTimeLabel.setToolTipText(ToolTipText.RATE_LIMITS);
351 gridBagConstraints = new java.awt.GridBagConstraints();
352 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
353 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
354 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 0);
355 rateLimitPanel.add(rateTimeLabel, gridBagConstraints);
356
357 rateTimeTextField.setColumns(5);
358 rateTimeTextField.setToolTipText(ToolTipText.RATE_LIMITS);
359 gridBagConstraints = new java.awt.GridBagConstraints();
360 gridBagConstraints.gridy = 0;
361 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
362 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
363 rateLimitPanel.add(rateTimeTextField, gridBagConstraints);
364
365 gridBagConstraints = new java.awt.GridBagConstraints();
366 gridBagConstraints.gridx = 0;
367 gridBagConstraints.gridy = 1;
368 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
369 add(rateLimitPanel, gridBagConstraints);
370
371 overviewPanel.setLayout(new java.awt.GridBagLayout());
372
373 overviewPanel.setBorder(new javax.swing.border.TitledBorder(null, "Overview", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 0, 11), new java.awt.Color(51, 51, 51)));
374 ATLabel.setText("Avg. Throughput: ");
375 gridBagConstraints = new java.awt.GridBagConstraints();
376 gridBagConstraints.gridx = 0;
377 gridBagConstraints.gridy = 0;
378 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
379 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
380 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
381 overviewPanel.add(ATLabel, gridBagConstraints);
382
383 ATTextField.setColumns(6);
384 ATTextField.setEditable(false);
385 gridBagConstraints = new java.awt.GridBagConstraints();
386 gridBagConstraints.gridx = 1;
387 gridBagConstraints.gridy = 0;
388 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
389 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
390 overviewPanel.add(ATTextField, gridBagConstraints);
391
392 BALabel.setText("Burst Allowed: ");
393 gridBagConstraints = new java.awt.GridBagConstraints();
394 gridBagConstraints.gridx = 0;
395 gridBagConstraints.gridy = 1;
396 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
397 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
398 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
399 overviewPanel.add(BALabel, gridBagConstraints);
400
401 BATextField.setColumns(6);
402 BATextField.setEditable(false);
403 gridBagConstraints = new java.awt.GridBagConstraints();
404 gridBagConstraints.gridx = 1;
405 gridBagConstraints.gridy = 1;
406 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
407 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
408 overviewPanel.add(BATextField, gridBagConstraints);
409
410 MSRLabel.setText("Max Sustained Rate: ");
411 gridBagConstraints = new java.awt.GridBagConstraints();
412 gridBagConstraints.gridx = 0;
413 gridBagConstraints.gridy = 2;
414 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
415 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
416 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 0);
417 overviewPanel.add(MSRLabel, gridBagConstraints);
418
419 MSRTextField.setColumns(6);
420 MSRTextField.setEditable(false);
421 gridBagConstraints = new java.awt.GridBagConstraints();
422 gridBagConstraints.gridx = 1;
423 gridBagConstraints.gridy = 2;
424 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
425 gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
426 overviewPanel.add(MSRTextField, gridBagConstraints);
427
428 StRfBLabel.setText("Recover from Burst: ");
429 gridBagConstraints = new java.awt.GridBagConstraints();
430 gridBagConstraints.gridx = 2;
431 gridBagConstraints.gridy = 0;
432 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
433 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
434 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
435 overviewPanel.add(StRfBLabel, gridBagConstraints);
436
437 StRfBTextField.setColumns(6);
438 StRfBTextField.setEditable(false);
439 gridBagConstraints = new java.awt.GridBagConstraints();
440 gridBagConstraints.gridx = 3;
441 gridBagConstraints.gridy = 0;
442 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
443 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
444 overviewPanel.add(StRfBTextField, gridBagConstraints);
445
446 PLLabel.setText("Penaly Length: ");
447 gridBagConstraints = new java.awt.GridBagConstraints();
448 gridBagConstraints.gridx = 2;
449 gridBagConstraints.gridy = 1;
450 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
451 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
452 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 0);
453 overviewPanel.add(PLLabel, gridBagConstraints);
454
455 PLTextField.setColumns(6);
456 PLTextField.setEditable(false);
457 gridBagConstraints = new java.awt.GridBagConstraints();
458 gridBagConstraints.gridx = 3;
459 gridBagConstraints.gridy = 1;
460 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
461 gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
462 overviewPanel.add(PLTextField, gridBagConstraints);
463
464 gridBagConstraints = new java.awt.GridBagConstraints();
465 gridBagConstraints.gridx = 0;
466 gridBagConstraints.gridy = 2;
467 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
468 add(overviewPanel, gridBagConstraints);
469
470 }//GEN-END:initComponents
471
472 private void restoreTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_restoreTextFieldKeyReleased
473 checkNumbersFields(evt, restoreTextField);
474 }//GEN-LAST:event_restoreTextFieldKeyReleased
475
476 private void penaltyTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_penaltyTextFieldKeyReleased
477 checkNumbersFields(evt, penaltyTextField);
478 }//GEN-LAST:event_penaltyTextFieldKeyReleased
479
480 private void decTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_decTextFieldKeyReleased
481 checkNumbersFields(evt, decTextField);
482 }//GEN-LAST:event_decTextFieldKeyReleased
483
484 private void incTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_incTextFieldKeyReleased
485 checkNumbersFields(evt, incTextField);
486 }//GEN-LAST:event_incTextFieldKeyReleased
487
488 private void maxTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_maxTextFieldKeyReleased
489 checkNumbersFields(evt, maxTextField);
490 }//GEN-LAST:event_maxTextFieldKeyReleased
491
492 private void initTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_initTextFieldKeyReleased
493 checkNumbersFields(evt, initTextField);
494 }//GEN-LAST:event_initTextFieldKeyReleased
495
496 private void heartbeatTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_heartbeatTextFieldKeyReleased
497 checkNumbersFields(evt, heartbeatTextField);
498 }//GEN-LAST:event_heartbeatTextFieldKeyReleased
499
500 private void karmaLimitsComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_karmaLimitsComboBoxItemStateChanged
501 int index = karmaLimitsComboBox.getSelectedIndex();
502 if (index != 3)
503 populateKarmaFields(index);
504 }//GEN-LAST:event_karmaLimitsComboBoxItemStateChanged
505
506 private void configKarmaCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_configKarmaCheckBoxItemStateChanged
507 boolean bool = configKarmaCheckBox.isSelected();
508 int index = karmaLimitsComboBox.getSelectedIndex();
509 enableKarmaItems(bool);
510 if (!bool)
511 clearOverviewFields();
512 // this is mainly for the first time enabling (when all fields are empty)
513 else if (index != 3 && bool)
514 populateKarmaFields(index);
515 }//GEN-LAST:event_configKarmaCheckBoxItemStateChanged
516
517 /** Set Karma TextFields to enabled or disabled state
518 *
519 * @param bool True enables, false disables.
520 */
521 private void enableKarmaItems(boolean bool) {
522 karmaLimitsComboBox.setEnabled(bool);
523 heartbeatLabel.setEnabled(bool);
524 heartbeatTextField.setEnabled(bool);
525 initLabel.setEnabled(bool);
526 initTextField.setEnabled(bool);
527 maxLabel.setEnabled(bool);
528 maxTextField.setEnabled(bool);
529 incLabel.setEnabled(bool);
530 incTextField.setEnabled(bool);
531 decLabel.setEnabled(bool);
532 decTextField.setEnabled(bool);
533 penaltyLabel.setEnabled(bool);
534 penaltyTextField.setEnabled(bool);
535 restoreLabel.setEnabled(bool);
536 restoreTextField.setEnabled(bool);
537 }
538
539 /** Creates array of sample Karma limits. This list of samples is taken directly
540 * from the jabber.xml configuration file comments.
541 */
542 private void setSampleKarmaLimits() {
543 int[] karmaLow = { 2, 10, 10, 1, 1, -6, 10 };
544 int[] karmaMed = { 2, 50, 50, 4, 1, -5, 50 };
545 int[] karmaHig = { 2, 64, 64, 6, 1, -3, 64 };
546
547 sampleKarmaLimits[0] = karmaLow;
548 sampleKarmaLimits[1] = karmaMed;
549 sampleKarmaLimits[2] = karmaHig;
550 }
551
552 /** Populate Karma TextFields with the sample Karma limits
553 */
554 private void populateKarmaFields(int i) {
555 heartbeatTextField.setText("" + sampleKarmaLimits[i][0]);
556 initTextField.setText("" + sampleKarmaLimits[i][1]);
557 maxTextField.setText("" + sampleKarmaLimits[i][2]);
558 incTextField.setText("" + sampleKarmaLimits[i][3]);
559 decTextField.setText("" + sampleKarmaLimits[i][4]);
560 penaltyTextField.setText("" + sampleKarmaLimits[i][5]);
561 restoreTextField.setText("" + sampleKarmaLimits[i][6]);
562
563 updateOverview();
564 }
565
566 /** Check textfields for characters entered that are not digits
567 *
568 * @param evt java.awt.event.KeyEvent
569 * @param field JTextField which fired the event in question
570 */
571 private void checkNumbersFields(KeyEvent evt, javax.swing.JTextField field) {
572 char charTyped = evt.getKeyChar();
573 int code = evt.getKeyCode();
574 switch (code) {
575 case KeyEvent.VK_LEFT:
576 case KeyEvent.VK_RIGHT:
577 case KeyEvent.VK_SHIFT:
578 case KeyEvent.VK_CONTROL:
579 case KeyEvent.VK_KP_LEFT:
580 case KeyEvent.VK_KP_RIGHT:
581 case KeyEvent.VK_HOME:
582 case KeyEvent.VK_END:
583 return;
584 case KeyEvent.VK_BACK_SPACE:
585 case KeyEvent.VK_DELETE:
586 karmaLimitsComboBox.setSelectedIndex(karmaLimitsComboBox.getItemCount()-1);
587 return;
588 }
589 if (!Character.isDigit(charTyped)) {
590 String fieldChars = field.getText();
591 String character = String.valueOf(charTyped);
592 java.util.regex.Pattern numbers = java.util.regex.Pattern.compile(character);
593 java.util.regex.Matcher numMatch = numbers.matcher(fieldChars);
594 fieldChars = numMatch.replaceAll("");
595 field.setText(fieldChars);
596 } else {
597 updateOverview();
598 karmaLimitsComboBox.setSelectedIndex(karmaLimitsComboBox.getItemCount()-1);
599 }
600 }
601
602 private void updateOverview() {
603 int heartbeat = Integer.parseInt(heartbeatTextField.getText());
604 int init = Integer.parseInt(initTextField.getText());
605 int max = Integer.parseInt(maxTextField.getText());
606 int inc = Integer.parseInt(incTextField.getText());
607 int dec = Integer.parseInt(decTextField.getText());
608 int penalty = Integer.parseInt(penaltyTextField.getText());
609 int restore = Integer.parseInt(restoreTextField.getText());
610
611 float penaltyLen = -penalty * heartbeat;
612 float avgThroughput = 0; // ?
613 float burstAllowed = 0; // ?
614 float maxSustained = burstAllowed / penaltyLen;
615 float secRecover = (max * heartbeat) / (float)inc;
616
617 ATTextField.setText(avgThroughput + " k/s");
618 BATextField.setText(burstAllowed + " k/s");
619 MSRTextField.setText(maxSustained + " k/s");
620 StRfBTextField.setText((int)secRecover + " s");
621 PLTextField.setText((int)penaltyLen + " s");
622 }
623
624 private void clearOverviewFields() {
625 ATTextField.setText("");
626 BATextField.setText("");
627 MSRTextField.setText("");
628 StRfBTextField.setText("");
629 PLTextField.setText("");
630 }
631
632 public void populateFields(String[] values) {
633 if (values[0].length() > 0) {
634 configKarmaCheckBox.setSelected(true);
635 heartbeatTextField.setText(values[0]);
636 initTextField.setText(values[1]);
637 maxTextField.setText(values[2]);
638 incTextField.setText(values[3]);
639 decTextField.setText(values[4]);
640 penaltyTextField.setText(values[5]);
641 restoreTextField.setText(values[6]);
642 } else {
643 configKarmaCheckBox.setSelected(false);
644 heartbeatTextField.setText("");
645 initTextField.setText("");
646 maxTextField.setText("");
647 incTextField.setText("");
648 decTextField.setText("");
649 penaltyTextField.setText("");
650 restoreTextField.setText("");
651 }
652 ratePointsTextField.setText(values[7]);
653 rateTimeTextField.setText(values[8]);
654 }
655
656 public String[] getFieldValues() {
657 String[] values = new String[9];
658
659 values[0] = heartbeatTextField.getText();
660 values[1] = initTextField.getText();
661 values[2] = maxTextField.getText();
662 values[3] = incTextField.getText();
663 values[4] = decTextField.getText();
664 values[5] = penaltyTextField.getText();
665 values[6] = restoreTextField.getText();
666 values[7] = ratePointsTextField.getText();
667 values[8] = rateTimeTextField.getText();
668
669 return values;
670 }
671
672 public boolean getConfigureKarma() {
673 return(configKarmaCheckBox.isSelected());
674 }
675
676 // Variables declaration - do not modify//GEN-BEGIN:variables
677 private javax.swing.JLabel incLabel;
678 private javax.swing.JLabel BALabel;
679 private javax.swing.JPanel karmaPanel;
680 private javax.swing.JTextField PLTextField;
681 private javax.swing.JTextField heartbeatTextField;
682 private javax.swing.JLabel maxLabel;
683 private javax.swing.JLabel penaltyLabel;
684 private javax.swing.JTextField decTextField;
685 private javax.swing.JTextField ratePointsTextField;
686 private javax.swing.JLabel MSRLabel;
687 private javax.swing.JLabel StRfBLabel;
688 private javax.swing.JLabel rateTimeLabel;
689 private javax.swing.JComboBox karmaLimitsComboBox;
690 private javax.swing.JTextField restoreTextField;
691 private javax.swing.JTextField initTextField;
692 private javax.swing.JTextField ATTextField;
693 private javax.swing.JLabel PLLabel;
694 private javax.swing.JLabel heartbeatLabel;
695 private javax.swing.JLabel decLabel;
696 private javax.swing.JLabel ratePointsLabel;
697 private javax.swing.JCheckBox configKarmaCheckBox;
698 private javax.swing.JTextField incTextField;
699 private javax.swing.JTextField BATextField;
700 private javax.swing.JPanel overviewPanel;
701 private javax.swing.JPanel rateLimitPanel;
702 private javax.swing.JTextField maxTextField;
703 private javax.swing.JLabel restoreLabel;
704 private javax.swing.JTextField penaltyTextField;
705 private javax.swing.JLabel initLabel;
706 private javax.swing.JTextField MSRTextField;
707 private javax.swing.JLabel ATLabel;
708 private javax.swing.JTextField StRfBTextField;
709 private javax.swing.JTextField rateTimeTextField;
710 // End of variables declaration//GEN-END:variables
711 private int[][] sampleKarmaLimits = new int[3][7];
712 }