1 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 25 public class TalkFrame extends java.awt.Frame implements HTTPConnectionClosedInterface 26 { 27 28 public TalkFrame(String title, 29 String host, 30 int port, 31 int appl_id, 32 Applet applet, 33 boolean unregistered, 34 String unregistered_called, 35 CallingNameElement element, 36 String caption, 37 Image logo) 38 throws TalkClientException 39 { 40 super(); 41 42 String 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 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 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 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 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 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 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 { 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 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 class_info = tokens.nextToken(); 237 StringTokenizer ptokens = new StringTokenizer(class_info, "?"); 239 int num_ptokens = ptokens.countTokens(); 240 String class_name = ptokens.nextToken(); 241 Hashtable params = new Hashtable(); 242 if (num_ptokens > 1) 243 { 244 String 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 } 258 } 259 260 try 261 { 262 Class 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 MenuItem mi = new MenuItem(n.menuItemName()); 279 mi.addActionListener(new ApplicationsMenuListener(class_name)); 280 operationsMenu.add(mi); 281 } 282 } 283 } 284 catch (Exception ex) 285 { 286 System.out.println(ex.getClass().getName() + ": " + ex.getMessage()); 287 ex.printStackTrace(); 288 continue; 290 } 291 292 } 293 } 294 295 private void initApplicationMediaElements() 296 { 297 String 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 class_name = tokens.nextToken(); 306 applicationMediaElements.addElement(class_name); 307 } 308 } 309 } 310 311 public static Locale getLocale(String 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 String 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 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 394 private void initComponents() { 396 java.awt.GridBagConstraints gridBagConstraints; 397 398 panel1 = new java.awt.Panel (); 399 captionLabel = new java.awt.Label (); 400 logoPane = new ScrollPane(ScrollPane.SCROLLBARS_NEVER); 401 logoPane.setSize(75, 75); 402 label1 = new java.awt.Label (); 403 sessionList = new java.awt.List (); 404 label2 = new java.awt.Label (); 405 groupMembers = new java.awt.List (); 406 statusBar = new java.awt.TextField (); 407 menuBar1 = new java.awt.MenuBar (); 408 fileMenu = new java.awt.Menu (); 409 changePasswordMenuItem = new java.awt.MenuItem (); 410 logoutMenuItem = new java.awt.MenuItem (); 411 exitMenuItem = new java.awt.MenuItem (); 412 editMenu = new java.awt.Menu (); 413 copyMenuItem = new java.awt.MenuItem (); 414 pasteMenuItem = new java.awt.MenuItem (); 415 optionMenu = new java.awt.Menu (); 416 allowIncomingMenu = new java.awt.MenuItem (); 417 autoAnswerMenu = new java.awt.MenuItem (); 418 audioControlMenu = new java.awt.MenuItem (); 419 operationsMenu = new java.awt.Menu (); 420 talktoMenuItem = new java.awt.MenuItem (); 421 joinMenu = new java.awt.MenuItem (); 422 emailMenuItem = new java.awt.MenuItem (); 423 helpMenu = new java.awt.Menu (); 424 aboutMenuItem = new java.awt.MenuItem (); 425 426 setLayout(new java.awt.GridBagLayout ()); 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 () 431 { 432 public void windowClosing(java.awt.event.WindowEvent evt) 433 { 434 exitForm(evt); 435 } 436 }); 437 438 panel1.setLayout(new java.awt.GridBagLayout ()); 439 440 panel1.setBackground(new java.awt.Color (255, 255, 255)); 441 captionLabel.setFont(new java.awt.Font ("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 (); 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 (); 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 (); 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 (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 (); 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 (10, 10, 0, 0); 472 add(label1, gridBagConstraints); 473 474 sessionList.setMultipleMode(true); 475 sessionList.setBackground(new java.awt.Color (255, 255, 255)); 476 gridBagConstraints = new java.awt.GridBagConstraints (); 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 (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 (); 488 gridBagConstraints.gridx = 0; 489 gridBagConstraints.gridy = 3; 490 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 491 gridBagConstraints.insets = new java.awt.Insets (10, 10, 0, 0); 492 add(label2, gridBagConstraints); 493 494 groupMembers.setFont(new java.awt.Font ("Monospaced", 0, 12)); 495 groupMembers.setBackground(new java.awt.Color (255, 255, 255)); 496 gridBagConstraints = new java.awt.GridBagConstraints (); 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 (0, 10, 0, 10); 504 add(groupMembers, gridBagConstraints); 505 506 statusBar.setBackground(new java.awt.Color (255, 255, 255)); 507 statusBar.setEditable(false); 508 gridBagConstraints = new java.awt.GridBagConstraints (); 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 (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 () 519 { 520 public void actionPerformed(java.awt.event.ActionEvent 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 () 531 { 532 public void actionPerformed(java.awt.event.ActionEvent 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 () 542 { 543 public void actionPerformed(java.awt.event.ActionEvent 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 () 565 { 566 public void actionPerformed(java.awt.event.ActionEvent 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 () 576 { 577 public void actionPerformed(java.awt.event.ActionEvent 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 () 587 { 588 public void actionPerformed(java.awt.event.ActionEvent 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 () 601 { 602 public void actionPerformed(java.awt.event.ActionEvent 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 () 612 { 613 public void actionPerformed(java.awt.event.ActionEvent 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 () 623 { 624 public void actionPerformed(java.awt.event.ActionEvent 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 () 637 { 638 public void actionPerformed(java.awt.event.ActionEvent 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 } 653 private void emailMenuItemActionPerformed(java.awt.event.ActionEvent evt) { Vector addresses = new Vector(); 657 658 EmailFrame email = new EmailFrame(); 659 email.setFrom(userInformation.getEmail()); 660 661 if (userInformation.getEmail() != null) 663 { 664 if (addresses.contains(userInformation.getEmail()) == false) 665 { 666 addresses.addElement(userInformation.getEmail()); 667 } 668 } 669 670 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 [] abook = new String [addresses.size()]; 694 for (int i = 0; i < abook.length; i++) 695 { 696 abook[i] = (String )addresses.elementAt(i); 697 } 698 699 email.setAddressBook(abook); 700 } 701 702 } 704 private void audioControlMenuActionPerformed(java.awt.event.ActionEvent evt) { new AudioControlDialog(this, locale); 708 } 710 private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) { new AboutAceOperatorFrame(this, locale, applet); 714 715 } 717 private void changePasswordMenuItemActionPerformed(java.awt.event.ActionEvent evt) { ChangePasswordDialog cpd = new ChangePasswordDialog(this, locale); 721 if (cpd.isChangeSelected() == true) 722 { 723 String 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 ChangePasswordRequestMessage message = new ChangePasswordRequestMessage(); 737 message.setNewPassword(cpd.getNewPassword()); 738 message.setOldPassword(cpd.getOldPassword()); 739 message.setUserName(userInformation.getUserName()); 740 741 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 } 761 private void joinMenuActionPerformed(java.awt.event.ActionEvent evt) { 765 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 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 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 } 823 private void autoAnswerMenuActionPerformed(java.awt.event.ActionEvent evt) { if (autoAnswer == true) 827 { 828 autoAnswer = false; 829 } 830 else 831 { 832 autoAnswer = true; 833 } 834 835 setOptionsMenu(); 836 837 } 839 private void allowIncomingMenuActionPerformed(java.awt.event.ActionEvent evt) { DndRequestMessage message = new DndRequestMessage(); 843 message.setEnable(allowInboundCalls); 844 845 int req_id = com.sendRequestMessage("text/xml", 847 message.format(), 848 new DndResponseListener(), 849 10000); 850 if (req_id == -1) 851 { 852 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 } 866 private void talktoMenuItemActionPerformed(java.awt.event.ActionEvent evt) { String 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 called_name = make_call.getText().trim(); 882 if (called_name.length() > 0) { 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 } 903 private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) { AudioControlDialog.reset(); 907 resetOptions(); 908 dispose(); 909 } 911 private void logoutMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 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 groupMembers.removeAll(); 928 groupList.removeAllElements(); 929 930 sessionList.removeAll(); 932 933 callList.clear(); 934 935 AudioControlDialog.reset(); 936 resetOptions(); 937 disconnect(); 938 939 doLogin(); 940 } 942 943 private void exitForm(java.awt.event.WindowEvent evt) { AudioControlDialog.reset(); 945 resetOptions(); 946 dispose(); 947 } 949 public void connectionClosed(String host, int port, int appl_id) 950 { 951 disconnect(); 952 953 String 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 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 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 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 message) 1048 { 1049 while (true) 1050 { 1051 LoginDialog login_dialog = new LoginDialog(TalkFrame.this, message, 1052 locale); 1053 1054 if (login_dialog.isButtonClicked() == false) 1056 { 1057 login_dialog.dispose(); 1058 continue; 1059 } 1060 1061 if (login_dialog.isLoginClicked() == true) 1062 { 1063 String user = login_dialog.getUser(); 1064 String 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 if (login(user, password) == true) 1078 { 1079 userInformation.setName(user); 1080 break; 1081 } 1082 } 1083 else { 1085 dispose(); 1086 break; 1087 } 1088 } 1089 } 1090 1091 1092 private boolean connect() 1093 { 1094 if (com != null) 1095 { 1096 disconnect(); } 1098 1099 try 1100 { 1101 com = new ServerCommunications(host, port, applicationId); 1102 } 1103 catch (UnknownHostException ex) 1104 { 1105 return false; 1106 } 1107 1108 1110 if (isRegistered() == true) 1111 { 1112 String 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 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 com.start(); 1148 1149 if (isRegistered() == true) 1150 { 1151 String 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 user, String 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 getCallDescriptionText(TalkSessionInterface session) 1203 { 1204 CallInfo cinfo = session.getCallInfo(); 1205 StringBuffer strbuf = new StringBuffer (); 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 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 (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 buffer = new StringBuffer (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 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 (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 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 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 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 buffer = new StringBuffer (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 output = new StringBuffer (); 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 (array, 0, count)); 1474 } 1475 1476 CannedMessageParser cp = new CannedMessageParser(); 1478 cannedMessageList = cp.parseListMessage(output.toString()); 1479 } 1480 catch (Exception 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) { 1497 return element.getMessage(); 1498 } 1499 1500 1501 String 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 buffer = new StringBuffer (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 output = new StringBuffer (); 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 (array, 0, count)); 1525 } 1526 1527 CannedMessageParser cp = new CannedMessageParser(); 1529 return cp.parseQueryMessage(output.toString()); 1530 } 1531 catch (Exception ex) 1532 { 1533 return null; 1534 } 1535 } 1536 1537 1538 private void downloadClips() 1539 { 1540 1542 String 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 ring_url = applet.getParameter("ring"); 1550 if (ring_url != null) 1551 { 1552 ringTone = getAudioClip(ring_url); 1553 } 1554 1555 1556 String buzz_url = applet.getParameter("buzz"); 1557 if (buzz_url != null) 1558 { 1559 buzzTone = getAudioClip(buzz_url); 1560 } 1561 1562 1563 String chime_url = applet.getParameter("chime"); 1564 if (chime_url != null) 1565 { 1566 chimeTone = getAudioClip(chime_url); 1567 } 1568 1569 String logout_url = applet.getParameter("logout"); 1570 if (logout_url != null) 1571 { 1572 logoutTone = getAudioClip(logout_url); 1573 } 1574 1575 String 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 (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 (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 (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 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 1731 public java.util.Vector getApplicationMediaElements() 1732 { 1733 return applicationMediaElements; 1734 } 1735 1736 1740 public void setApplicationMediaElements(java.util.Vector applicationMediaElements) 1741 { 1742 this.applicationMediaElements = applicationMediaElements; 1743 } 1744 1745 1749 public boolean isEmailEnabled() 1750 { 1751 return emailEnabled; 1752 } 1753 1754 1758 public void setEmailEnabled(boolean emailEnabled) 1759 { 1760 this.emailEnabled = emailEnabled; 1761 } 1762 1763 1767 public java.lang.String getCaption() 1768 { 1769 return caption; 1770 } 1771 1772 1776 public void setCaption(java.lang.String caption) 1777 { 1778 this.caption = caption; 1779 } 1780 1781 1785 public java.awt.Image getLogo() 1786 { 1787 return logo; 1788 } 1789 1790 1794 public void setLogo(java.awt.Image logo) 1795 { 1796 this.logo = logo; 1797 } 1798 1799 1803 public com.quikj.application.web.talk.client.AutoEmailTranscriptInfo getAutoEmailInfo() 1804 { 1805 return autoEmailInfo; 1806 } 1807 1808 1812 public void setAutoEmailInfo(com.quikj.application.web.talk.client.AutoEmailTranscriptInfo autoEmailInfo) 1813 { 1814 this.autoEmailInfo = autoEmailInfo; 1815 } 1816 1817 1821 public boolean isDisplaySessionInfo() 1822 { 1823 return this.displaySessionInfo; 1824 } 1825 1826 1830 public void setDisplaySessionInfo(boolean displaySessionInfo) 1831 { 1832 this.displaySessionInfo = displaySessionInfo; 1833 } 1834 1835 1839 public Vector getCannedMessageList() 1840 { 1841 return this.cannedMessageList; 1842 } 1843 1844 1848 public void setCannedMessageList(Vector cannedMessageList) 1849 { 1850 this.cannedMessageList = cannedMessageList; 1851 } 1852 1853 1857 public long getTimeAdjustment() 1858 { 1859 return timeAdjustment; 1860 } 1861 1862 1866 public void setTimeAdjustment(long timeAdjustment) 1867 { 1868 this.timeAdjustment = timeAdjustment; 1869 } 1870 1871 1875 public String getClientType() 1876 { 1877 return this.clientType; 1878 } 1879 1880 1884 public void setClientType(String 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 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 media, String param) 1915 { 1916 synchronized (sessionLock) 1917 { 1918 dhtml.handleMedia(media, param); 1919 } 1920 } 1921 1922 1925 public boolean isAllowSendBuzz() 1926 { 1927 return allowSendBuzz; 1928 } 1929 1932 public void setAllowSendBuzz(boolean allowSendBuzz) 1933 { 1934 this.allowSendBuzz = allowSendBuzz; 1935 } 1936 1939 public boolean isAllowSendWebPage() 1940 { 1941 return allowSendWebPage; 1942 } 1943 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 className; 1987 1988 public ApplicationsMenuListener(String class_name) 1989 { 1990 className = class_name; 1991 } 1992 1993 public void actionPerformed(java.awt.event.ActionEvent 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 content_type, 2005 int http_status, 2006 String reason, 2007 String message) 2008 { 2009 synchronized (messageEventLock) 2010 { 2011 if (status == HTTPMessageListenerInterface.TIMEOUT) 2012 { 2013 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 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 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 downloadCannedMessageList(response_msg.getGroupList()); 2116 2117 downloadClips(); 2119 } 2120 else 2121 { 2122 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 { 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 content_type, 2170 int http_status, 2171 String reason, 2172 String message) 2173 { 2174 synchronized (messageEventLock) 2175 { 2176 TalkMessageParser parser = null; 2178 2179 try 2180 { 2181 parser = new TalkMessageParser(); 2182 } 2183 catch (Exception ex) 2184 { 2185 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 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) { 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) { 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 TalkSessionInterface session = findCallInfo(old_session_id); 2301 if (session == null) { 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 enc_key = replace.getEncryptedKey(); 2317 2318 cinfo.setEncryptedKey(enc_key); 2319 session.setCallInfo(cinfo); 2320 2321 callList.remove(new Long (old_session_id)); 2323 callList.put(new Long (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) { 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 name = userInformation.getUserName(); 2349 String full_name = userInformation.getFullName(); 2350 String email = userInformation.getEmail(); 2351 String 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 element_name = element.getUserName(); 2358 String element_full_name = element.getFullName(); 2359 String element_email = element.getEmail(); 2360 String 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 { 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 { 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 { 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 if (found == true) 2446 { 2447 v.addElement(element); 2448 } 2449 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 } 2489 } 2490 } 2491 } 2492 2493 class JoinResponseListener implements HTTPMessageListenerInterface 2494 { 2495 public void messageReceived(int req_id, 2496 int status, 2497 String content_type, 2498 int http_status, 2499 String reason, 2500 String message) 2501 { 2502 synchronized (messageEventLock) 2503 { 2504 if (status == HTTPMessageListenerInterface.TIMEOUT) 2505 { 2506 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 ex) 2523 { 2524 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 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 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 (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 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 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 { 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 content_type, 2636 int http_status, 2637 String reason, 2638 String message) 2639 { 2640 synchronized (messageEventLock) 2641 { 2642 if (status == HTTPMessageListenerInterface.TIMEOUT) 2643 { 2644 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 ex) 2661 { 2662 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 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 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 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 { 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 content_type, 2759 int http_status, 2760 String reason, 2761 String message) 2762 { 2763 synchronized (messageEventLock) 2764 { 2765 if (status == HTTPMessageListenerInterface.TIMEOUT) 2766 { 2767 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 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 { 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 2818 { 2819 private String message; 2820 2821 public LoginDialogThread(String message) 2822 { 2823 this.message = message; 2824 } 2825 2826 public void run() 2827 { 2828 performLogin(message); 2829 } 2830 } 2831 2832 private java.awt.MenuItem aboutMenuItem; 2834 private java.awt.MenuItem allowIncomingMenu; 2835 private java.awt.MenuItem audioControlMenu; 2836 private java.awt.MenuItem autoAnswerMenu; 2837 private java.awt.Label captionLabel; 2838 private java.awt.MenuItem changePasswordMenuItem; 2839 private java.awt.MenuItem copyMenuItem; 2840 private java.awt.Menu editMenu; 2841 private java.awt.MenuItem emailMenuItem; 2842 private java.awt.MenuItem exitMenuItem; 2843 private java.awt.Menu fileMenu; 2844 private java.awt.List groupMembers; 2845 private java.awt.Menu helpMenu; 2846 private java.awt.MenuItem joinMenu; 2847 private java.awt.Label label1; 2848 private java.awt.Label label2; 2849 private java.awt.ScrollPane logoPane; 2850 private java.awt.MenuItem logoutMenuItem; 2851 private java.awt.MenuBar menuBar1; 2852 private java.awt.Menu operationsMenu; 2853 private java.awt.Menu optionMenu; 2854 private java.awt.Panel panel1; 2855 private java.awt.MenuItem pasteMenuItem; 2856 private java.awt.List sessionList; 2857 private java.awt.TextField statusBar; 2858 private java.awt.MenuItem talktoMenuItem; 2859 2861 private String title; 2862 private String host; 2863 private int port; 2864 private int applicationId; 2865 private Applet applet; 2866 private boolean unregistered = false; 2867 private String 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 ALLOW = "Cancel_Do_Not_Disturb"; 2881 private static final String DISALLOW = "Set_Do_Not_Disturb"; 2882 2883 private static final String AUTO_ANSWER = "Set_Auto_Answer"; 2884 private static final String DONT_AUTO_ANSWER = "_Cancel_Auto_Answer"; 2885 2886 private static int missedCalls = 0; 2887 private Object missedCallsLock = new Object (); 2888 private Object messageEventLock = new Object (); 2889 private String 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 sessionLock = new Object (); 2897 2898 private Vector applicationMediaElements = new Vector(); 2899 2900 private boolean emailEnabled = true; 2901 2902 private Vector frameList = new Vector(); 2903 2904 private String caption = null; 2905 private Image logo = null; 2906 2907 private AutoEmailTranscriptInfo autoEmailInfo; 2908 2909 2910 private boolean displaySessionInfo = true; 2911 2912 private Hashtable applicationList = new Hashtable(); 2913 2914 2915 private Vector cannedMessageList; 2916 2917 2918 private long timeAdjustment = 0L; 2919 2920 2921 private String clientType = "JAVA"; 2922 2923 2924 private TalkSession dhtml; 2925 2926 private boolean allowSendBuzz = true; 2927 private boolean allowSendWebPage = true; 2928} 2929 | Popular Tags |