add src files decompiled via jad
[rsa2client.git] / src / mcsClient / McsToolBar.java
1 // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
2 // Jad home page: http://www.kpdus.com/jad.html
3 // Decompiler options: packimports(3) fieldsfirst nonlb space 
4
5 package mcsClient;
6
7 import java.awt.*;
8 import java.awt.event.*;
9 import java.io.PrintStream;
10 import java.util.*;
11 import javax.swing.*;
12 import javax.swing.event.ChangeEvent;
13 import javax.swing.event.ChangeListener;
14
15 // Referenced classes of package mcsClient:
16 //            KeyButton, Help, Options, KeyData, 
17 //            KeyButtonListener, LiveVideoPanel, DatagramReader, McsKeyAdapter, 
18 //            ComboKeyArray
19
20 public final class McsToolBar extends JToolBar
21     implements KeyButtonListener {
22
23     public static final int BITRATES[] = {
24         0, 10240, 20480, 30720, 40960, 51200, 0x19000, 0x25800, 0x32000, 0x3e800, 
25         0x4b000, 0x96000, 0xe1000, 0x12c000, 0x177000, 0x2ee000, 0x4e2000
26     };
27     private McsKeyAdapter keyAdapter;
28     private LiveVideoPanel videoPanel;
29     private DatagramReader datagramReader;
30     private JSlider slider;
31     private int lastBitrate;
32     private Help sliderHelp;
33     private JLabel configLink;
34     private Options options;
35     private KeyButton japan1Button;
36     private KeyButton japan1aButton;
37     private KeyButton japan131Button;
38     private KeyButton japan132Button;
39     private KeyButton japan132aButton;
40     private KeyButton japan132sButton;
41     private KeyButton japan133Button;
42     private KeyButton japan133aButton;
43     private KeyButton japan133sButton;
44     private KeyButton japan30Button;
45     private KeyButton japan30aButton;
46     private KeyButton tildeButton;
47     private KeyButton circumflexButton;
48     private KeyButton diaeresisButton;
49     private KeyButton graveButton;
50     private KeyButton acuteButton;
51     private KeyButton rightSquareBracketButton;
52     private KeyButton leftSquareBracketButton;
53     private KeyButton rightCurlyBracketButton;
54     private KeyButton leftCurlyBracketButton;
55     private KeyButton backslashButton;
56     private KeyButton atButton;
57     private static final String SLIDER_HELP_DATA[] = {
58         "The Video Speed selector is used to limit the bandwidth that is devoted to the\n", "Remote Console display on your computer.  Reducing the Video Speed can\n", "improve the rate at which the Remote Console display is refreshed by limiting\n", "the video data that must be displayed.  You can reduce, or even stop, video\n", "data to allow more bandwidth for Remote Disk, if desired.  Move the slider\n", "left or right until you find the bandwidth that achieves the best results."
59     };
60
61     public McsToolBar(McsKeyAdapter mcskeyadapter, LiveVideoPanel livevideopanel) {
62         slider = new JSlider(0, 16);
63         lastBitrate = 16;
64         configLink = new JLabel("<html><u>Preferences</u></html>");
65         keyAdapter = mcskeyadapter;
66         videoPanel = livevideopanel;
67         japan1Button = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan1.gif")));
68         japan1Button.setToolTipText("Send Hankaku/Zenkaku to the server");
69         japan1Button.addKeyButtonListener(this);
70         japan1aButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan1a.gif")));
71         japan1aButton.setToolTipText("Send Kanji to the server");
72         japan1aButton.addKeyButtonListener(this);
73         japan131Button = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan131.gif")));
74         japan131Button.setToolTipText("Send Muhehkan to the server");
75         japan131Button.addKeyButtonListener(this);
76         japan132Button = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan132.gif")));
77         japan132Button.setToolTipText("Send Henkan to the server");
78         japan132Button.addKeyButtonListener(this);
79         japan132aButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan132a.gif")));
80         japan132aButton.setToolTipText("Send Zenkouho to the server");
81         japan132aButton.addKeyButtonListener(this);
82         japan132sButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan132s.gif")));
83         japan132sButton.setToolTipText("Send Zenkouho to the server");
84         japan132sButton.addKeyButtonListener(this);
85         japan133Button = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan133.gif")));
86         japan133Button.setToolTipText("Send Hiragana to the server");
87         japan133Button.addKeyButtonListener(this);
88         japan133aButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan133a.gif")));
89         japan133aButton.setToolTipText("Send Romanji to the server");
90         japan133aButton.addKeyButtonListener(this);
91         japan133sButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan133s.gif")));
92         japan133sButton.setToolTipText("Send Katakana to the server");
93         japan133sButton.addKeyButtonListener(this);
94         japan30Button = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan30.gif")));
95         japan30Button.setToolTipText("Send Eisuu to the server");
96         japan30Button.addKeyButtonListener(this);
97         japan30aButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("japan30a.gif")));
98         japan30aButton.setToolTipText("Send Kanji Bangou to the server");
99         japan30aButton.addKeyButtonListener(this);
100         tildeButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("tilde.gif")));
101         tildeButton.setToolTipText("Send tilde modifier to the server");
102         tildeButton.addKeyButtonListener(this);
103         circumflexButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("circumflex.gif")));
104         circumflexButton.setToolTipText("Send circumflex modifier to the server");
105         circumflexButton.addKeyButtonListener(this);
106         diaeresisButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("diaeresis.gif")));
107         diaeresisButton.setToolTipText("Send diaeresis modifier to the server");
108         diaeresisButton.addKeyButtonListener(this);
109         acuteButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("acute.gif")));
110         acuteButton.setToolTipText("Send acute modifier to the server");
111         acuteButton.addKeyButtonListener(this);
112         graveButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("grave.gif")));
113         graveButton.setToolTipText("Send grave modifier to the server");
114         graveButton.addKeyButtonListener(this);
115         leftSquareBracketButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("leftsquarebracket.gif")));
116         leftSquareBracketButton.setToolTipText("Send left square bracket to the server");
117         leftSquareBracketButton.addKeyButtonListener(this);
118         rightSquareBracketButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("rightsquarebracket.gif")));
119         rightSquareBracketButton.setToolTipText("Send right square bracket to the server");
120         rightSquareBracketButton.addKeyButtonListener(this);
121         leftCurlyBracketButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("leftbracket.gif")));
122         leftCurlyBracketButton.setToolTipText("Send left curly bracket to the server");
123         leftCurlyBracketButton.addKeyButtonListener(this);
124         rightCurlyBracketButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("rightbracket.gif")));
125         rightCurlyBracketButton.setToolTipText("Send right curly bracket to the server");
126         rightCurlyBracketButton.addKeyButtonListener(this);
127         backslashButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("backslash.gif")));
128         backslashButton.setToolTipText("Send backslash to the server");
129         backslashButton.addKeyButtonListener(this);
130         atButton = new KeyButton(Toolkit.getDefaultToolkit().getImage(getClass().getResource("atsign.gif")));
131         atButton.setToolTipText("Send at symbol to the server");
132         atButton.addKeyButtonListener(this);
133         setPreferredSize(new Dimension(95, 350));
134         setLayout(new FlowLayout(0, 2, 2));
135     }
136
137     public McsToolBar(String s, McsKeyAdapter mcskeyadapter, LiveVideoPanel livevideopanel, DatagramReader datagramreader, McsToolBar mcstoolbar) {
138         slider = new JSlider(0, 16);
139         lastBitrate = 16;
140         configLink = new JLabel("<html><u>Preferences</u></html>");
141         keyAdapter = mcskeyadapter;
142         videoPanel = livevideopanel;
143         datagramReader = datagramreader;
144         setLayout(new FlowLayout(0, 3, 3));
145         slider.setToolTipText("Video speed selector");
146         slider.setBackground(getBackground());
147         slider.setPreferredSize(new Dimension(260, 40));
148         slider.setPaintTicks(true);
149         slider.setMajorTickSpacing(2);
150         slider.setMinorTickSpacing(1);
151         slider.setSnapToTicks(true);
152         slider.setPaintLabels(true);
153         Hashtable hashtable = new Hashtable();
154         hashtable.put(new Integer(0), new JLabel("0"));
155         hashtable.put(new Integer(2), new JLabel("20k"));
156         hashtable.put(new Integer(4), new JLabel("40k"));
157         hashtable.put(new Integer(6), new JLabel("100k"));
158         hashtable.put(new Integer(8), new JLabel("200k"));
159         hashtable.put(new Integer(10), new JLabel("300k"));
160         hashtable.put(new Integer(12), new JLabel("900k"));
161         hashtable.put(new Integer(14), new JLabel("1.5M"));
162         hashtable.put(new Integer(16), new JLabel("5M"));
163         slider.setLabelTable(hashtable);
164         slider.addChangeListener(new ChangeListener() {
165
166             public void stateChanged(ChangeEvent changeevent) {
167                 JSlider jslider = (JSlider)changeevent.getSource();
168                 int j = McsToolBar.BITRATES[jslider.getValue()];
169                 if (lastBitrate == 0 && j > 0)
170                     videoPanel.resumeVideo();
171                 else
172                 if (lastBitrate > 0 && j == 0)
173                     videoPanel.pauseVideo();
174                 datagramReader.setInitialBitRate(j);
175                 lastBitrate = j;
176             }
177
178         }
179 );
180         sliderHelp = new Help("Video Speed Help", Toolkit.getDefaultToolkit().getImage(getClass().getResource("help.gif")), SLIDER_HELP_DATA.length);
181         sliderHelp.setToolTipText("Video Speed Help");
182         for (int i = 0; i < SLIDER_HELP_DATA.length; i++)
183             sliderHelp.append(SLIDER_HELP_DATA[i]);
184
185         options = new Options(s, mcskeyadapter, datagramreader, this, mcstoolbar);
186         options.hide();
187         livevideopanel.addSliderListener(this);
188         datagramreader.addSliderListener(this);
189     }
190
191     public void keyPressed(MouseEvent mouseevent) {
192         if (mouseevent.getSource() == japan1Button)
193             keyAdapter.sendKeyEvent(10, 53, 1);
194         else
195         if (mouseevent.getSource() == japan1aButton) {
196             keyAdapter.sendKeyEvent(10, 226, 1);
197             keyAdapter.sendKeyEvent(10, 53, 1);
198         } else
199         if (mouseevent.getSource() == japan30Button)
200             keyAdapter.sendKeyEvent(10, 57, 1);
201         else
202         if (mouseevent.getSource() == japan30aButton) {
203             keyAdapter.sendKeyEvent(10, 226, 1);
204             keyAdapter.sendKeyEvent(10, 57, 1);
205         } else
206         if (mouseevent.getSource() == japan131Button)
207             keyAdapter.sendKeyEvent(10, 139, 1);
208         else
209         if (mouseevent.getSource() == japan132Button)
210             keyAdapter.sendKeyEvent(10, 138, 1);
211         else
212         if (mouseevent.getSource() == japan132aButton) {
213             keyAdapter.sendKeyEvent(10, 226, 1);
214             keyAdapter.sendKeyEvent(10, 138, 1);
215         } else
216         if (mouseevent.getSource() == japan132sButton) {
217             keyAdapter.sendKeyEvent(10, 225, 1);
218             keyAdapter.sendKeyEvent(10, 138, 1);
219         } else
220         if (mouseevent.getSource() == japan133Button)
221             keyAdapter.sendKeyEvent(10, 136, 1);
222         else
223         if (mouseevent.getSource() == japan133aButton) {
224             keyAdapter.sendKeyEvent(10, 226, 1);
225             keyAdapter.sendKeyEvent(10, 136, 1);
226         } else
227         if (mouseevent.getSource() == japan133sButton) {
228             keyAdapter.sendKeyEvent(10, 225, 1);
229             keyAdapter.sendKeyEvent(10, 136, 1);
230         } else
231         if (mouseevent.getSource() == tildeButton) {
232             int i = keyAdapter.getButtonModifierCode(1);
233             if (i != 0)
234                 keyAdapter.sendKeyEvent(10, i, 1);
235             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(1), 1);
236         } else
237         if (mouseevent.getSource() == circumflexButton) {
238             int j = keyAdapter.getButtonModifierCode(2);
239             if (j != 0)
240                 keyAdapter.sendKeyEvent(10, j, 1);
241             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(2), 1);
242         } else
243         if (mouseevent.getSource() == diaeresisButton) {
244             int k = keyAdapter.getButtonModifierCode(3);
245             if (k != 0)
246                 keyAdapter.sendKeyEvent(10, k, 1);
247             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(3), 1);
248         } else
249         if (mouseevent.getSource() == graveButton) {
250             int l = keyAdapter.getButtonModifierCode(4);
251             if (l != 0)
252                 keyAdapter.sendKeyEvent(10, l, 1);
253             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(4), 1);
254         } else
255         if (mouseevent.getSource() == acuteButton) {
256             int i1 = keyAdapter.getButtonModifierCode(5);
257             if (i1 != 0)
258                 keyAdapter.sendKeyEvent(10, i1, 1);
259             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(5), 1);
260         } else
261         if (mouseevent.getSource() == leftSquareBracketButton) {
262             int j1 = keyAdapter.getButtonModifierCode(6);
263             if (j1 != 0)
264                 keyAdapter.sendKeyEvent(10, j1, 1);
265             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(6), 1);
266         } else
267         if (mouseevent.getSource() == rightSquareBracketButton) {
268             int k1 = keyAdapter.getButtonModifierCode(7);
269             if (k1 != 0)
270                 keyAdapter.sendKeyEvent(10, k1, 1);
271             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(7), 1);
272         } else
273         if (mouseevent.getSource() == leftCurlyBracketButton) {
274             int l1 = keyAdapter.getButtonModifierCode(8);
275             if (l1 != 0)
276                 keyAdapter.sendKeyEvent(10, l1, 1);
277             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(8), 1);
278         } else
279         if (mouseevent.getSource() == rightCurlyBracketButton) {
280             int i2 = keyAdapter.getButtonModifierCode(9);
281             if (i2 != 0)
282                 keyAdapter.sendKeyEvent(10, i2, 1);
283             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(9), 1);
284         } else
285         if (mouseevent.getSource() == backslashButton) {
286             int j2 = keyAdapter.getButtonModifierCode(10);
287             if (j2 != 0)
288                 keyAdapter.sendKeyEvent(10, j2, 1);
289             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(10), 1);
290         } else
291         if (mouseevent.getSource() == atButton) {
292             int k2 = keyAdapter.getButtonModifierCode(11);
293             if (k2 != 0)
294                 keyAdapter.sendKeyEvent(10, k2, 1);
295             keyAdapter.sendKeyEvent(10, keyAdapter.getButtonCode(11), 1);
296         }
297     }
298
299     public void keyReleased(MouseEvent mouseevent) {
300         if (mouseevent.getSource() == japan1Button)
301             keyAdapter.sendKeyEvent(11, 53, 1);
302         else
303         if (mouseevent.getSource() == japan1aButton) {
304             keyAdapter.sendKeyEvent(11, 53, 1);
305             keyAdapter.sendKeyEvent(11, 226, 1);
306         } else
307         if (mouseevent.getSource() == japan30Button)
308             keyAdapter.sendKeyEvent(11, 57, 1);
309         else
310         if (mouseevent.getSource() == japan30aButton) {
311             keyAdapter.sendKeyEvent(11, 57, 1);
312             keyAdapter.sendKeyEvent(11, 226, 1);
313         } else
314         if (mouseevent.getSource() == japan131Button)
315             keyAdapter.sendKeyEvent(11, 139, 1);
316         else
317         if (mouseevent.getSource() == japan132Button)
318             keyAdapter.sendKeyEvent(11, 138, 1);
319         else
320         if (mouseevent.getSource() == japan132aButton) {
321             keyAdapter.sendKeyEvent(11, 138, 1);
322             keyAdapter.sendKeyEvent(11, 226, 1);
323         } else
324         if (mouseevent.getSource() == japan132sButton) {
325             keyAdapter.sendKeyEvent(11, 138, 1);
326             keyAdapter.sendKeyEvent(11, 225, 1);
327         } else
328         if (mouseevent.getSource() == japan133Button)
329             keyAdapter.sendKeyEvent(11, 136, 1);
330         else
331         if (mouseevent.getSource() == japan133aButton) {
332             keyAdapter.sendKeyEvent(11, 136, 1);
333             keyAdapter.sendKeyEvent(11, 226, 1);
334         } else
335         if (mouseevent.getSource() == japan133sButton) {
336             keyAdapter.sendKeyEvent(11, 136, 1);
337             keyAdapter.sendKeyEvent(11, 225, 1);
338         } else
339         if (mouseevent.getSource() == tildeButton) {
340             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(1), 1);
341             int i = keyAdapter.getButtonModifierCode(1);
342             if (i != 0)
343                 keyAdapter.sendKeyEvent(11, i, 1);
344         } else
345         if (mouseevent.getSource() == circumflexButton) {
346             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(2), 1);
347             int j = keyAdapter.getButtonModifierCode(2);
348             if (j != 0)
349                 keyAdapter.sendKeyEvent(11, j, 1);
350         } else
351         if (mouseevent.getSource() == diaeresisButton) {
352             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(3), 1);
353             int k = keyAdapter.getButtonModifierCode(3);
354             if (k != 0)
355                 keyAdapter.sendKeyEvent(11, k, 1);
356         } else
357         if (mouseevent.getSource() == graveButton) {
358             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(4), 1);
359             int l = keyAdapter.getButtonModifierCode(4);
360             if (l != 0)
361                 keyAdapter.sendKeyEvent(11, l, 1);
362         } else
363         if (mouseevent.getSource() == acuteButton) {
364             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(5), 1);
365             int i1 = keyAdapter.getButtonModifierCode(5);
366             if (i1 != 0)
367                 keyAdapter.sendKeyEvent(11, i1, 1);
368         } else
369         if (mouseevent.getSource() == leftSquareBracketButton) {
370             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(6), 1);
371             int j1 = keyAdapter.getButtonModifierCode(6);
372             if (j1 != 0)
373                 keyAdapter.sendKeyEvent(11, j1, 1);
374         } else
375         if (mouseevent.getSource() == rightSquareBracketButton) {
376             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(7), 1);
377             int k1 = keyAdapter.getButtonModifierCode(7);
378             if (k1 != 0)
379                 keyAdapter.sendKeyEvent(11, k1, 1);
380         } else
381         if (mouseevent.getSource() == leftCurlyBracketButton) {
382             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(8), 1);
383             int l1 = keyAdapter.getButtonModifierCode(8);
384             if (l1 != 0)
385                 keyAdapter.sendKeyEvent(11, l1, 1);
386         } else
387         if (mouseevent.getSource() == rightCurlyBracketButton) {
388             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(9), 1);
389             int i2 = keyAdapter.getButtonModifierCode(9);
390             if (i2 != 0)
391                 keyAdapter.sendKeyEvent(11, i2, 1);
392         } else
393         if (mouseevent.getSource() == backslashButton) {
394             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(10), 1);
395             int j2 = keyAdapter.getButtonModifierCode(10);
396             if (j2 != 0)
397                 keyAdapter.sendKeyEvent(11, j2, 1);
398         } else
399         if (mouseevent.getSource() == atButton) {
400             keyAdapter.sendKeyEvent(11, keyAdapter.getButtonCode(11), 1);
401             int k2 = keyAdapter.getButtonModifierCode(11);
402             if (k2 != 0)
403                 keyAdapter.sendKeyEvent(11, k2, 1);
404         }
405         videoPanel.requestFocusInWindow();
406         videoPanel.requestFocus();
407     }
408
409     public void populateCountryKeyBar(int i) {
410         removeAll();
411         setVisible(false);
412         switch (i) {
413         case 5: // '\005'
414             add(japan1Button);
415             add(japan1aButton);
416             add(japan30Button);
417             add(japan30aButton);
418             add(japan131Button);
419             add(japan132Button);
420             add(japan132sButton);
421             add(japan132aButton);
422             add(japan133Button);
423             add(japan133sButton);
424             add(japan133aButton);
425             setVisible(true);
426             break;
427
428         case 6: // '\006'
429             add(circumflexButton);
430             add(diaeresisButton);
431             add(graveButton);
432             add(acuteButton);
433             add(tildeButton);
434             add(leftSquareBracketButton);
435             add(rightSquareBracketButton);
436             add(leftCurlyBracketButton);
437             add(rightCurlyBracketButton);
438             add(backslashButton);
439             setVisible(true);
440             break;
441
442         case 4: // '\004'
443             add(graveButton);
444             add(tildeButton);
445             add(atButton);
446             setVisible(true);
447             break;
448
449         case 3: // '\003'
450             add(circumflexButton);
451             add(graveButton);
452             add(acuteButton);
453             add(backslashButton);
454             setVisible(true);
455             break;
456
457         case 2: // '\002'
458             add(circumflexButton);
459             add(diaeresisButton);
460             add(tildeButton);
461             add(graveButton);
462             setVisible(true);
463             break;
464
465         case 1: // '\001'
466             add(circumflexButton);
467             add(diaeresisButton);
468             add(tildeButton);
469             add(graveButton);
470             add(acuteButton);
471             setVisible(true);
472             break;
473         }
474         validate();
475     }
476
477     public void buildCustomizedButtonBar(ComboKeyArray combokeyarray) {
478         removeAll();
479         add(new JLabel("Video Speed (bps)"));
480         add(slider);
481         add(sliderHelp);
482         add(new javax.swing.JToolBar.Separator());
483         for (int i = 0; i < 12; i++) {
484             final ArrayList keyData = combokeyarray.getKeysForButton(i);
485             if (keyData != null) {
486                 StringBuffer stringbuffer = new StringBuffer();
487                 for (Iterator iterator = keyData.iterator(); iterator.hasNext();) {
488                     KeyData keydata = (KeyData)iterator.next();
489                     String s = keydata.getKeyName();
490                     if (s.endsWith(")"))
491                         s = s.substring(0, s.indexOf('(') - 1);
492                     stringbuffer.append(s);
493                     if (iterator.hasNext())
494                         stringbuffer.append("+");
495                 }
496
497                 JButton jbutton = new JButton(stringbuffer.toString());
498                 jbutton.addActionListener(new ActionListener() {
499
500                     public void actionPerformed(ActionEvent actionevent) {
501                         for (int j = 0; j < keyData.size(); j++) {
502                             KeyData keydata1 = (KeyData)keyData.get(j);
503                             if (keydata1 != null)
504                                 keyAdapter.sendKeyEvent(10, keydata1.getUsageCode(), 1);
505                         }
506
507                         for (int k = keyData.size() - 1; k >= 0; k--) {
508                             KeyData keydata2 = (KeyData)keyData.get(k);
509                             if (keydata2 != null)
510                                 keyAdapter.sendKeyEvent(11, keydata2.getUsageCode(), 1);
511                         }
512
513                     }
514
515                 }
516 );
517                 add(jbutton);
518             }
519         }
520
521         add(new javax.swing.JToolBar.Separator());
522         configLink.setForeground(Color.BLUE);
523         configLink.addMouseListener(new MouseListener() {
524
525             public void mouseClicked(MouseEvent mouseevent) {
526                 options.show();
527             }
528
529             public void mousePressed(MouseEvent mouseevent) {
530                 configLink.setForeground(Color.LIGHT_GRAY);
531             }
532
533             public void mouseReleased(MouseEvent mouseevent) {
534                 configLink.setForeground(Color.GRAY);
535             }
536
537             public void mouseEntered(MouseEvent mouseevent) {
538                 configLink.setForeground(Color.GRAY);
539             }
540
541             public void mouseExited(MouseEvent mouseevent) {
542                 configLink.setForeground(Color.BLUE);
543             }
544
545         }
546 );
547         add(configLink);
548         validate();
549     }
550
551     public void setSliderInitialBitRate(long l) {
552         if (l <= (long)BITRATES[1]) {
553             slider.setValue(1);
554             datagramReader.setInitialBitRate(BITRATES[1]);
555             return;
556         }
557         if (l >= (long)BITRATES[BITRATES.length - 1]) {
558             slider.setValue(BITRATES.length - 1);
559             datagramReader.setInitialBitRate(BITRATES[BITRATES.length - 1]);
560             return;
561         }
562         for (int i = 0; i < BITRATES.length; i++)
563             if (l < (long)BITRATES[i]) {
564                 int j = BITRATES[i - 1] + (BITRATES[i] - BITRATES[i - 1]) / 2;
565                 if (l < (long)j) {
566                     slider.setValue(i - 1);
567                     datagramReader.setInitialBitRate(BITRATES[i - 1]);
568                 } else {
569                     slider.setValue(i);
570                     datagramReader.setInitialBitRate(BITRATES[i]);
571                 }
572                 return;
573             }
574
575         System.out.println("Error: Failed to set bitrate: " + l);
576     }
577
578
579
580
581
582
583
584
585 }