KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quikj > application > web > talk > client > TalkFrame


1 /*
2  * TalkFrame.java
3  *
4  * Created on February 5, 2002, 4:01 PM
5  */

6
7 package com.quikj.application.web.talk.client;
8
9 import java.awt.*;
10 import java.applet.*;
11 import java.awt.event.*;
12 import java.io.*;
13 import java.net.*;
14 import java.util.*;
15 import java.text.*;
16
17 import com.quikj.client.framework.*;
18 import com.quikj.client.beans.*;
19 import com.quikj.application.web.talk.messaging.*;
20
21 /**
22  *
23  * @author amit
24  */

25 public class TalkFrame extends java.awt.Frame JavaDoc implements HTTPConnectionClosedInterface
26 {
27     /** Creates new form NewTalkFrame */
28     public TalkFrame(String JavaDoc title,
29     String JavaDoc host,
30     int port,
31     int appl_id,
32     Applet applet,
33     boolean unregistered,
34     String JavaDoc unregistered_called,
35     CallingNameElement element,
36     String JavaDoc caption,
37     Image logo)
38     throws TalkClientException
39     {
40         super();
41         
42         String JavaDoc parm = applet.getParameter("client-type");
43         if (parm != null)
44         {
45             clientType = parm;
46         }
47         
48         TalkMessageParser.setParserType(TalkMessageParser.NANOXML_PARSER);
49         
50         this.title = title;
51         this.host = host;
52         this.port = port;
53         applicationId = appl_id;
54         
55         this.applet = applet;
56         this.unregistered = unregistered;
57         unregisteredCalled = unregistered_called;
58         
59         this.caption = caption;
60         this.logo = logo;
61         
62         setLanguage();
63         initApplicationMediaElements();
64         
65         autoEmailInfo = new AutoEmailTranscriptInfo(applet);
66         
67         if (isRegistered() == true)
68         {
69             initComponents();
70             
71             Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
72             setSize(dim.width < 600?dim.width:600,
73             dim.height < 600 ?dim.height:600);
74             
75             // and center it
76
Rectangle bounds = getBounds();
77             Point mid = new Point(0 + (dim.width/2), 0 + (dim.height/2));
78             int x = mid.x - (bounds.width/2);
79             int y = mid.y - (bounds.height/2);
80             if (x < 0) x = 0;
81             if (y < 0) y = 0;
82             
83             setBounds(x, y, bounds.width, bounds.height);
84             
85             if (caption != null)
86             {
87                 captionLabel.setText(caption);
88             }
89             
90             if (logo != null)
91             {
92                 ImageButton i_button = new ImageButton();
93                 i_button.setImage(logo);
94                 
95                 logoPane.add(i_button);
96                 i_button.invalidate();
97             }
98             
99             String JavaDoc email_enabled = applet.getParameter("email");
100             if (email_enabled != null)
101             {
102                 if (email_enabled.equals("no") == true)
103                 {
104                     setEmailEnabled(false);
105                     
106                     if (clientType.equals("JAVA") == true)
107                     {
108                         emailMenuItem.setEnabled(false);
109                     }
110                 }
111                 else
112                 {
113                     setEmailEnabled(true);
114                     if (clientType.equals("JAVA") == true)
115                     {
116                         emailMenuItem.setEnabled(true);
117                     }
118                 }
119             }
120             
121             setOptionsMenu();
122         }
123         
124         String JavaDoc display_session_info = applet.getParameter("display-session-info");
125         if (display_session_info != null)
126         {
127             if (display_session_info.equals("no") == true)
128             {
129                 setDisplaySessionInfo(false);
130             }
131             else if (display_session_info.equals("yes") == true)
132             {
133                 setDisplaySessionInfo(true);
134             }
135         }
136         
137         String JavaDoc allow_buzz = applet.getParameter("allow-send-buzz");
138         if (allow_buzz != null)
139         {
140             if (allow_buzz.equals("no") == true)
141             {
142                 setAllowSendBuzz(false);
143             }
144             else if (allow_buzz.equals("yes") == true)
145             {
146                 setAllowSendBuzz(true);
147             }
148         }
149         
150         String JavaDoc allow_webpage = applet.getParameter("allow-send-webpage");
151         if (allow_webpage != null)
152         {
153             if (allow_webpage.equals("no") == true)
154             {
155                 setAllowSendWebPage(false);
156             }
157             else if (allow_webpage.equals("yes") == true)
158             {
159                 setAllowSendWebPage(true);
160             }
161         }
162         userInformation.setApplet(true);
163         userInformation.setLanguage(language);
164         instance = this;
165         initUserToUserElements();
166         
167         if (isRegistered() == false)
168         {
169             if (element != null)
170             {
171                 userInformation = element.getCallParty();
172                 
173                 // re-write the applet and the language
174
userInformation.setApplet(applet != null?true:false);
175                 userInformation.setLanguage(language);
176             }
177             else
178             {
179                 userInformation.setName("unregistered");
180                 long date = (new Date()).getTime() & 0xFFFF;
181                 userInformation.setFullName(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
182                 locale).getString("Visitor") + " " + date);
183             }
184             
185             downloadClips();
186             
187             if (connect() == true)
188             {
189                 com.setRequestListener(new RequestListener());
190                 
191                 TalkSessionInterface session = TalkSessionFactory.getInstance().createSession();
192                 if (clientType.equals("HTML") == true)
193                 {
194                     dhtml = (TalkSession)session;
195                 }
196                 
197                 if (session.makeCall(unregistered_called) == false)
198                 {
199                     throw new TalkClientException(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
200                     locale).getString("Could_not_make_call"));
201                 }
202             }
203             else
204             {
205                 throw new TalkClientException(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
206                 locale).getString("Could_not_connect_to_the_server"));
207             }
208         }
209         else // registered user
210
{
211             show();
212             doLogin();
213         }
214     }
215     
216     
217     public static TalkFrame Instance()
218     {
219         return instance;
220     }
221     
222     private void initUserToUserElements()
223     {
224         String JavaDoc applications = applet.getParameter("application");
225         if (applications == null)
226         {
227             return;
228         }
229         
230         StringTokenizer tokens = new StringTokenizer(applications, ":");
231         int num_tokens = tokens.countTokens();
232         boolean sep_placed = false;
233         
234         for (int i = 0; i < num_tokens; i++)
235         {
236             String JavaDoc class_info = tokens.nextToken();
237             // break it up further
238
StringTokenizer ptokens = new StringTokenizer(class_info, "?");
239             int num_ptokens = ptokens.countTokens();
240             String JavaDoc class_name = ptokens.nextToken();
241             Hashtable params = new Hashtable();
242             if (num_ptokens > 1)
243             {
244                 String JavaDoc param_values = ptokens.nextToken();
245                 StringTokenizer pvtokens = new StringTokenizer(param_values, "&");
246                 int num_pvtokens = pvtokens.countTokens();
247                 for (int j = 0; j < num_pvtokens; j++)
248                 {
249                     StringTokenizer pvtoken = new StringTokenizer(pvtokens.nextToken(),
250                     "=");
251                     int num = pvtoken.countTokens();
252                     if (num == 2)
253                     {
254                         params.put(pvtoken.nextToken(), pvtoken.nextToken());
255                     }
256                     // else ignore
257
}
258             }
259             
260             try
261             {
262                 Class JavaDoc c = Class.forName(class_name);
263                 NetworkApplicationInterface n = (NetworkApplicationInterface)c.newInstance();
264                 n.init(params);
265                 applicationList.put(class_name, n);
266                 
267                 if (n.menuItemName() != null)
268                 {
269                     if (sep_placed == false)
270                     {
271                         operationsMenu.addSeparator();
272                         sep_placed = true;
273                     }
274                     
275                     if (isRegistered() == true)
276                     {
277                         // add it to the operations menu
278
MenuItem mi = new MenuItem(n.menuItemName());
279                         mi.addActionListener(new ApplicationsMenuListener(class_name));
280                         operationsMenu.add(mi);
281                     }
282                 }
283             }
284             catch (Exception JavaDoc ex)
285             {
286                 System.out.println(ex.getClass().getName() + ": " + ex.getMessage());
287                 ex.printStackTrace();
288                 // ignore
289
continue;
290             }
291             
292         }
293     }
294     
295     private void initApplicationMediaElements()
296     {
297         String JavaDoc plugins = applet.getParameter("media");
298         if (plugins != null)
299         {
300             StringTokenizer tokens = new StringTokenizer(plugins, ":");
301             int num_tokens = tokens.countTokens();
302             
303             for (int i = 0; i < num_tokens; i++)
304             {
305                 String JavaDoc class_name = tokens.nextToken();
306                 applicationMediaElements.addElement(class_name);
307             }
308         }
309     }
310     
311     public static Locale getLocale(String JavaDoc language)
312     {
313         Locale locale = new Locale("en", "US");
314         if (language != null)
315         {
316             if (language.equals("local") == true)
317             {
318                 locale = Locale.getDefault();
319             }
320             else if (language.equals("French") == true)
321             {
322                 locale = new Locale("fr", "FR");
323             }
324             else if (language.equals("German") == true)
325             {
326                 locale = new Locale("de", "DE");;
327             }
328             else if (language.equals("Spanish") == true)
329             {
330                 locale = new Locale("es", "ES");
331             }
332             else if (language.equals("Dutch") == true)
333             {
334                 locale = new Locale("nl", "BE");
335             }
336             else if (language.equals("Italian") == true)
337             {
338                 locale = new Locale("it", "IT");
339             }
340         }
341         return locale;
342     }
343     
344     private void setLanguage()
345     {
346         language = applet.getParameter("language");
347         locale = getLocale(language);
348         
349         // set the language
350
String JavaDoc lang = locale.getLanguage();
351         if (lang.equals("fr") == true)
352         {
353             language = "French";
354         }
355         else if (lang.equals("de") == true)
356         {
357             language = "German";
358         }
359         else if (lang.equals("es") == true)
360         {
361             language = "Spanish";
362         }
363         else if (lang.equals("nl") == true)
364         {
365             language = "Dutch";
366         }
367         else if (lang.equals("it") == true)
368         {
369             language = "Italian";
370         }
371         else
372         {
373             language = "English";
374         }
375     }
376     
377     public Locale getLocale()
378     {
379         return locale;
380     }
381     
382     private AudioClip getAudioClip(String JavaDoc url_string)
383     {
384         URL url = URLUtils.formatURL(applet, url_string);
385         if (url == null) return null;
386         return applet.getAudioClip(url);
387     }
388     
389     /** This method is called from within the constructor to
390      * initialize the form.
391      * WARNING: Do NOT modify this code. The content of this method is
392      * always regenerated by the Form Editor.
393      */

