Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

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 }