394     private void initComponents()//GEN-BEGIN:initComponents
395
{
396         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
397
398         panel1 = new java.awt.Panel JavaDoc();
399         captionLabel = new java.awt.Label JavaDoc();
400         logoPane = new ScrollPane(ScrollPane.SCROLLBARS_NEVER);
401         logoPane.setSize(75, 75);
402         label1 = new java.awt.Label JavaDoc();
403         sessionList = new java.awt.List JavaDoc();
404         label2 = new java.awt.Label JavaDoc();
405         groupMembers = new java.awt.List JavaDoc();
406         statusBar = new java.awt.TextField JavaDoc();
407         menuBar1 = new java.awt.MenuBar JavaDoc();
408         fileMenu = new java.awt.Menu JavaDoc();
409         changePasswordMenuItem = new java.awt.MenuItem JavaDoc();
410         logoutMenuItem = new java.awt.MenuItem JavaDoc();
411         exitMenuItem = new java.awt.MenuItem JavaDoc();
412         editMenu = new java.awt.Menu JavaDoc();
413         copyMenuItem = new java.awt.MenuItem JavaDoc();
414         pasteMenuItem = new java.awt.MenuItem JavaDoc();
415         optionMenu = new java.awt.Menu JavaDoc();
416         allowIncomingMenu = new java.awt.MenuItem JavaDoc();
417         autoAnswerMenu = new java.awt.MenuItem JavaDoc();
418         audioControlMenu = new java.awt.MenuItem JavaDoc();
419         operationsMenu = new java.awt.Menu JavaDoc();
420         talktoMenuItem = new java.awt.MenuItem JavaDoc();
421         joinMenu = new java.awt.MenuItem JavaDoc();
422         emailMenuItem = new java.awt.MenuItem JavaDoc();
423         helpMenu = new java.awt.Menu JavaDoc();
424         aboutMenuItem = new java.awt.MenuItem JavaDoc();
425
426         setLayout(new java.awt.GridBagLayout JavaDoc());
427
428         setBackground(java.awt.Color.white);
429         setTitle(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Talk"));
430         addWindowListener(new java.awt.event.WindowAdapter JavaDoc()
431         {
432             public void windowClosing(java.awt.event.WindowEvent JavaDoc evt)
433             {
434                 exitForm(evt);
435             }
436         });
437
438         panel1.setLayout(new java.awt.GridBagLayout JavaDoc());
439
440         panel1.setBackground(new java.awt.Color JavaDoc(255, 255, 255));
441         captionLabel.setFont(new java.awt.Font JavaDoc("Dialog", 0, 18));
442         captionLabel.setText(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Web_Talk_Virtual_Call_Center"));
443         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
444         gridBagConstraints.gridx = 0;
445         gridBagConstraints.gridy = 0;
446         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
447         gridBagConstraints.weightx = 100.0;
448         panel1.add(captionLabel, gridBagConstraints);
449
450         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
451         gridBagConstraints.gridx = 1;
452         gridBagConstraints.gridy = 0;
453         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
454         panel1.add(logoPane, gridBagConstraints);
455
456         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
457         gridBagConstraints.gridx = 0;
458         gridBagConstraints.gridy = 0;
459         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
460         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
461         gridBagConstraints.insets = new java.awt.Insets JavaDoc(10, 10, 10, 10);
462         add(panel1, gridBagConstraints);
463
464         label1.setText(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Active_Sessions"));
465         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
466         gridBagConstraints.gridx = 0;
467         gridBagConstraints.gridy = 1;
468         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
469         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
470         gridBagConstraints.weightx = 100.0;
471         gridBagConstraints.insets = new java.awt.Insets JavaDoc(10, 10, 0, 0);
472         add(label1, gridBagConstraints);
473
474         sessionList.setMultipleMode(true);
475         sessionList.setBackground(new java.awt.Color JavaDoc(255, 255, 255));
476         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
477         gridBagConstraints.gridx = 0;
478         gridBagConstraints.gridy = 2;
479         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
480         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
481         gridBagConstraints.weightx = 100.0;
482         gridBagConstraints.weighty = 20.0;
483         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 10, 0, 10);
484         add(sessionList, gridBagConstraints);
485
486         label2.setText(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Friends_List"));
487         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
488         gridBagConstraints.gridx = 0;
489         gridBagConstraints.gridy = 3;
490         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
491         gridBagConstraints.insets = new java.awt.Insets JavaDoc(10, 10, 0, 0);
492         add(label2, gridBagConstraints);
493
494         groupMembers.setFont(new java.awt.Font JavaDoc("Monospaced", 0, 12));
495         groupMembers.setBackground(new java.awt.Color JavaDoc(255, 255, 255));
496         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
497         gridBagConstraints.gridx = 0;
498         gridBagConstraints.gridy = 4;
499         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
500         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
501         gridBagConstraints.weightx = 100.0;
502         gridBagConstraints.weighty = 80.0;
503         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 10, 0, 10);
504         add(groupMembers, gridBagConstraints);
505
506         statusBar.setBackground(new java.awt.Color JavaDoc(255, 255, 255));
507         statusBar.setEditable(false);
508         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
509         gridBagConstraints.gridx = 0;
510         gridBagConstraints.gridy = 5;
511         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
512         gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
513         gridBagConstraints.insets = new java.awt.Insets JavaDoc(10, 10, 10, 10);
514         add(statusBar, gridBagConstraints);
515
516         fileMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("File"));
517         changePasswordMenuItem.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Change_password"));
518         changePasswordMenuItem.addActionListener(new java.awt.event.ActionListener JavaDoc()
519         {
520             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt)
521             {
522                 changePasswordMenuItemActionPerformed(evt);
523             }
524         });
525
526         fileMenu.add(changePasswordMenuItem);
527
528         fileMenu.addSeparator();
529         logoutMenuItem.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Logout"));
530         logoutMenuItem.addActionListener(new java.awt.event.ActionListener JavaDoc()
531         {
532             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt)
533             {
534                 logoutMenuItemActionPerformed(evt);
535             }
536         });
537
538         fileMenu.add(logoutMenuItem);
539
540         exitMenuItem.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Exit"));
541         exitMenuItem.addActionListener(new java.awt.event.ActionListener JavaDoc()
542         {
543             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt)
544             {
545                 exitMenuItemActionPerformed(evt);
546             }
547         });
548
549         fileMenu.add(exitMenuItem);
550
551         menuBar1.add(fileMenu);
552
553         editMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Edit"));
554         copyMenuItem.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Copy"));
555         editMenu.add(copyMenuItem);
556
557         pasteMenuItem.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Paste"));
558         editMenu.add(pasteMenuItem);
559
560         menuBar1.add(editMenu);
561
562         optionMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Options"));
563         allowIncomingMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Set_Do_Not_Disturb_quot"));
564         allowIncomingMenu.addActionListener(new java.awt.event.ActionListener JavaDoc()
565         {
566             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt)
567             {
568                 allowIncomingMenuActionPerformed(evt);
569             }
570         });
571
572         optionMenu.add(allowIncomingMenu);
573
574         autoAnswerMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Set_Auto_Answer_______") + " ");
575         autoAnswerMenu.addActionListener(new java.awt.event.ActionListener JavaDoc()
576         {
577             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt)
578             {
579                 autoAnswerMenuActionPerformed(evt);
580             }
581         });
582
583         optionMenu.add(autoAnswerMenu);
584
585         audioControlMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Audio_Control"));
586         audioControlMenu.addActionListener(new java.awt.event.ActionListener JavaDoc()
587         {
588             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt)
589             {
590                 audioControlMenuActionPerformed(evt);
591             }
592         });
593
594         optionMenu.add(audioControlMenu);
595
596         menuBar1.add(optionMenu);
597
598         operationsMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Operations"));
599         talktoMenuItem.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Talk_to_") + " ");
600         talktoMenuItem.addActionListener(new java.awt.event.ActionListener JavaDoc()
601         {
602             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt)
603             {
604                 talktoMenuItemActionPerformed(evt);
605             }
606         });
607
608         operationsMenu.add(talktoMenuItem);
609
610         joinMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Join_selected_sessions"));
611         joinMenu.addActionListener(new java.awt.event.ActionListener JavaDoc()
612         {
613             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt)
614             {
615                 joinMenuActionPerformed(evt);
616             }
617         });
618
619         operationsMenu.add(joinMenu);
620
621         emailMenuItem.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Send_E-mail"));
622         emailMenuItem.addActionListener(new java.awt.event.ActionListener JavaDoc()
623         {
624             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt)
625             {
626                 emailMenuItemActionPerformed(evt);
627             }
628         });
629
630         operationsMenu.add(emailMenuItem);
631
632         menuBar1.add(operationsMenu);
633
634         helpMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Help"));
635         aboutMenuItem.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("About"));
636         aboutMenuItem.addActionListener(new java.awt.event.ActionListener JavaDoc()
637         {
638             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt)
639             {
640                 aboutMenuItemActionPerformed(evt);
641             }
642         });
643
644         helpMenu.add(aboutMenuItem);
645
646         menuBar1.add(helpMenu);
647
648         setMenuBar(menuBar1);
649
650         pack();
651     }//GEN-END:initComponents
652

653     private void emailMenuItemActionPerformed(java.awt.event.ActionEvent JavaDoc evt)//GEN-FIRST:event_emailMenuItemActionPerformed
654
{//GEN-HEADEREND:event_emailMenuItemActionPerformed
655
// Add your handling code here:
656
Vector addresses = new Vector();
657         
658         EmailFrame email = new EmailFrame();
659         email.setFrom(userInformation.getEmail());
660         
661         // add myself to the address list
662
if (userInformation.getEmail() != null)
663         {
664             if (addresses.contains(userInformation.getEmail()) == false)
665             {
666                 addresses.addElement(userInformation.getEmail());
667             }
668         }
669         
670         // add parties from the sessions that I have
671
Enumeration elements = callList.elements();
672         while (elements.hasMoreElements() == true)
673         {
674             TalkSessionInterface session = (TalkSessionInterface)elements.nextElement();
675             CallInfo cinfo = session.getCallInfo();
676             Vector v = cinfo.getOtherParties();
677             
678             for (int i = 0; i < v.size(); i++)
679             {
680                 CallPartyElement element = (CallPartyElement)v.elementAt(i);
681                 if (element.getEmail() != null)
682                 {
683                     if (addresses.contains(element.getEmail()) == false)
684                     {
685                         addresses.addElement(element.getEmail());
686                     }
687                 }
688             }
689         }
690         
691         if (addresses.size() > 0)
692         {
693             String JavaDoc[] abook = new String JavaDoc[addresses.size()];
694             for (int i = 0; i < abook.length; i++)
695             {
696                 abook[i] = (String JavaDoc)addresses.elementAt(i);
697             }
698             
699             email.setAddressBook(abook);
700         }
701         
702     }//GEN-LAST:event_emailMenuItemActionPerformed
703

704     private void audioControlMenuActionPerformed(java.awt.event.ActionEvent JavaDoc evt)//GEN-FIRST:event_audioControlMenuActionPerformed
705
{//GEN-HEADEREND:event_audioControlMenuActionPerformed
706
// Add your handling code here
707
new AudioControlDialog(this, locale);
708     }//GEN-LAST:event_audioControlMenuActionPerformed
709

710     private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent JavaDoc evt)//GEN-FIRST:event_aboutMenuItemActionPerformed
711
{//GEN-HEADEREND:event_aboutMenuItemActionPerformed
712
// Add your handling code here:
713
new AboutAceOperatorFrame(this, locale, applet);
714         
715     }//GEN-LAST:event_aboutMenuItemActionPerformed
716

717     private void changePasswordMenuItemActionPerformed(java.awt.event.ActionEvent JavaDoc evt)//GEN-FIRST:event_changePasswordMenuItemActionPerformed
718
{//GEN-HEADEREND:event_changePasswordMenuItemActionPerformed
719
// Add your handling code here:
720
ChangePasswordDialog cpd = new ChangePasswordDialog(this, locale);
721         if (cpd.isChangeSelected() == true)
722         {
723             String JavaDoc error = ChangePasswordDialog.validPasswordSyntax(cpd.getNewPassword(), locale);
724             if (error != null)
725             {
726                 new InformationDialog(this, java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
727                 locale).getString("Password_selection_error"),
728                 error,
729                 java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
730                 locale).getString("_Close_"),
731                 true);
732                 return;
733             }
734             
735             // send the change password message
736
ChangePasswordRequestMessage message = new ChangePasswordRequestMessage();
737             message.setNewPassword(cpd.getNewPassword());
738             message.setOldPassword(cpd.getOldPassword());
739             message.setUserName(userInformation.getUserName());
740             
741             // send the request
742
int req_id = com.sendRequestMessage("text/xml",
743             message.format(),
744             new ChangePasswordResponseListener(),
745             10000);
746             if (req_id == -1)
747             {
748                 new InformationDialog(TalkFrame.this,
749                 java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
750                 locale).getString("Change_password_status"),
751                 java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
752                 locale).getString("The_change_password_request_could_not_be_sent"),
753                 java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
754                 locale).getString("_Close_"),
755                 5000L);
756                 return;
757             }
758         }
759     }//GEN-LAST:event_changePasswordMenuItemActionPerformed
760

761     private void joinMenuActionPerformed(java.awt.event.ActionEvent JavaDoc evt)//GEN-FIRST:event_joinMenuActionPerformed
762
{//GEN-HEADEREND:event_joinMenuActionPerformed
763
// Add your handling code here:
764

765         // Join call request
766
int[] selected_items = sessionList.getSelectedIndexes();
767         
768         if (selected_items.length < 2)
769         {
770             new InformationDialog(TalkFrame.this,
771             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
772             locale).getString("Action_not_permitted"),
773             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
774             locale).getString("You_should_select_at_least_two_sessions"),
775             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
776             locale).getString("_Close_"), true);
777             return;
778         }
779         
780         JoinRequestMessage message = new JoinRequestMessage();
781         
782         for (int i = 0; i < selected_items.length; i++)
783         {
784             TalkSessionInterface session = (TalkSessionInterface)sessionListVector.elementAt(i);
785             CallInfo call_info = session.getCallInfo();
786             if (call_info.isConnected() == false)
787             {
788                 // display error message
789
new InformationDialog(TalkFrame.this,
790                 java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
791                 locale).getString("Action_not_permitted"),
792                 java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
793                 locale).getString("All_sessions_must_be_in_the_connected_state"),
794                 java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
795                 locale).getString("_Close_"),
796                 true);
797                 return;
798             }
799             
800             message.addSession(call_info.getSessionId());
801         }
802         
803         // send the request
804
int req_id = com.sendRequestMessage("text/xml",
805         message.format(),
806         new JoinResponseListener(),
807         10000);
808         if (req_id == -1)
809         {
810             new InformationDialog(TalkFrame.this,
811             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
812             locale).getString("Join_status"),
813             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
814             locale).getString("The_join_request_could_not_be_sent"),
815             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
816             locale).getString("_Close_"),
817             5000L);
818             return;
819         }
820         
821     }//GEN-LAST:event_joinMenuActionPerformed
822

823     private void autoAnswerMenuActionPerformed(java.awt.event.ActionEvent JavaDoc evt)//GEN-FIRST:event_autoAnswerMenuActionPerformed
824
{//GEN-HEADEREND:event_autoAnswerMenuActionPerformed
825
// Add your handling code here:
826
if (autoAnswer == true)
827         {
828             autoAnswer = false;
829         }
830         else
831         {
832             autoAnswer = true;
833         }
834         
835         setOptionsMenu();
836         
837     }//GEN-LAST:event_autoAnswerMenuActionPerformed
838

839     private void allowIncomingMenuActionPerformed(java.awt.event.ActionEvent JavaDoc evt)//GEN-FIRST:event_allowIncomingMenuActionPerformed
840
{//GEN-HEADEREND:event_allowIncomingMenuActionPerformed
841
// Add your handling code here:
842
DndRequestMessage message = new DndRequestMessage();
843         message.setEnable(allowInboundCalls);
844         
845         // send the request
846
int req_id = com.sendRequestMessage("text/xml",
847         message.format(),
848         new DndResponseListener(),
849         10000);
850         if (req_id == -1)
851         {
852             // TODO change the error message
853
new InformationDialog(TalkFrame.this,
854             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
855             locale).getString("Change_password_status"),
856             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
857             locale).getString("The_change_password_request_could_not_be_sent"),
858             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
859             locale).getString("_Close_"),
860             5000L);
861             return;
862         }
863         
864     }//GEN-LAST:event_allowIncomingMenuActionPerformed
865

866     private void talktoMenuItemActionPerformed(java.awt.event.ActionEvent JavaDoc evt)//GEN-FIRST:event_talktoMenuItemActionPerformed
867
{//GEN-HEADEREND:event_talktoMenuItemActionPerformed
868
// Add your handling code here:
869
String JavaDoc name = getSelectedMember();
870         
871         TextFieldDialog make_call = new TextFieldDialog(TalkFrame.this,
872         java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
873         locale).getString("Call_") + " ",
874         java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
875         locale).getString("Call"),
876         java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
877         locale).getString("Cancel"),
878         true, name);
879         if (make_call.isOkSelected() == true)
880         {
881             String JavaDoc called_name = make_call.getText().trim();
882             if (called_name.length() > 0) // if the called name is specified
883
{
884                 if (called_name.equals(userInformation.getUserName()) == true)
885                 {
886                     new InformationDialog(TalkFrame.this,
887                     java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
888                     locale).getString("Call_status"),
889                     java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
890                     locale).getString("You_cannot_call_yourself"),
891                     java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
892                     locale).getString("_Close_"),
893                     5000L);
894                     return;
895                 }
896                 
897                 TalkSessionInterface session = TalkSessionFactory.getInstance().createSession();
898                 session.makeCall(called_name);
899             }
900         }
901     }//GEN-LAST:event_talktoMenuItemActionPerformed
902

903     private void exitMenuItemActionPerformed(java.awt.event.ActionEvent JavaDoc evt)//GEN-FIRST:event_exitMenuItemActionPerformed
904
{//GEN-HEADEREND:event_exitMenuItemActionPerformed
905
// Add your handling code here:
906
AudioControlDialog.reset();
907         resetOptions();
908         dispose();
909     }//GEN-LAST:event_exitMenuItemActionPerformed
910

911     private void logoutMenuItemActionPerformed(java.awt.event.ActionEvent JavaDoc evt)//GEN-FIRST:event_logoutMenuItemActionPerformed
912
{//GEN-HEADEREND:event_logoutMenuItemActionPerformed
913
// Add your handling code here:
914
setTitle(title + ' ' + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
915         locale).getString("_not_logged_in"));
916         disconnect();
917         
918         Enumeration elements = callList.elements();
919         
920         while (elements.hasMoreElements() == true)
921         {
922             TalkSessionInterface session = (TalkSessionInterface)elements.nextElement();
923             session.dispose();
924         }
925         
926         // clear the friends list
927
groupMembers.removeAll();
928         groupList.removeAllElements();
929         
930         // clear the session list
931
sessionList.removeAll();
932         
933         callList.clear();
934         
935         AudioControlDialog.reset();
936         resetOptions();
937         disconnect();
938         
939         doLogin();
940     }//GEN-LAST:event_logoutMenuItemActionPerformed
941

942     /** Exit the Application */
943     private void exitForm(java.awt.event.WindowEvent JavaDoc evt) {//GEN-FIRST:event_exitForm
944
AudioControlDialog.reset();
945         resetOptions();
946         dispose();
947     }//GEN-LAST:event_exitForm
948

949     public void connectionClosed(String JavaDoc host, int port, int appl_id)
950     {
951         disconnect();
952         
953         String JavaDoc message = java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
954         locale).getString("Lost_connection_with_the_server_all_calls_will_be_dropped");
955         
956         if (clientType.equals("JAVA") == true)
957         {
958             InformationDialog info = new InformationDialog(TalkFrame.this,
959             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
960             locale).getString("Server_connection_lost"),
961             message,
962             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
963             locale).getString("_Close_"),
964             true);
965         }
966         else if (clientType.equals("HTML") == true)
967         {
968             dhtml.informationDialog(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
969             locale).getString("Server_connection_lost"),
970             message,
971             java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
972             locale).getString("_Close_"),
973             0);
974         }
975         
976         Enumeration elements = callList.elements();
977         while (elements.hasMoreElements() == true)
978         {
979             TalkSessionInterface session = (TalkSessionInterface)elements.nextElement();
980             session.dispose();
981         }
982         
983         callList.clear();
984         
985         if (isRegistered() == true)
986         {
987             // clear the friends list
988
groupMembers.removeAll();
989         }
990         groupList.removeAllElements();
991         
992         if (unregistered == false)
993         {
994             doLogin();
995         }
996         else
997         {
998             dispose();
999         }
1000    }
1001    
1002    public void dispose()
1003    {
1004        disconnect();
1005        
1006        for (int i = 0; i < frameList.size(); i++)
1007        {
1008            Frame frame = (Frame)frameList.elementAt(i);
1009            frame.dispose();
1010        }
1011        frameList.removeAllElements();
1012        
1013        Enumeration elements = callList.elements();
1014        while (elements.hasMoreElements() == true)
1015        {
1016            TalkSessionInterface session = (TalkSessionInterface)elements.nextElement();
1017            session.dispose();
1018        }
1019        callList.clear();
1020        
1021        // clear the friends list
1022

1023        if (isRegistered() == true)
1024        {
1025            groupMembers.removeAll();
1026        }
1027        groupList.removeAllElements();
1028        
1029        if (isRegistered() == true)
1030        {
1031            super.dispose();
1032        }
1033        instance = null;
1034    }
1035    
1036    private void doLogin(String JavaDoc message)
1037    {
1038        LoginDialogThread t = new TalkFrame.LoginDialogThread(message);
1039        t.start();
1040    }
1041    
1042    private void doLogin()
1043    {
1044        doLogin("");
1045    }
1046    
1047    private void performLogin(String JavaDoc message)
1048    {
1049        while (true)
1050        {
1051            LoginDialog login_dialog = new LoginDialog(TalkFrame.this, message,
1052            locale);
1053            
1054            // temporary kludge to fix a java bug
1055
if (login_dialog.isButtonClicked() == false)
1056            {
1057                login_dialog.dispose();
1058                continue;
1059            }
1060            
1061            if (login_dialog.isLoginClicked() == true)
1062            {
1063                String JavaDoc user = login_dialog.getUser();
1064                String JavaDoc password = login_dialog.getPassword();
1065                
1066                if (user.length() == 0)
1067                {
1068                    continue;
1069                }
1070                
1071                if (connect() == false)
1072                {
1073                    continue;
1074                }
1075                
1076                // send the registration message to the server
1077
if (login(user, password) == true)
1078                {
1079                    userInformation.setName(user);
1080                    break;
1081                }
1082            }
1083            else // exit clicked
1084
{
1085                dispose();
1086                break;
1087            }
1088        }
1089    }
1090    
1091    
1092    private boolean connect()
1093    {
1094        if (com != null)
1095        {
1096            disconnect(); // disconnect, if connected
1097
}
1098        
1099        try
1100        {
1101            com = new ServerCommunications(host, port, applicationId);
1102        }
1103        catch (UnknownHostException ex)
1104        {
1105            return false;
1106        }
1107        
1108        // establish a connection to the server
1109

1110        if (isRegistered() == true)
1111        {
1112            String JavaDoc message = java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1113            locale).getString("Connecting_to_")
1114            + " "
1115            + host
1116            + ':'
1117            + port
1118            + " .....";
1119            
1120            if (isRegistered() == true)
1121            {
1122                statusBar.setText(message);
1123            }
1124        }
1125        
1126        if (com.connect() == false)
1127        {
1128            if (isRegistered() == true)
1129            {
1130                String JavaDoc message = java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1131                locale).getString("Connection_to_server_")
1132                + " "
1133                + host
1134                + ':'
1135                + port
1136                + " "
1137                + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1138                locale).getString("_failed");
1139                
1140                statusBar.setText(message);
1141                
1142            }
1143            return false;
1144        }
1145        
1146        // start the message listener thread
1147
com.start();
1148        
1149        if (isRegistered() == true)
1150        {
1151            String JavaDoc message = java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1152            locale).getString("Connected_to_")
1153            + " "
1154            + host
1155            + ':'
1156            + port;
1157            
1158            statusBar.setText(message);
1159        }
1160        
1161         com.setClosedListener(this);
1162        
1163        return true;
1164    }
1165    
1166    private boolean login(String JavaDoc user, String JavaDoc password)
1167    {
1168        RegistrationRequestMessage message = new RegistrationRequestMessage();
1169        message.setUserName(user);
1170        message.setPassword(password);
1171        message.setLanguage(language);
1172        
1173        int req_id = com.sendRequestMessage("text/xml",
1174        message.format(),
1175        new LoginResponseListener(),
1176        10000);
1177        if (req_id == -1)
1178        {
1179            return false;
1180        }
1181        
1182        return true;
1183    }
1184    
1185    private void disconnect()
1186    {
1187        if (com != null)
1188        {
1189            if (com.isConnected() == true)
1190            {
1191                com.disconnect();
1192            }
1193        }
1194        
1195        if (isRegistered() == true)
1196        {
1197            statusBar.setText(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1198            locale).getString("Disconnected"));
1199        }
1200    }
1201    
1202    private String JavaDoc getCallDescriptionText(TalkSessionInterface session)
1203    {
1204        CallInfo cinfo = session.getCallInfo();
1205        StringBuffer JavaDoc strbuf = new StringBuffer JavaDoc();
1206        if (cinfo.isCallingParty() == true)
1207        {
1208            strbuf.append(" <<<< ");
1209        }
1210        else
1211        {
1212            strbuf.append(" >>>> ");
1213        }
1214        
1215        Vector v = cinfo.getOtherParties();
1216        int size = v.size();
1217        if (size == 0)
1218        {
1219            strbuf.append(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1220            locale).getString("Unknown"));
1221        }
1222        else if (size == 1)
1223        {
1224            CallPartyElement element = (CallPartyElement)v.elementAt(0);
1225            strbuf.append(element.getUserName());
1226            
1227            String JavaDoc full_name = element.getFullName();
1228            if (full_name != null)
1229            {
1230                strbuf.append(" (" + full_name + ") ");
1231            }
1232        }
1233        else
1234        {
1235            strbuf.append(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1236            locale).getString("Conference__") + " " + (size+1)
1237            + " "
1238            + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1239            locale).getString("_parties"));
1240        }
1241        
1242        if (cinfo.isConnected() == true)
1243        {
1244            strbuf.append(" - "
1245            + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1246            locale).getString("__-_connected_")
1247            + " ");
1248        }
1249        else
1250        {
1251            strbuf.append(" - "
1252            + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1253            locale).getString("__-_not_connected"));
1254        }
1255        
1256        if (cinfo.isCallingParty() == true)
1257        {
1258            strbuf.append(" >>>>");
1259        }
1260        else
1261        {
1262            strbuf.append(" <<<<");
1263        }
1264        
1265        return strbuf.toString();
1266    }
1267    
1268    private TalkSessionInterface findCallInfo(long session)
1269    {
1270        return (TalkSessionInterface)callList.get(new Long JavaDoc(session));
1271    }
1272    
1273    private void processGroupElement(GroupMemberElement element)
1274    {
1275        switch (element.getOperation())
1276        {
1277            case GroupMemberElement.OPERATION_ADD_LIST:
1278                groupList.addElement(new ListGroupElement(element.getUser(),
1279                element.getFullName(),
1280                element.getCallCount()));
1281                
1282                StringBuffer JavaDoc buffer = new StringBuffer JavaDoc(element.getUser()
1283                + " ");
1284                
1285                if (element.getFullName() != null)
1286                {
1287                    buffer.append("\"" + element.getFullName() + "\" ");
1288                }
1289                else
1290                {
1291                    buffer.append(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1292                    locale).getString("_quot_Unknown_quot_") + ' ');
1293                }
1294                
1295                // pad
1296
int len = buffer.length();
1297                
1298                for (int i = 0; i < 40-len; i++)
1299                {
1300                    buffer.append(' ');
1301                }
1302                
1303                buffer.append(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1304                locale).getString("Active_sessions_") + ' ' + element.getCallCount());
1305                groupMembers.add(buffer.toString());
1306                
1307                if (loginTone != null)
1308                {
1309                    if (AudioControlDialog.getMuteLogNotification() == false)
1310                    {
1311                        loginTone.play();
1312                    }
1313                    else
1314                    {
1315                        Toolkit.getDefaultToolkit().beep();
1316                    }
1317                }
1318                else
1319                {
1320                    Toolkit.getDefaultToolkit().beep();
1321                }
1322                
1323                Date d = new Date((new Date()).getTime() + timeAdjustment);
1324                statusBar.setText(element.getUser() + ' ' + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1325                locale).getString("_has_logged_in_at_") + ' '
1326                + DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.MEDIUM, locale).format(
1327                d));
1328                
1329                break;
1330                
1331            case GroupMemberElement.OPERATION_REM_LIST:
1332                int size = groupList.size();
1333                
1334                for (int i = 0; i < size; i++)
1335                {
1336                    ListGroupElement group = (ListGroupElement)groupList.elementAt(i);
1337                    if (group.getName().equals(element.getUser()) == true)
1338                    {
1339                        groupList.removeElement(group);
1340                        groupMembers.remove(i);
1341                        break;
1342                    }
1343                }
1344                
1345                if (logoutTone != null)
1346                {
1347                    if (AudioControlDialog.getMuteLogNotification() == false)
1348                    {
1349                        logoutTone.play();
1350                    }
1351                    else
1352                    {
1353                        Toolkit.getDefaultToolkit().beep();
1354                    }
1355                }
1356                else
1357                {
1358                    Toolkit.getDefaultToolkit().beep();
1359                }
1360                
1361                d = new Date((new Date()).getTime() + timeAdjustment);
1362                statusBar.setText(element.getUser() + ' ' +
1363                java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1364                locale).getString("_has_logged_out_at_") + ' '
1365                + DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.MEDIUM, locale).format(d));
1366                break;
1367                
1368            case GroupMemberElement.OPERATION_MOD_LIST:
1369                size = groupList.size();
1370                
1371                for (int i = 0; i < size; i++)
1372                {
1373                    ListGroupElement group = (ListGroupElement)groupList.elementAt(i);
1374                    if (group.getName().equals(element.getUser()) == true)
1375                    {
1376                        buffer = new StringBuffer JavaDoc(element.getUser()
1377                        + " ");
1378                        
1379                        if (element.getFullName() != null)
1380                        {
1381                            buffer.append("\"" + element.getFullName() + "\" ");
1382                            group.setFullName(element.getFullName());
1383                        }
1384                        else
1385                        {
1386                            if (group.getFullName() != null)
1387                            {
1388                                buffer.append("\"" + group.getFullName() + "\" ");
1389                            }
1390                            else
1391                            {
1392                                buffer.append(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1393                                locale).getString("quot_Unknown_quot_") + ' ');
1394                            }
1395                        }
1396                        
1397                        // pad
1398
len = buffer.length();
1399                        
1400                        for (int j = 0; j < 40-len; j++)
1401                        {
1402                            buffer.append(' ');
1403                        }
1404                        
1405                        buffer.append(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1406                        locale).getString("Active_sessions_") + ' ' + element.getCallCount());
1407                        
1408                        // groupList.setElementAt(group, i);
1409
groupMembers.replaceItem(buffer.toString(), i);
1410                        
1411                        break;
1412                    }
1413                }
1414                break;
1415        }
1416    }
1417    
1418    public void addToFrameList(Frame frame)
1419    {
1420        frameList.addElement(frame);
1421    }
1422    
1423    public void removeFromFrameList(Frame frame)
1424    {
1425        frameList.removeElement(frame);
1426    }
1427    
1428    
1429    private void downloadCannedMessageList(GroupList list)
1430    {
1431        if (list == null)
1432        {
1433            return;
1434        }
1435        
1436        int num_groups = list.numElements();
1437        if (num_groups == 0)
1438        {
1439            return;
1440        }
1441        
1442        
1443        String JavaDoc url_string = applet.getParameter("canned-message");
1444        if (url_string == null)
1445        {
1446            return;
1447        }
1448        
1449        statusBar.setText(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1450        locale).getString("Downloading_pre-defined_messages") + "...");
1451        
1452        URL url = URLUtils.formatURL(applet, url_string);
1453        StringBuffer JavaDoc buffer = new StringBuffer JavaDoc(url.toString()
1454        + "?action=list&groups=all");
1455        for (int i = 0; i < num_groups; i++)
1456        {
1457            buffer.append(URLEncoder.encode("," + list.getElementAt(i)));
1458        }
1459        
1460        try
1461        {
1462            url = new URL(buffer.toString());
1463            
1464            URLConnection c = url.openConnection();
1465            c.setUseCaches(false);
1466            
1467            StringBuffer JavaDoc output = new StringBuffer JavaDoc();
1468            byte[] array = new byte[1000];
1469            InputStream is = c.getInputStream();
1470            int count = 0;
1471            while ((count = is.read(array)) > 0)
1472            {
1473                output.append(new String JavaDoc(array, 0, count));
1474            }
1475            
1476            // parse the message
1477
CannedMessageParser cp = new CannedMessageParser();
1478            cannedMessageList = cp.parseListMessage(output.toString());
1479        }
1480        catch (Exception JavaDoc ex)
1481        {
1482            return;
1483        }
1484    }
1485    
1486    
1487    public MediaElements downloadCannedMessage(int index)
1488    {
1489        if (cannedMessageList == null)
1490        {
1491            return null;
1492        }
1493        
1494        CannedElement element = (CannedElement)cannedMessageList.elementAt(index);
1495        if (element.getMessage() != null) // if the message has already been downloaded
1496
{
1497            return element.getMessage();
1498        }
1499        
1500        
1501        String JavaDoc url_string = applet.getParameter("canned-message");
1502        if (url_string == null)
1503        {
1504            return null;
1505        }
1506        
1507        URL url = URLUtils.formatURL(applet, url_string);
1508        StringBuffer JavaDoc buffer = new StringBuffer JavaDoc(url.toString() + "?action=query");
1509        buffer.append("&group=" + URLEncoder.encode(element.getGroup()));
1510        buffer.append("&id=" + URLEncoder.encode(element.getId()));
1511        
1512        try
1513        {
1514            url = new URL(buffer.toString());
1515            URLConnection c = url.openConnection();
1516            c.setUseCaches(false);
1517            
1518            StringBuffer JavaDoc output = new StringBuffer JavaDoc();
1519            byte[] array = new byte[1000];
1520            InputStream is = c.getInputStream();
1521            int count = 0;
1522            while ((count = is.read(array)) > 0)
1523            {
1524                output.append(new String JavaDoc(array, 0, count));
1525            }
1526            
1527            // parse the message
1528
CannedMessageParser cp = new CannedMessageParser();
1529            return cp.parseQueryMessage(output.toString());
1530        }
1531        catch (Exception JavaDoc ex)
1532        {
1533            return null;
1534        }
1535    }
1536    
1537    
1538    private void downloadClips()
1539    {
1540        // download sound clips
1541

1542        String JavaDoc message = java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1543        locale).getString("Downloading_audio_clips_dot_dot_dot");
1544        if (isRegistered() == true)
1545        {
1546            statusBar.setText(message);
1547        }
1548        
1549        String JavaDoc ring_url = applet.getParameter("ring");
1550        if (ring_url != null)
1551        {
1552            ringTone = getAudioClip(ring_url);
1553        }
1554        
1555        
1556        String JavaDoc buzz_url = applet.getParameter("buzz");
1557        if (buzz_url != null)
1558        {
1559            buzzTone = getAudioClip(buzz_url);
1560        }
1561        
1562        
1563        String JavaDoc chime_url = applet.getParameter("chime");
1564        if (chime_url != null)
1565        {
1566            chimeTone = getAudioClip(chime_url);
1567        }
1568        
1569        String JavaDoc logout_url = applet.getParameter("logout");
1570        if (logout_url != null)
1571        {
1572            logoutTone = getAudioClip(logout_url);
1573        }
1574        
1575        String JavaDoc login_url = applet.getParameter("login");
1576        if (login_url != null)
1577        {
1578            loginTone = getAudioClip(login_url);
1579        }
1580        
1581        message = java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1582        locale).getString("Done_downloading_audio_clips");
1583        if (isRegistered() == true)
1584        {
1585            statusBar.setText(message);
1586        }
1587    }
1588    
1589    public void incrementMissedCallCount()
1590    {
1591        synchronized (missedCallsLock)
1592        {
1593            statusBar.setText(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1594            locale).getString("You_missed_") + ' '
1595            + (++missedCalls) + ' ' + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1596            locale).getString("_calls"));
1597        }
1598    }
1599    
1600    public void sessionAdded(TalkSessionInterface session)
1601    {
1602        synchronized (sessionLock)
1603        {
1604            callList.put(new Long JavaDoc(session.getCallInfo().getSessionId()), session);
1605            
1606            if (isRegistered() == true)
1607            {
1608                sessionList.add(getCallDescriptionText(session));
1609            }
1610            
1611            sessionListVector.addElement(session);
1612        }
1613    }
1614    
1615    public void sessionRemoved(TalkSessionInterface session, boolean dispose)
1616    {
1617        synchronized (sessionLock)
1618        {
1619            callList.remove(new Long JavaDoc(session.getCallInfo().getSessionId()));
1620            
1621            for (int i = 0; i < sessionListVector.size(); i++)
1622            {
1623                TalkSessionInterface session_i = (TalkSessionInterface)sessionListVector.elementAt(i);
1624                if (session_i == session)
1625                {
1626                    sessionListVector.removeElementAt(i);
1627                    
1628                    if (isRegistered() == true)
1629                    {
1630                        sessionList.remove(i);
1631                    }
1632                    break;
1633                }
1634            }
1635        }
1636        
1637        // if the user is an unregistered user, dispose TALKFRAME
1638
if (dispose == true)
1639        {
1640            if (unregistered == true)
1641            {
1642                dispose();
1643            }
1644        }
1645    }
1646    
1647    public void sessionRemoved(TalkSessionInterface session)
1648    {
1649        sessionRemoved(session, true);
1650    }
1651    
1652    public void sessionInformationChanged(TalkSessionInterface session)
1653    {
1654        synchronized (sessionLock)
1655        {
1656            for (int i = 0; i < sessionListVector.size(); i++)
1657            {
1658                TalkSessionInterface session_i = (TalkSessionInterface)sessionListVector.elementAt(i);
1659                if (session_i == session)
1660                {
1661                    if (isRegistered() == true)
1662                    {
1663                        sessionList.replaceItem(getCallDescriptionText(session), i);
1664                    }
1665                    break;
1666                }
1667            }
1668        }
1669    }
1670    
1671    public void popup()
1672    {
1673        show();
1674    }
1675    
1676    public CallPartyElement getUserInformation()
1677    {
1678        return userInformation;
1679    }
1680    
1681    public ServerCommunications getCom()
1682    {
1683        return com;
1684    }
1685    
1686    public AudioClip getRingTone()
1687    {
1688        return ringTone;
1689    }
1690    
1691    public AudioClip getBuzzTone()
1692    {
1693        return buzzTone;
1694    }
1695    
1696    public AudioClip getChimeTone()
1697    {
1698        return chimeTone;
1699    }
1700    
1701    public Applet getApplet()
1702    {
1703        return applet;
1704    }
1705    
1706    public boolean isAutoAnswer()
1707    {
1708        return autoAnswer;
1709    }
1710    
1711    public boolean isRegistered()
1712    {
1713        return !unregistered;
1714    }
1715    
1716    public String JavaDoc getSelectedMember()
1717    {
1718        int selected_index = groupMembers.getSelectedIndex();
1719        if (selected_index < 0)
1720        {
1721            return null;
1722        }
1723        
1724        return ((ListGroupElement)groupList.elementAt(selected_index)).getName();
1725    }
1726    
1727    /** Getter for property applicationMediaElements.
1728     * @return Value of property applicationMediaElements.
1729     *
1730     */

1731    public java.util.Vector JavaDoc getApplicationMediaElements()
1732    {
1733        return applicationMediaElements;
1734    }
1735    
1736    /** Setter for property applicationMediaElements.
1737     * @param applicationMediaElements New value of property applicationMediaElements.
1738     *
1739     */

1740    public void setApplicationMediaElements(java.util.Vector JavaDoc applicationMediaElements)
1741    {
1742        this.applicationMediaElements = applicationMediaElements;
1743    }
1744    
1745    /** Getter for property emailEnabled.
1746     * @return Value of property emailEnabled.
1747     *
1748     */

1749    public boolean isEmailEnabled()
1750    {
1751        return emailEnabled;
1752    }
1753    
1754    /** Setter for property emailEnabled.
1755     * @param emailEnabled New value of property emailEnabled.
1756     *
1757     */

1758    public void setEmailEnabled(boolean emailEnabled)
1759    {
1760        this.emailEnabled = emailEnabled;
1761    }
1762    
1763    /** Getter for property caption.
1764     * @return Value of property caption.
1765     *
1766     */

1767    public java.lang.String JavaDoc getCaption()
1768    {
1769        return caption;
1770    }
1771    
1772    /** Setter for property caption.
1773     * @param caption New value of property caption.
1774     *
1775     */

1776    public void setCaption(java.lang.String JavaDoc caption)
1777    {
1778        this.caption = caption;
1779    }
1780    
1781    /** Getter for property logo.
1782     * @return Value of property logo.
1783     *
1784     */

1785    public java.awt.Image JavaDoc getLogo()
1786    {
1787        return logo;
1788    }
1789    
1790    /** Setter for property logo.
1791     * @param logo New value of property logo.
1792     *
1793     */

1794    public void setLogo(java.awt.Image JavaDoc logo)
1795    {
1796        this.logo = logo;
1797    }
1798    
1799    /** Getter for property autoEmailInfo.
1800     * @return Value of property autoEmailInfo.
1801     *
1802     */

1803    public com.quikj.application.web.talk.client.AutoEmailTranscriptInfo getAutoEmailInfo()
1804    {
1805        return autoEmailInfo;
1806    }
1807    
1808    /** Setter for property autoEmailInfo.
1809     * @param autoEmailInfo New value of property autoEmailInfo.
1810     *
1811     */

1812    public void setAutoEmailInfo(com.quikj.application.web.talk.client.AutoEmailTranscriptInfo autoEmailInfo)
1813    {
1814        this.autoEmailInfo = autoEmailInfo;
1815    }
1816    
1817    /** Getter for property displaySessionInfo.
1818     * @return Value of property displaySessionInfo.
1819     *
1820     */

1821    public boolean isDisplaySessionInfo()
1822    {
1823        return this.displaySessionInfo;
1824    }
1825    
1826    /** Setter for property displaySessionInfo.
1827     * @param displaySessionInfo New value of property displaySessionInfo.
1828     *
1829     */

1830    public void setDisplaySessionInfo(boolean displaySessionInfo)
1831    {
1832        this.displaySessionInfo = displaySessionInfo;
1833    }
1834    
1835    /** Getter for property cannedMessageList.
1836     * @return Value of property cannedMessageList.
1837     *
1838     */

1839    public Vector getCannedMessageList()
1840    {
1841        return this.cannedMessageList;
1842    }
1843    
1844    /** Setter for property cannedMessageList.
1845     * @param cannedMessageList New value of property cannedMessageList.
1846     *
1847     */

1848    public void setCannedMessageList(Vector cannedMessageList)
1849    {
1850        this.cannedMessageList = cannedMessageList;
1851    }
1852    
1853    /** Getter for property timeAdjustment.
1854     * @return Value of property timeAdjustment.
1855     *
1856     */

1857    public long getTimeAdjustment()
1858    {
1859        return timeAdjustment;
1860    }
1861    
1862    /** Setter for property timeAdjustment.
1863     * @param timeAdjustment New value of property timeAdjustment.
1864     *
1865     */

1866    public void setTimeAdjustment(long timeAdjustment)
1867    {
1868        this.timeAdjustment = timeAdjustment;
1869    }
1870    
1871    /** Getter for property clientType.
1872     * @return Value of property clientType.
1873     *
1874     */

1875    public String JavaDoc getClientType()
1876    {
1877        return this.clientType;
1878    }
1879    
1880    /** Setter for property clientType.
1881     * @param clientType New value of property clientType.
1882     *
1883     */

1884    public void setClientType(String JavaDoc clientType)
1885    {
1886        this.clientType = clientType;
1887    }
1888    
1889    
1890    public void userTypingMessage()
1891    {
1892        synchronized (sessionLock)
1893        {
1894            dhtml.handleTextTyped();
1895        }
1896    }
1897    
1898    public void userSendingMessage(String JavaDoc message)
1899    {
1900        synchronized (sessionLock)
1901        {
1902            dhtml.handleUserMessage(message);
1903        }
1904    }
1905    
1906    public void userClickedActionButton()
1907    {
1908        synchronized (sessionLock)
1909        {
1910            dhtml.handleActionButtonClick();
1911        }
1912    }
1913    
1914    public void userSendingMedia(String JavaDoc media, String JavaDoc param)
1915    {
1916        synchronized (sessionLock)
1917        {
1918            dhtml.handleMedia(media, param);
1919        }
1920    }
1921    
1922    /**
1923     * @return Returns the allowSendBuzz.
1924     */

1925    public boolean isAllowSendBuzz()
1926    {
1927        return allowSendBuzz;
1928    }
1929    /**
1930     * @param allowSendBuzz The allowSendBuzz to set.
1931     */

1932    public void setAllowSendBuzz(boolean allowSendBuzz)
1933    {
1934        this.allowSendBuzz = allowSendBuzz;
1935    }
1936    /**
1937     * @return Returns the allowSendWebPage.
1938     */

1939    public boolean isAllowSendWebPage()
1940    {
1941        return allowSendWebPage;
1942    }
1943    /**
1944     * @param allowSendWebPage The allowSendWebPage to set.
1945     */

1946    public void setAllowSendWebPage(boolean allowSendWebPage)
1947    {
1948        this.allowSendWebPage = allowSendWebPage;
1949    }
1950    
1951    public void resetOptions()
1952    {
1953        autoAnswer = false;
1954        allowInboundCalls = true;
1955      
1956        setOptionsMenu();
1957    }
1958    
1959    private void setOptionsMenu()
1960    {
1961        if (allowInboundCalls == false)
1962        {
1963            allowIncomingMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1964            locale).getString(ALLOW));
1965        }
1966        else
1967        {
1968            allowIncomingMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1969            locale).getString(DISALLOW));
1970        }
1971        
1972        if (autoAnswer == true)
1973        {
1974            autoAnswerMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1975            locale).getString(DONT_AUTO_ANSWER));
1976        }
1977        else
1978        {
1979            autoAnswerMenu.setLabel(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
1980            locale).getString(AUTO_ANSWER));
1981        }
1982    }
1983    
1984    class ApplicationsMenuListener implements ActionListener
1985    {
1986        private String JavaDoc className;
1987        
1988        public ApplicationsMenuListener(String JavaDoc class_name)
1989        {
1990            className = class_name;
1991        }
1992        
1993        public void actionPerformed(java.awt.event.ActionEvent JavaDoc actionEvent)
1994        {
1995            NetworkApplicationInterface n = (NetworkApplicationInterface)applicationList.get(className);
1996            n.menuItemClicked();
1997        }
1998    }
1999    
2000    class LoginResponseListener implements HTTPMessageListenerInterface
2001    {
2002        public void messageReceived(int req_id,
2003        int status,
2004        String JavaDoc content_type,
2005        int http_status,
2006        String JavaDoc reason,
2007        String JavaDoc message)
2008        {
2009            synchronized (messageEventLock)
2010            {
2011                if (status == HTTPMessageListenerInterface.TIMEOUT)
2012                {
2013                    // close the connection
2014
disconnect();
2015                    
2016                    doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2017                    locale).getString("Time-out_receiving_response_from_server"));
2018                }
2019                else if (status == HTTPMessageListenerInterface.RECEIVED)
2020                {
2021                    if (http_status == HTTPRspMessage.OK)
2022                    {
2023                        TalkMessageParser parser = null;
2024                        
2025                        try
2026                        {
2027                            parser = new TalkMessageParser();
2028                        }
2029                        catch (Exception JavaDoc ex)
2030                        {
2031                            InformationDialog info = new InformationDialog(TalkFrame.this,
2032                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2033                            locale).getString("Error_exclaim"),
2034                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2035                            locale).getString("Error_obtaining_XML_parser_") + ' '
2036                            + ex.getClass().getName(),
2037                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2038                            locale).getString("_Close_"),
2039                            5000L);
2040                            
2041                            disconnect();
2042                            doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2043                            locale).getString("Error_obtaining_XML_parser"));
2044                            return;
2045                        }
2046                        
2047                        if (parser.parse(message, false) == false)
2048                        {
2049                            // print error message
2050
InformationDialog info = new InformationDialog(TalkFrame.this,
2051                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2052                            locale).getString("Error_exclaim"),
2053                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2054                            locale).getString("Error_decoding_server_response"),
2055                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2056                            locale).getString("_Close_"),
2057                            5000L);
2058                            
2059                            disconnect();
2060                            doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2061                            locale).getString("Error_decoding_server_response"));
2062                            return;
2063                        }
2064                        
2065                        TalkMessageInterface parsed_message = parser.getMessage();
2066                        if ((parsed_message instanceof RegistrationResponseMessage) == true)
2067                        {
2068                            RegistrationResponseMessage response_msg = (RegistrationResponseMessage)parsed_message;
2069                            
2070                            if (response_msg.getCallPartyInfo() != null)
2071                            {
2072                                userInformation = response_msg.getCallPartyInfo();
2073                                userInformation.setLanguage(language);
2074                                userInformation.setApplet(true);
2075                                
2076                                if (userInformation.getEmail() == null)
2077                                {
2078                                    emailMenuItem.setEnabled(false);
2079                                }
2080                                else
2081                                {
2082                                    emailMenuItem.setEnabled(true);
2083                                }
2084                            }
2085                            
2086                            Date d = response_msg.getLoginDate();
2087                            if (d != null)
2088                            {
2089                                timeAdjustment = d.getTime() - (new Date()).getTime();
2090                            }
2091                            
2092                            setTitle(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2093                            locale).getString("User_") + ' '
2094                            + userInformation.getUserName() + ' '
2095                            + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2096                            locale).getString("_logged_in_at_") + ' '
2097                            + DateFormat.getDateTimeInstance(DateFormat.FULL,
2098                            DateFormat.MEDIUM, locale).format(d != null ? d: new Date()));
2099                            statusBar.setText(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2100                            locale).getString("Logged_in"));
2101                            com.setRequestListener(new RequestListener());
2102                            
2103                            GroupElement group_element = response_msg.getGroup();
2104                            if (group_element != null)
2105                            {
2106                                int size = group_element.numElements();
2107                                
2108                                for (int i = 0; i < size; i++)
2109                                {
2110                                    processGroupElement(group_element.elementAt(i));
2111                                }
2112                            }
2113                            
2114                            // initialize the canned message list
2115
downloadCannedMessageList(response_msg.getGroupList());
2116                            
2117                            // download audio clips and other media
2118
downloadClips();
2119                        }
2120                        else
2121                        {
2122                            // print error message
2123
InformationDialog info = new InformationDialog(TalkFrame.this,
2124                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2125                            locale).getString("Error_exclaim"),
2126                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2127                            locale).getString("Bad_server_response"),
2128                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2129                            locale).getString("_Close_"),
2130                            5000L);
2131                            
2132                            disconnect();
2133                            doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2134                            locale).getString("Bad_server_response"));
2135                            return;
2136                        }
2137                        
2138                    }
2139                    else
2140                    {
2141                        disconnect();
2142                        
2143                        if (reason != null)
2144                        {
2145                            doLogin(reason + " (" + http_status + ")");
2146                        }
2147                        else
2148                        {
2149                            doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2150                            locale).getString("Server_returned_error_") + ' ' + http_status);
2151                        }
2152                    }
2153                }
2154                else // unexpected status
2155
{
2156                    disconnect();
2157                    
2158                    doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2159                    locale).getString("Unknown_status_") + ' ' + status + ' ' + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("_received_from_the_server"));
2160                }
2161            }
2162        }
2163    }
2164    
2165    class RequestListener implements HTTPMessageListenerInterface
2166    {
2167        public void messageReceived(int req_id,
2168        int status,
2169        String JavaDoc content_type,
2170        int http_status,
2171        String JavaDoc reason,
2172        String JavaDoc message)
2173        {
2174            synchronized (messageEventLock)
2175            {
2176                // parse the message
2177
TalkMessageParser parser = null;
2178                
2179                try
2180                {
2181                    parser = new TalkMessageParser();
2182                }
2183                catch (Exception JavaDoc ex)
2184                {
2185                    // print error message
2186
InformationDialog info = new InformationDialog(TalkFrame.this,
2187                    java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2188                    locale).getString("Error_exclaim"),
2189                    java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2190                    locale).getString("Error_obtaining_XML_parser_") + ' '
2191                    + ex.getClass().getName(),
2192                    java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2193                    locale).getString("_Close_"),
2194                    5000L);
2195                    return;
2196                }
2197                
2198                if (parser.parse(message, true) == false)
2199                {
2200                    // print error message
2201
InformationDialog info = new InformationDialog(TalkFrame.this,
2202                    java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2203                    locale).getString("Error_exclaim"),
2204                    java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2205                    locale).getString("Received_request_message_could_not_be_parsed_") + ' '
2206                    + parser.getErrorMessage(),
2207                    java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2208                    locale).getString("_Close_"),
2209                    5000L);
2210                    return;
2211                }
2212                
2213                TalkMessageInterface parsed_message = parser.getMessage();
2214                if ((parsed_message instanceof SetupRequestMessage) == true)
2215                {
2216                    SetupRequestMessage setup = (SetupRequestMessage)parsed_message;
2217                    
2218                    if (allowInboundCalls == false)
2219                    {
2220                        statusBar.setText(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2221                        locale).getString("You_missed_") + ' ' + (++missedCalls) + ' '
2222                        + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2223                        locale).getString("_calls"));
2224                        
2225                        SetupResponseMessage response = new SetupResponseMessage();
2226                        response.setSessionId(setup.getSessionId());
2227                        
2228                        if (com.sendResponse(req_id,
2229                        SetupResponseMessage.BUSY,
2230                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2231                        locale).getString("The_user_has_enabled_do_not_disturb"),
2232                        "text/xml",
2233                        response.format()) == false)
2234                        {
2235                            InformationDialog info = new InformationDialog(TalkFrame.this,
2236                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2237                            locale).getString("Error_exclaim"),
2238                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2239                            locale).getString("Could_not_send_BUSY_message_to_the_server"),
2240                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2241                            locale).getString("_Close_"),
2242                            5000L);
2243                        }
2244                        
2245                        return;
2246                    }
2247                    
2248                    TalkSessionInterface session = TalkSessionFactory.getInstance().createSession();
2249                    session.receivedCall(req_id, setup, autoAnswer);
2250                }
2251                else if ((parsed_message instanceof DisconnectMessage) == true)
2252                {
2253                    DisconnectMessage disconnect = (DisconnectMessage)parsed_message;
2254                    long session_id = disconnect.getSessionId();
2255                    
2256                    TalkSessionInterface session = findCallInfo(session_id);
2257                    if (session == null) // call information not found
2258
{
2259                        new InformationDialog(TalkFrame.this,
2260                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2261                        locale).getString("Error_exclaim"),
2262                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2263                        locale).getString("Session_information_not_found_"),
2264                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2265                        locale).getString("_Close_"), 5000L);
2266                        return;
2267                    }
2268                    
2269                    session.disconnectReceived(disconnect);
2270                }
2271                else if ((parsed_message instanceof RTPMessage) == true)
2272                {
2273                    RTPMessage rtp = (RTPMessage)parsed_message;
2274                    long session_id = rtp.getSessionId();
2275                    
2276                    TalkSessionInterface session = findCallInfo(session_id);
2277                    if (session == null) // call information not found
2278
{
2279                        InformationDialog info = new InformationDialog(TalkFrame.this,
2280                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2281                        locale).getString("Error_exclaim"),
2282                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2283                        locale).getString("Session_information_not_found"),
2284                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2285                        locale).getString("_Close_"),
2286                        5000L);
2287                        return;
2288                    }
2289                    
2290                    session.rtpMessageReceived(rtp);
2291                }
2292                else if ((parsed_message instanceof ReplaceSessionMessage) == true)
2293                {
2294                    ReplaceSessionMessage replace = (ReplaceSessionMessage)parsed_message;
2295                    
2296                    long old_session_id = replace.getOldSessionId();
2297                    long new_session_id = replace.getNewSessionId();
2298                    
2299                    // locate the old session
2300
TalkSessionInterface session = findCallInfo(old_session_id);
2301                    if (session == null) // call information not found
2302
{
2303                        new InformationDialog(TalkFrame.this,
2304                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2305                        locale).getString("Error_exclaim"),
2306                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2307                        locale).getString("Session_information_not_found"),
2308                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2309                        locale).getString("_Close_"), 5000L);
2310                        return;
2311                    }
2312                    
2313                    CallInfo cinfo = session.getCallInfo();
2314                    cinfo.setSessionId(new_session_id);
2315                    
2316                    String JavaDoc enc_key = replace.getEncryptedKey();
2317                    
2318                    cinfo.setEncryptedKey(enc_key);
2319                    session.setCallInfo(cinfo);
2320                    
2321                    // replace the session from the call-list
2322
callList.remove(new Long JavaDoc(old_session_id));
2323                    callList.put(new Long JavaDoc(new_session_id), session);
2324                }
2325                else if ((parsed_message instanceof ConferenceInformationMessage) == true)
2326                {
2327                    ConferenceInformationMessage conf = (ConferenceInformationMessage)parsed_message;
2328                    
2329                    long session_id = conf.getSessionId();
2330                    TalkSessionInterface session = findCallInfo(session_id);
2331                    if (session == null) // call information not found
2332
{
2333                        new InformationDialog(TalkFrame.this,
2334                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2335                        locale).getString("Error_exclaim"),
2336                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2337                        locale).getString("Session_information_not_found"),
2338                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2339                        locale).getString("_Close_"), 5000L);
2340                        return;
2341                    }
2342                    
2343                    CallInfo cinfo = session.getCallInfo();
2344                    
2345                    Vector v = new Vector();
2346                    int size = conf.numEndPointsInConference();
2347                    
2348                    String JavaDoc name = userInformation.getUserName();
2349                    String JavaDoc full_name = userInformation.getFullName();
2350                    String JavaDoc email = userInformation.getEmail();
2351                    String JavaDoc comment = userInformation.getComment();
2352                    boolean found = false;
2353                    for (int i = 0; i < size; i++)
2354                    {
2355                        CallPartyElement element = conf.elementAt(i);
2356                        
2357                        String JavaDoc element_name = element.getUserName();
2358                        String JavaDoc element_full_name = element.getFullName();
2359                        String JavaDoc element_email = element.getEmail();
2360                        String JavaDoc element_comment = element.getComment();
2361                        
2362                        if (name.equals(element_name) == false)
2363                        {
2364                            v.addElement(element);
2365                            continue;
2366                        }
2367                        
2368                        if (full_name == null)
2369                        {
2370                            if (element_full_name != null)
2371                            {
2372                                v.addElement(element);
2373                                continue;
2374                            }
2375                        }
2376                        else // full_name != null
2377
{
2378                            if (element_full_name == null)
2379                            {
2380                                v.addElement(element);
2381                                continue;
2382                            }
2383                            else
2384                            {
2385                                if (element_full_name.equals(full_name) == false)
2386                                {
2387                                    v.addElement(element);
2388                                    continue;
2389                                }
2390                            }
2391                        }
2392                        
2393                        
2394                        if (email == null)
2395                        {
2396                            if (element_email != null)
2397                            {
2398                                v.addElement(element);
2399                                continue;
2400                            }
2401                        }
2402                        else // email != null
2403
{
2404                            if (element_email == null)
2405                            {
2406                                v.addElement(element);
2407                                continue;
2408                            }
2409                            else
2410                            {
2411                                if (element_email.equals(email) == false)
2412                                {
2413                                    v.addElement(element);
2414                                    continue;
2415                                }
2416                            }
2417                        }
2418                        
2419                        if (comment == null)
2420                        {
2421                            if (element_comment != null)
2422                            {
2423                                v.addElement(element);
2424                                continue;
2425                            }
2426                        }
2427                        else // coment != null
2428
{
2429                            if (element_comment == null)
2430                            {
2431                                v.addElement(element);
2432                                continue;
2433                            }
2434                            else
2435                            {
2436                                if (element_comment.equals(comment) == false)
2437                                {
2438                                    v.addElement(element);
2439                                    continue;
2440                                }
2441                            }
2442                        }
2443                        
2444                        // there is a perfect match
2445
if (found == true)
2446                        {
2447                            v.addElement(element);
2448                        }
2449                        // else, dont add it
2450

2451                        found = true;
2452                    }
2453                    
2454                    cinfo.setOtherParties(v);
2455                    session.setCallInfo(cinfo);
2456                    
2457                    sessionInformationChanged(session);
2458                    Toolkit.getDefaultToolkit().beep();
2459                    return;
2460                }
2461                else if ((parsed_message instanceof GroupActivityMessage) == true)
2462                {
2463                    GroupActivityMessage ga = (GroupActivityMessage)parsed_message;
2464                    GroupElement ge = ga.getGroup();
2465                    
2466                    int num_elements = ge.numElements();
2467                    
2468                    for (int i = 0; i < num_elements; i++)
2469                    {
2470                        processGroupElement(ge.elementAt(i));
2471                    }
2472                }
2473                else if ((parsed_message instanceof UserToUserMessage) == true)
2474                {
2475                    UserToUserMessage m = (UserToUserMessage)parsed_message;
2476                    NetworkApplicationInterface app =
2477                    (NetworkApplicationInterface)applicationList.get(m.getApplicationClass());
2478                    if (app != null)
2479                    {
2480                        app.messageReceived(req_id, status,
2481                        content_type, http_status, reason,
2482                        m.getApplicationMessage());
2483                    }
2484                }
2485                else
2486                {
2487                    // System.out.println ("Unhandled message received: " + parsed_message.messageType());
2488
}
2489            }
2490        }
2491    }
2492    
2493    class JoinResponseListener implements HTTPMessageListenerInterface
2494    {
2495        public void messageReceived(int req_id,
2496        int status,
2497        String JavaDoc content_type,
2498        int http_status,
2499        String JavaDoc reason,
2500        String JavaDoc message)
2501        {
2502            synchronized (messageEventLock)
2503            {
2504                if (status == HTTPMessageListenerInterface.TIMEOUT)
2505                {
2506                    // close the connection
2507
disconnect();
2508                    
2509                    doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2510                    locale).getString("Time-out_receiving_response_from_server"));
2511                }
2512                else if (status == HTTPMessageListenerInterface.RECEIVED)
2513                {
2514                    if (http_status == HTTPRspMessage.OK)
2515                    {
2516                        TalkMessageParser parser = null;
2517                        
2518                        try
2519                        {
2520                            parser = new TalkMessageParser();
2521                        }
2522                        catch (Exception JavaDoc ex)
2523                        {
2524                            // print error message
2525
InformationDialog info = new InformationDialog(TalkFrame.this,
2526                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2527                            locale).getString("Error_exclaim"),
2528                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2529                            locale).getString("Error_obtaining_XML_parser_") + ' '
2530                            + ex.getClass().getName(),
2531                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2532                            locale).getString("_Close_"),
2533                            5000L);
2534                            
2535                            disconnect();
2536                            doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2537                            locale).getString("Error_obtaining_XML_parser"));
2538                            return;
2539                        }
2540                        
2541                        if (parser.parse(message, false) == false)
2542                        {
2543                            // print error message
2544
InformationDialog info = new InformationDialog(TalkFrame.this,
2545                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2546                            locale).getString("Error_exclaim"),
2547                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2548                            locale).getString("Error_decoding_server_response"),
2549                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2550                            locale).getString("_Close_"),
2551                            5000L);
2552                            
2553                            disconnect();
2554                            doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2555                            locale).getString("Error_decoding_server_response"));
2556                            return;
2557                        }
2558                        
2559                        TalkMessageInterface parsed_message = parser.getMessage();
2560                        if ((parsed_message instanceof JoinResponseMessage) == true)
2561                        {
2562                            JoinResponseMessage response_msg = (JoinResponseMessage)parsed_message;
2563                            
2564                            int num_sessions = response_msg.getSessionListSize();
2565                            long[] list = new long[num_sessions-1];
2566                            
2567                            // remove all the sessions except the first one
2568
for (int i = 1; i < num_sessions; i++)
2569                            {
2570                                list[i-1] = response_msg.getSessionIdAt(i);
2571                            }
2572                            
2573                            
2574                            for (int i = 0; i < list.length; i++)
2575                            {
2576                                TalkSessionInterface session = (TalkSessionInterface)callList.get(
2577                                new Long JavaDoc(list[i]));
2578                                session.cleanupCall();
2579                            }
2580                            
2581                            statusBar.setText(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2582                            locale).getString("Sessions_joined_successful"));
2583                            Toolkit.getDefaultToolkit().beep();
2584                        }
2585                        else
2586                        {
2587                            // print error message
2588
new InformationDialog(TalkFrame.this,
2589                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2590                            locale).getString("Error_exclaim"),
2591                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2592                            locale).getString("Bad_server_response"),
2593                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2594                            locale).getString("_Close_"), 5000L);
2595                            
2596                            disconnect();
2597                            doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2598                            locale).getString("Bad_server_response"));
2599                            return;
2600                        }
2601                    }
2602                    else
2603                    {
2604                        if (reason == null)
2605                        {
2606                            reason = java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2607                            locale).getString("No_reason_given");
2608                        }
2609                        
2610                        // the join request has not been successful
2611
new InformationDialog(TalkFrame.this,
2612                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2613                        locale).getString("Join"),
2614                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2615                        locale).getString("Join_failed_") + ' ' + reason,
2616                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2617                        locale).getString("_Close_"), true);
2618                    }
2619                }
2620                else // unexpected status
2621
{
2622                    disconnect();
2623                    
2624                    doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2625                    locale).getString("Unknown_status_") + ' ' + status + ' ' + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("_received_from_the_server"));
2626                }
2627            }
2628        }
2629    }
2630    
2631    class ChangePasswordResponseListener implements HTTPMessageListenerInterface
2632    {
2633        public void messageReceived(int req_id,
2634        int status,
2635        String JavaDoc content_type,
2636        int http_status,
2637        String JavaDoc reason,
2638        String JavaDoc message)
2639        {
2640            synchronized (messageEventLock)
2641            {
2642                if (status == HTTPMessageListenerInterface.TIMEOUT)
2643                {
2644                    // close the connection
2645
disconnect();
2646                    
2647                    doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2648                    locale).getString("Time-out_receiving_response_from_server"));
2649                }
2650                else if (status == HTTPMessageListenerInterface.RECEIVED)
2651                {
2652                    if (http_status == HTTPRspMessage.OK)
2653                    {
2654                        TalkMessageParser parser = null;
2655                        
2656                        try
2657                        {
2658                            parser = new TalkMessageParser();
2659                        }
2660                        catch (Exception JavaDoc ex)
2661                        {
2662                            // print error message
2663
InformationDialog info = new InformationDialog(TalkFrame.this,
2664                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2665                            locale).getString("Error_exclaim"),
2666                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2667                            locale).getString("Error_obtaining_XML_parser_") + ' '
2668                            + ex.getClass().getName(),
2669                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2670                            locale).getString("_Close_"),
2671                            5000L);
2672                            
2673                            disconnect();
2674                            doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2675                            locale).getString("Error_obtaining_XML_parser"));
2676                            return;
2677                        }
2678                        
2679                        if (parser.parse(message, false) == false)
2680                        {
2681                            // print error message
2682
InformationDialog info = new InformationDialog(TalkFrame.this,
2683                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2684                            locale).getString("Error_exclaim"),
2685                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2686                            locale).getString("Error_decoding_server_response"),
2687                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2688                            locale).getString("_Close_"),
2689                            5000L);
2690                            disconnect();
2691                            doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("Error_decoding_server_response"));
2692                            return;
2693                        }
2694                        
2695                        TalkMessageInterface parsed_message = parser.getMessage();
2696                        if ((parsed_message instanceof ChangePasswordResponseMessage) == true)
2697                        {
2698                            new InformationDialog(TalkFrame.this,
2699                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2700                            locale).getString("Change_password"),
2701                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2702                            locale).getString("Password_change_successful"),
2703                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2704                            locale).getString("_Close_"),
2705                            true);
2706                        }
2707                        else
2708                        {
2709                            // print error message
2710
new InformationDialog(TalkFrame.this,
2711                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2712                            locale).getString("Error_exclaim"),
2713                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2714                            locale).getString("Bad_server_response"),
2715                            java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2716                            locale).getString("_Close_"), 5000L);
2717                            
2718                            disconnect();
2719                            doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2720                            locale).getString("Bad_server_response"));
2721                            return;
2722                        }
2723                        
2724                    }
2725                    else
2726                    {
2727                        if (reason == null)
2728                        {
2729                            reason = java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2730                            locale).getString("No_reason_given");
2731                        }
2732                        
2733                        // the password change request has not been successful
2734
new InformationDialog(TalkFrame.this,
2735                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2736                        locale).getString("Change_password"),
2737                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2738                        locale).getString("Change_password_failed_") + ' ' + reason,
2739                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2740                        locale).getString("_Close_"), true);
2741                    }
2742                }
2743                else // unexpected status
2744
{
2745                    disconnect();
2746                    
2747                    doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2748                    locale).getString("Unknown_status_") + ' ' + status + ' ' + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("_received_from_the_server"));
2749                }
2750            }
2751        }
2752    }
2753    
2754    class DndResponseListener implements HTTPMessageListenerInterface
2755    {
2756        public void messageReceived(int req_id,
2757        int status,
2758        String JavaDoc content_type,
2759        int http_status,
2760        String JavaDoc reason,
2761        String JavaDoc message)
2762        {
2763            synchronized (messageEventLock)
2764            {
2765                if (status == HTTPMessageListenerInterface.TIMEOUT)
2766                {
2767                    // close the connection
2768
disconnect();
2769                    
2770                    doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2771                    locale).getString("Time-out_receiving_response_from_server"));
2772                }
2773                else if (status == HTTPMessageListenerInterface.RECEIVED)
2774                {
2775                    if (http_status == HTTPRspMessage.OK)
2776                    {
2777                        if (allowInboundCalls == true)
2778                        {
2779                            allowInboundCalls = false;
2780                         }
2781                        else
2782                        {
2783                            allowInboundCalls = true;
2784                          }
2785                        
2786                        setOptionsMenu();
2787                    }
2788                    else
2789                    {
2790                        if (reason == null)
2791                        {
2792                            reason = java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2793                            locale).getString("No_reason_given");
2794                        }
2795                        
2796                        // TODO change the text below
2797
new InformationDialog(TalkFrame.this,
2798                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2799                        locale).getString("Change_password"),
2800                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2801                        locale).getString("Change_password_failed_") + ' ' + reason,
2802                        java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2803                        locale).getString("_Close_"), true);
2804                    }
2805                }
2806                else // unexpected status
2807
{
2808                    disconnect();
2809                    
2810                    doLogin(java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language",
2811                    locale).getString("Unknown_status_") + ' ' + status + ' ' + java.util.ResourceBundle.getBundle("com.quikj.application.web.talk.client.language", locale).getString("_received_from_the_server"));
2812                }
2813            }
2814        }
2815    }
2816    
2817    class LoginDialogThread extends Thread JavaDoc
2818    {
2819        private String JavaDoc message;
2820        
2821        public LoginDialogThread(String JavaDoc message)
2822        {
2823            this.message = message;
2824        }
2825        
2826        public void run()
2827        {
2828            performLogin(message);
2829        }
2830    }
2831    
2832    // Variables declaration - do not modify//GEN-BEGIN:variables
2833
private java.awt.MenuItem JavaDoc aboutMenuItem;
2834    private java.awt.MenuItem JavaDoc allowIncomingMenu;
2835    private java.awt.MenuItem JavaDoc audioControlMenu;
2836    private java.awt.MenuItem JavaDoc autoAnswerMenu;
2837    private java.awt.Label JavaDoc captionLabel;
2838    private java.awt.MenuItem JavaDoc changePasswordMenuItem;
2839    private java.awt.MenuItem JavaDoc copyMenuItem;
2840    private java.awt.Menu JavaDoc editMenu;
2841    private java.awt.MenuItem JavaDoc emailMenuItem;
2842    private java.awt.MenuItem JavaDoc exitMenuItem;
2843    private java.awt.Menu JavaDoc fileMenu;
2844    private java.awt.List JavaDoc groupMembers;
2845    private java.awt.Menu JavaDoc helpMenu;
2846    private java.awt.MenuItem JavaDoc joinMenu;
2847    private java.awt.Label JavaDoc label1;
2848    private java.awt.Label JavaDoc label2;
2849    private java.awt.ScrollPane JavaDoc logoPane;
2850    private java.awt.MenuItem JavaDoc logoutMenuItem;
2851    private java.awt.MenuBar JavaDoc menuBar1;
2852    private java.awt.Menu JavaDoc operationsMenu;
2853    private java.awt.Menu JavaDoc optionMenu;
2854    private java.awt.Panel JavaDoc panel1;
2855    private java.awt.MenuItem JavaDoc pasteMenuItem;
2856    private java.awt.List JavaDoc sessionList;
2857    private java.awt.TextField JavaDoc statusBar;
2858    private java.awt.MenuItem JavaDoc talktoMenuItem;
2859    // End of variables declaration//GEN-END:variables
2860

2861    private String JavaDoc title;
2862    private String JavaDoc host;
2863    private int port;
2864    private int applicationId;
2865    private Applet applet;
2866    private boolean unregistered = false;
2867    private String JavaDoc unregisteredCalled;
2868    
2869    private ServerCommunications com = null;
2870    private boolean allowInboundCalls = true;
2871    private boolean autoAnswer = false;
2872    private Vector groupList = new Vector();
2873    private AudioClip ringTone = null;
2874    private AudioClip buzzTone = null;
2875    private AudioClip chimeTone = null;
2876    private AudioClip loginTone = null;
2877    private AudioClip logoutTone = null;
2878    private static TalkFrame instance = null;
2879    
2880    private static final String JavaDoc ALLOW = "Cancel_Do_Not_Disturb";
2881    private static final String JavaDoc DISALLOW = "Set_Do_Not_Disturb";
2882    
2883    private static final String JavaDoc AUTO_ANSWER = "Set_Auto_Answer";
2884    private static final String JavaDoc DONT_AUTO_ANSWER = "_Cancel_Auto_Answer";
2885    
2886    private static int missedCalls = 0;
2887    private Object JavaDoc missedCallsLock = new Object JavaDoc();
2888    private Object JavaDoc messageEventLock = new Object JavaDoc();
2889    private String JavaDoc language = "English";
2890    private Locale locale = new Locale("en", "US");
2891    
2892    private CallPartyElement userInformation = new CallPartyElement();
2893    private Hashtable callList = new Hashtable();
2894    
2895    private Vector sessionListVector = new Vector();
2896    private Object JavaDoc sessionLock = new Object JavaDoc();
2897    
2898    private Vector applicationMediaElements = new Vector();
2899    
2900    private boolean emailEnabled = true;
2901    
2902    private Vector frameList = new Vector();
2903    
2904    private String JavaDoc caption = null;
2905    private Image logo = null;
2906    
2907    private AutoEmailTranscriptInfo autoEmailInfo;
2908    
2909    /** Holds value of property displaySessionInfo. */
2910    private boolean displaySessionInfo = true;
2911    
2912    private Hashtable applicationList = new Hashtable();
2913    
2914    /** Holds value of property cannedMessageList. */
2915    private Vector cannedMessageList;
2916    
2917    /** Holds value of property timeAdjustment. */
2918    private long timeAdjustment = 0L;
2919    
2920    /** Holds value of property clientType. */
2921    private String JavaDoc clientType = "JAVA";
2922    
2923    /** Holds value of property dhtml. */
2924    private TalkSession dhtml;
2925    
2926    private boolean allowSendBuzz = true;
2927    private boolean allowSendWebPage = true;
2928}
2929
Popular Tags