1 29 38 39 package org.planetamessenger.mos.forms; 40 41 import java.awt.event.*; 42 import javax.swing.*; 43 import org.planetamessenger.mos.engine.*; 44 import org.planetamessenger.plugin.*; 45 import snoozesoft.systray4j.*; 46 47 48 49 public class JMOSWindow extends javax.swing.JFrame implements SysTrayMenuListener, JPluginEngineListener { 50 51 static public final int LOOK_AND_FEEL_REFRESH = 0; 52 static public final int LANGUAGE_REFRESH = 1; 53 54 private final int SPLASH_WIDTH = 350; 55 private final int SPLASH_HEIGHT = 250; 56 57 private boolean bUICreated; 58 private JContactListEvents contactListEvt; 59 private String [] toolTips; 60 private SysTrayMenuIcon[] menuIcons; 61 private SysTrayMenu trayMenu; 62 private SysTrayMenuItem trayItemAbout; 63 private SysTrayMenuItem trayItemShowHide; 64 private SysTrayMenuItem trayItemExit; 65 private org.planetamessenger.mos.ui.JContactList contactList = null; 66 private org.planetamessenger.mos.ui.JAccountsTable accountsTable; 67 private javax.swing.JWindow splashWindow; 68 private javax.swing.JTabbedPane mainTabs; 69 private javax.swing.JScrollPane contactListPane; 70 private javax.swing.JScrollPane accountsPane; 71 private org.planetamessenger.ui.JStatusBar statusBar; 72 private javax.swing.JMenuBar appMenu; 73 private javax.swing.JMenu profileMenu; 74 private javax.swing.JMenuItem manageProfileItem; 75 private javax.swing.JMenuItem addUserItem; 76 private javax.swing.JMenuItem myMessengerItem; 77 private javax.swing.JMenuItem exitAppItem; 78 private javax.swing.JMenu helpMenu; 79 private javax.swing.JMenuItem aboutItem; 80 private javax.swing.JMenuItem debugItem; 81 private javax.swing.JToolBar toolBar = null; 82 private javax.swing.AbstractAction addInviteAction; 83 private javax.swing.AbstractAction myMessengerAction; 84 private javax.swing.JPanel toolBarPanel; 85 private JMOSPreferencesDlg preferencesDlg = null; 86 87 88 92 public JMOSWindow() { 93 94 } 95 96 99 public void startEngine() { 100 101 bUICreated = false; 102 startPluginEngine(); 103 initSplashWindow(); 104 initComponents(); 105 preferencesDlg = new JMOSPreferencesDlg( this, true ); 106 107 setNextInitStep( JSharedObjects.getLanguageManager().getStringEx( "INITIALIZING_PLUGINS" ) , false ); 108 startPlugins(); 109 setNextInitStep( JSharedObjects.getLanguageManager().getStringEx( "STARTING_MAIN_WINDOW" ), true ); 110 createTrayMenu(); 111 bUICreated = true; 112 113 setDefaultLookAndFeelDecorated( true ); 114 splashWindow.setVisible( false ); 115 116 setSize( JSharedObjects.getConfiguration().getMainWindowSize() ); 118 setLocation( JSharedObjects.getConfiguration().getMainWindowLocation() ); 119 120 if( JSharedObjects.getConfiguration().getMainWindowStatus() ) 121 setVisible( true ); 122 else 123 setVisible( false ); 124 125 windowRefresh( LANGUAGE_REFRESH ); 126 } 127 128 137 public void windowRefresh( int nRefreshType ) { 138 139 Object messageWindows[] = JSharedObjects.getPluginEngine().getAllMessageWindows(); 140 JMOSSendMessageDlg messageWnd; 141 142 143 if( nRefreshType == LOOK_AND_FEEL_REFRESH ) { 144 if( splashWindow != null ) { 146 javax.swing.SwingUtilities.updateComponentTreeUI( this ); 147 javax.swing.SwingUtilities.updateComponentTreeUI( splashWindow ); 148 preferencesDlg.updateLAF(); 149 } 150 151 if( contactList != null ) 152 javax.swing.SwingUtilities.updateComponentTreeUI( contactList ); 153 154 JSharedObjects.getConsoleWindow().updateUI(); 156 } 157 else { 159 if( bUICreated ) { 160 refreshAppMenu(); 161 updateTrayMenu(); 162 updateToolBar(); 163 updateMainTabs(); 164 getContactList().updateLanguage(); 165 getAccountsTable().updateLanguage(); 166 preferencesDlg.updateLanguage(); 167 setTitle( JSharedObjects.getLanguageManager().getStringEx( "PLANETAMESSENGER_TITLE" ) ); 168 JSharedObjects.getConsoleWindow().setTitle( JSharedObjects.getLanguageManager().getStringEx( "PLANETAMESSENGER_CONSOLE_TITLE" ) ); 169 } 170 } 171 172 for( int nCount = 0; nCount < messageWindows.length; nCount++ ) { 174 messageWnd = ( JMOSSendMessageDlg ) messageWindows[nCount]; 175 messageWnd.updateLanguage(); 176 javax.swing.SwingUtilities.updateComponentTreeUI( messageWnd ); 177 } 178 179 invalidate(); 180 validate(); 181 repaint(); 182 } 183 184 188 public org.planetamessenger.mos.ui.JContactList getContactList() { 189 190 return contactList; 191 } 192 193 197 public org.planetamessenger.mos.ui.JAccountsTable getAccountsTable() { 198 199 return accountsTable; 200 } 201 202 205 public JMOSPreferencesDlg getPreferencesDialog() { 206 207 return preferencesDlg; 208 } 209 210 214 private void createAppMenu() { 215 216 profileMenu = new javax.swing.JMenu (); 217 manageProfileItem = new javax.swing.JMenuItem (); 218 addUserItem = new javax.swing.JMenuItem (); 219 myMessengerItem = new javax.swing.JMenuItem (); 220 exitAppItem = new javax.swing.JMenuItem (); 221 helpMenu = new javax.swing.JMenu (); 222 aboutItem = new javax.swing.JMenuItem (); 223 debugItem = new javax.swing.JMenuItem (); 224 appMenu = new javax.swing.JMenuBar (); 225 226 refreshAppMenu(); 227 228 manageProfileItem.setFont( JSystemFonts.MENU_FONT ); 230 manageProfileItem.setIcon( JSharedObjects.getResources().getIcon( JResources.PROFILE_ICON ) ); 231 addUserItem.setFont( JSystemFonts.MENU_FONT ); 232 addUserItem.setIcon( JSharedObjects.getResources().getIcon( JResources.ADD_INVITE_ICON ) ); 233 myMessengerItem.setFont( JSystemFonts.MENU_FONT ); 234 myMessengerItem.setIcon( JSharedObjects.getResources().getIcon( JResources.MY_MESSENGER_ICON ) ); 235 exitAppItem.setFont( JSystemFonts.MENU_FONT ); 236 exitAppItem.setIcon( JSharedObjects.getResources().getIcon( JResources.EXIT_ICON ) ); 237 aboutItem.setFont( JSystemFonts.MENU_FONT ); 238 aboutItem.setIcon( JSharedObjects.getResources().getIcon( JResources.ABOUT_ICON ) ); 239 debugItem.setFont( JSystemFonts.MENU_FONT ); 240 debugItem.setIcon( JSharedObjects.getResources().getIcon( JResources.CONSOLE_ICON ) ); 241 242 addUserItem.setEnabled( false ); 244 245 profileMenu.setFont( JSystemFonts.MENU_HEADER_FONT ); 247 profileMenu.add( manageProfileItem ); 248 profileMenu.add( addUserItem ); 249 profileMenu.add( myMessengerItem ); 250 profileMenu.addSeparator(); 251 profileMenu.add( exitAppItem ); 252 appMenu.add( profileMenu ); 253 254 helpMenu.setFont( JSystemFonts.MENU_HEADER_FONT ); 256 helpMenu.add( debugItem ); 257 helpMenu.addSeparator(); 258 helpMenu.add( aboutItem ); 259 appMenu.add( javax.swing.Box.createHorizontalGlue() ); 260 appMenu.add( helpMenu ); 261 262 addMenuEventHandlers(); 263 264 setJMenuBar( appMenu ); 265 } 266 267 271 private void refreshAppMenu() { 272 273 profileMenu.setText( JSharedObjects.getLanguageManager().getStringEx( "PROFILE" ) ); 274 profileMenu.updateUI(); 275 manageProfileItem.setText( JSharedObjects.getLanguageManager().getStringEx( "PROFILE_MANAGER" ) ); 276 manageProfileItem.updateUI(); 277 addUserItem.setText( JSharedObjects.getLanguageManager().getStringEx( "ADD_INVITE_USER" ) ); 278 addUserItem.updateUI(); 279 myMessengerItem.setText( JSharedObjects.getLanguageManager().getStringEx( "MY_MESSENGER" ) ); 280 myMessengerItem.updateUI(); 281 exitAppItem.setText( JSharedObjects.getLanguageManager().getStringEx( "EXIT" ) ); 282 exitAppItem.updateUI(); 283 helpMenu.setText( JSharedObjects.getLanguageManager().getStringEx( "HELP" ) ); 284 helpMenu.updateUI(); 285 aboutItem.setText( JSharedObjects.getLanguageManager().getStringEx( "ABOUT" ) ); 286 aboutItem.updateUI(); 287 debugItem.setText( JSharedObjects.getLanguageManager().getStringEx( "SHOW_DEBUG_CONSOLE" ) ); 288 debugItem.updateUI(); 289 } 290 291 295 private void updateToolBar() { 296 297 if( toolBar == null ) { 298 toolBar = new javax.swing.JToolBar (); 299 toolBar.setFloatable( false ); 300 301 addInviteAction = new javax.swing.AbstractAction () { 302 { 303 putValue( NAME, "A" ); 304 putValue( MNEMONIC_KEY, new Integer ( 'A' ) ); 305 putValue( SHORT_DESCRIPTION, JSharedObjects.getLanguageManager().getStringEx( "ADD_INVITE_USER" ) ); 306 putValue( SMALL_ICON, JSharedObjects.getResources().getIcon( JResources.ADD_INVITE_ICON ) ); 307 setEnabled( false ); 308 } 309 310 public void actionPerformed( java.awt.event.ActionEvent evt ) { 311 addInviteButtonActionPerformed( evt ); 312 } 313 }; 314 315 myMessengerAction = new javax.swing.AbstractAction () { 316 317 { 318 putValue( NAME, "M" ); 319 putValue( MNEMONIC_KEY, new Integer ( 'M' ) ); 320 putValue( SHORT_DESCRIPTION, JSharedObjects.getLanguageManager().getStringEx( "MY_MESSENGER" ) ); 321 putValue( SMALL_ICON, JSharedObjects.getResources().getIcon( JResources.MY_MESSENGER_ICON ) ); 322 } 324 325 public void actionPerformed( java.awt.event.ActionEvent evt ) { 326 myMessengerButtonActionPerformed( evt ); 327 } 328 }; 329 330 toolBar.add( addInviteAction ); 331 toolBar.add( myMessengerAction ); 332 toolBarPanel.add( toolBar, java.awt.BorderLayout.CENTER ); 333 } 334 else { 335 addInviteAction.putValue( javax.swing.AbstractAction.SHORT_DESCRIPTION, JSharedObjects.getLanguageManager().getStringEx( "ADD_INVITE_USER" ) ); 336 myMessengerAction.putValue( javax.swing.AbstractAction.SHORT_DESCRIPTION, JSharedObjects.getLanguageManager().getStringEx( "MY_MESSENGER" ) ); 337 } 338 } 339 340 344 private void createTrayMenu() { 345 346 trayItemAbout = new SysTrayMenuItem( "", "about" ); 347 trayItemShowHide = new SysTrayMenuItem( "", "show/hide" ); 348 trayItemExit = new SysTrayMenuItem( "", "exit" ); 349 350 trayItemAbout.addSysTrayMenuListener( this ); 352 trayItemShowHide.addSysTrayMenuListener( this ); 353 trayItemExit.addSysTrayMenuListener( this ); 354 355 toolTips = new String [1]; 356 toolTips[0] = JSharedObjects.getLanguageManager().getStringEx( "PLANETAMESSENGER_TITLE" ); 357 menuIcons = new SysTrayMenuIcon[1]; 358 menuIcons[0] = new SysTrayMenuIcon( JSharedObjects.getConfiguration().getResourcesPath() + "pm_trayicon" ); 359 menuIcons[0].addSysTrayMenuListener( this ); 360 trayMenu = new SysTrayMenu( menuIcons[0], toolTips[0] ); 361 362 updateTrayMenu(); 363 364 trayMenu.addItem( trayItemExit ); 365 trayMenu.addSeparator(); 366 trayMenu.addItem( trayItemAbout ); 367 trayMenu.addItem( trayItemShowHide ); 368 } 369 370 374 private void updateTrayMenu() { 375 376 trayItemAbout.setLabel( JSharedObjects.getLanguageManager().getStringEx( "ABOUT" ) ); 377 trayItemShowHide.setLabel( JSharedObjects.getLanguageManager().getStringEx( "SHOW_HIDE_WINDOW" ) ); 378 trayItemExit.setLabel( JSharedObjects.getLanguageManager().getStringEx( "EXIT" ) ); 379 } 380 381 385 private void updateMainTabs() { 386 387 mainTabs.setTitleAt( 0, JSharedObjects.getLanguageManager().getStringEx( "CONTACTS" ) ); 388 mainTabs.setTitleAt( 1, JSharedObjects.getLanguageManager().getStringEx( "ACCOUNTS" ) ); 389 } 390 391 395 private void addMenuEventHandlers() { 396 397 manageProfileItem.addActionListener( new ActionListener() { 400 public void actionPerformed( ActionEvent evt ) { 401 402 manageProfileButtonActionPerformed( evt ); 403 } 404 } ); 405 406 addUserItem.addActionListener( new ActionListener() { 408 409 public void actionPerformed( ActionEvent evt ) { 410 411 addInviteButtonActionPerformed( evt ); 412 } 413 } 414 ); 415 416 myMessengerItem.addActionListener( new ActionListener() { 418 419 public void actionPerformed( ActionEvent evt ) { 420 421 myMessengerButtonActionPerformed( evt ); 422 } 423 } 424 ); 425 426 exitAppItem.addActionListener( new ActionListener() { 428 429 public void actionPerformed( ActionEvent evt ) { 430 431 exitForm(); 432 } 433 } 434 ); 435 436 debugItem.addActionListener( new ActionListener() { 439 440 public void actionPerformed( ActionEvent evt ) { 441 442 JSharedObjects.getConsoleWindow().show(); 443 } 444 } 445 ); 446 447 aboutItem.addActionListener( new ActionListener() { 449 public void actionPerformed( ActionEvent evt ) { 450 about(); 451 } 452 } 453 ); 454 } 455 456 460 private void initSplashWindow() { 461 462 java.awt.Dimension dmScreen = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); 463 int nPosX = ( dmScreen.width - SPLASH_WIDTH ) / 2; 464 int nPosY = ( dmScreen.height - SPLASH_HEIGHT ) / 2; 465 int nStringWidth = 0; 466 int nStringHeight = 10; 467 javax.swing.JProgressBar progressBar = new javax.swing.JProgressBar (); 468 javax.swing.JPanel contentPane = null; 469 javax.swing.JLabel version = new javax.swing.JLabel ( JSharedObjects.getLanguageManager().getStringEx( "PLANETAMESSENGER_SPLASH_INFO" ) ); 470 javax.swing.JLabel copyLeft = new javax.swing.JLabel ( JSharedObjects.getLanguageManager().getStringEx( "PLANETAMESSENGER_SPLASH_COPYRIGHT_INFO" ) ); 471 javax.swing.JLabel infoLabel = new javax.swing.JLabel ( JSharedObjects.getLanguageManager().getStringEx( "LOADING_COMPONENTS" ) ); 472 javax.swing.JLabel backImage = new javax.swing.JLabel ( JSharedObjects.getResources().getImage( JResources.SPLASH_WINDOW_BACKGROUND ) ); 473 javax.swing.JLabel loadingImage = new javax.swing.JLabel ( JSharedObjects.getResources().getIcon( JResources.LOADING_STARTUP_ICON ) ); 474 475 backImage.setBounds( 0, 0, SPLASH_WIDTH, SPLASH_HEIGHT ); 476 backImage.setBorder( new javax.swing.border.LineBorder ( new java.awt.Color ( 0, 0, 0 ), 1, true ) ); 477 backImage.setLayout( null ); 478 479 version.setFont( JSystemFonts.SPLASH_WINDOW_FONT ); 480 nStringWidth = version.getFontMetrics( version.getFont() ).stringWidth( version.getText() ); 481 version.setBounds( SPLASH_WIDTH - nStringWidth - 5, SPLASH_HEIGHT - ( nStringHeight * 3 ) - 3, nStringWidth, nStringHeight ); 482 version.setForeground( java.awt.Color.black ); 483 484 copyLeft.setFont( JSystemFonts.SPLASH_WINDOW_FONT ); 485 nStringWidth = copyLeft.getFontMetrics( copyLeft.getFont() ).stringWidth( copyLeft.getText() ); 486 copyLeft.setBounds( SPLASH_WIDTH - nStringWidth - 5, SPLASH_HEIGHT - ( nStringHeight * 2 ) - 3, nStringWidth, nStringHeight ); 487 copyLeft.setForeground( java.awt.Color.black ); 488 489 loadingImage.setBounds( copyLeft.getLocation().x - JResources.ICON_WIDTH_16 - 5, SPLASH_HEIGHT - JResources.ICON_HEIGHT_16 - nStringHeight - 2, JResources.ICON_WIDTH_16, JResources.ICON_HEIGHT_16 ); 490 491 nStringWidth = 100; 492 nStringHeight = 8; 493 494 progressBar.setMinimum( 0 ); 495 progressBar.setMaximum( JSharedObjects.getProfileManager().getPluginCount( JSharedObjects.getProfileManager().getDefaultProfile() ) + 1 ); 496 progressBar.setValue( 0 ); 497 progressBar.setBounds( SPLASH_WIDTH - nStringWidth - 5, SPLASH_HEIGHT - nStringHeight - 3, nStringWidth, nStringHeight ); 498 progressBar.setBorder( new javax.swing.border.LineBorder ( new java.awt.Color ( 0, 0, 0 ), 1, true ) ); 499 500 nStringWidth = infoLabel.getFontMetrics( infoLabel.getFont() ).stringWidth( infoLabel.getText() ); 501 nStringHeight = 10; 502 infoLabel.setFont( JSystemFonts.SPLASH_WINDOW_FONT ); 503 infoLabel.setBounds( SPLASH_WIDTH - nStringWidth - progressBar.getSize().width - 10, SPLASH_HEIGHT - nStringHeight - 3, nStringWidth, nStringHeight ); 504 infoLabel.setForeground( java.awt.Color.black ); 505 506 splashWindow = new javax.swing.JWindow (); 507 contentPane = ( javax.swing.JPanel ) splashWindow.getContentPane(); 508 509 splashWindow.setBounds( nPosX, nPosY, SPLASH_WIDTH, SPLASH_HEIGHT ); 510 contentPane.setLayout( null ); 511 contentPane.setBorder( new javax.swing.border.LineBorder ( new java.awt.Color ( 0, 0, 0 ), 1, true ) ); 512 contentPane.add( backImage ); 513 backImage.add( version ); 515 backImage.add( copyLeft ); 516 backImage.add( progressBar ); 517 backImage.add( infoLabel ); 518 backImage.add( loadingImage ); 519 520 splashWindow.setAlwaysOnTop( true ); 521 splashWindow.setVisible( true ); 522 } 523 524 530 private void setNextInitStep( java.lang.String strNextStepLabel, boolean bIncreaseValue ) { 531 532 int nStringWidth = 0; 533 int nStringHeight = 0; 534 javax.swing.JPanel contentPane = ( javax.swing.JPanel ) splashWindow.getContentPane(); 535 javax.swing.JLabel backImage = ( javax.swing.JLabel ) contentPane.getComponent( 0 ); 536 javax.swing.JLabel infoLabel = ( javax.swing.JLabel ) backImage.getComponent( 3 ); 537 javax.swing.JProgressBar progressBar = ( javax.swing.JProgressBar ) backImage.getComponent( 2 ); 538 539 infoLabel.setText( strNextStepLabel ); 540 nStringWidth = infoLabel.getFontMetrics( infoLabel.getFont() ).stringWidth( infoLabel.getText() ); 541 nStringHeight = 10; 542 infoLabel.setBounds( SPLASH_WIDTH - nStringWidth - progressBar.getSize().width - 10, SPLASH_HEIGHT - nStringHeight - 3, nStringWidth, nStringHeight ); 543 544 if( bIncreaseValue ) 545 progressBar.setValue( progressBar.getValue() + 1 ); 546 } 547 548 552 private void initComponents() { 553 554 contactList = new org.planetamessenger.mos.ui.JContactList(); 555 accountsTable = new org.planetamessenger.mos.ui.JAccountsTable(); 556 mainTabs = new javax.swing.JTabbedPane (); 557 contactListPane = new javax.swing.JScrollPane ( contactList ); 558 accountsPane = new javax.swing.JScrollPane ( accountsTable ); 559 statusBar = new org.planetamessenger.ui.JStatusBar(); 560 toolBarPanel = new javax.swing.JPanel ( new java.awt.BorderLayout () ); 561 562 contactListPane.setHorizontalScrollBar( null ); 564 565 getContentPane().setLayout( new java.awt.BorderLayout () ); 566 ( ( java.awt.BorderLayout ) getContentPane().getLayout() ).setVgap( 5 ); 567 568 setDefaultCloseOperation( javax.swing.WindowConstants.DISPOSE_ON_CLOSE ); 569 setIconImage( JSharedObjects.getResources().getIcon( JResources.APPLICATION_ICON ).getImage() ); 570 571 createAppMenu(); 572 updateToolBar(); 573 setName( "JMOSWindow" ); 574 575 setTitle( JSharedObjects.getLanguageManager().getStringEx( "PLANETAMESSENGER_TITLE" ) ); 576 JSharedObjects.getConsoleWindow().setTitle( JSharedObjects.getLanguageManager().getStringEx( "PLANETAMESSENGER_CONSOLE_TITLE" ) ); 577 578 addWindowListener( new java.awt.event.WindowAdapter () { 579 public void windowClosing( java.awt.event.WindowEvent evt ) { 580 581 if( trayMenu.isAvailable() ) 582 setVisible( false ); 583 else 584 exitForm(); 585 } 586 } ); 587 588 contactListEvt = new JContactListEvents(); 590 contactList.setFont( JSystemFonts.FONT ); 591 contactList.addMenuListener( contactListEvt ); 592 594 mainTabs.setPreferredSize( new java.awt.Dimension ( 169, 230 ) ); 596 mainTabs.setFont( JSystemFonts.FONT ); 597 mainTabs.addTab( "", contactListPane ); 598 mainTabs.addTab( "", accountsPane ); 599 updateMainTabs(); 600 mainTabs.setIconAt( 0, JSharedObjects.getResources().getIcon( JResources.CONTACTS_ICON ) ); 601 mainTabs.setIconAt( 1, JSharedObjects.getResources().getIcon( JResources.ACCOUNTS_ICON ) ); 602 getContentPane().add( mainTabs, java.awt.BorderLayout.CENTER ); 603 604 statusBar.setFont( JSystemFonts.FONT ); 606 statusBar.setPreferredSize( new java.awt.Dimension ( 169, 20 ) ); 607 608 toolBarPanel.add( statusBar, java.awt.BorderLayout.SOUTH ); 609 getContentPane().add( toolBarPanel, java.awt.BorderLayout.SOUTH ); 610 setResizable( true ); 611 } 613 614 617 private void startPluginEngine() { 618 619 if( !JSharedObjects.init( this ) ) { 621 JOptionPane.showMessageDialog( this, JSharedObjects.getLanguageManager().getStringEx( "FATAL_ERROR_PLUGIN_ENGINE" ), JSharedObjects.getLanguageManager().getStringEx( "ERROR" ), JOptionPane.ERROR_MESSAGE ); 622 exitForm(); 623 } 624 625 JSharedObjects.getPluginEngine().addPluginEngineListener( this ); 626 JSharedObjects.getPluginEngine().addKernelAPIListener( JSharedObjects.getKernelManager() ); 627 } 628 629 633 private void startPlugins() { 634 635 int nProfileId = JSharedObjects.getProfileManager().getDefaultProfile(); 637 638 639 if( nProfileId == -1 ) { 640 JMOSProfileManagerDlg profileDlg = new JMOSProfileManagerDlg( this, true ); 641 642 splashWindow.setVisible( false ); 643 profileDlg.setVisible( true ); 644 nProfileId = JSharedObjects.getProfileManager().getDefaultProfile(); 645 646 if( nProfileId == -1 ) { 647 JOptionPane.showMessageDialog( this, JSharedObjects.getLanguageManager().getStringEx( "SELECT_PROFILE_WARNING" ), JSharedObjects.getLanguageManager().getStringEx( "ERROR" ), JOptionPane.ERROR_MESSAGE ); 648 exitForm(); 649 } 650 651 splashWindow.setVisible( true ); 652 } 653 654 JSharedObjects.getProxySettings().load( nProfileId ); 656 657 if( !JSharedObjects.getPluginEngine().loadAllPlugins( nProfileId, true ) ) { 659 JOptionPane.showMessageDialog( this, JSharedObjects.getLanguageManager().getStringEx( "UNABLE_TO_CONTINUE" ), JSharedObjects.getLanguageManager().getStringEx( "DATABASE_ERROR" ), JOptionPane.ERROR_MESSAGE ); 660 exitForm(); 661 } 662 663 JSharedObjects.getContactListManager().loadMessagesToContactList(); 665 } 666 667 670 private void destroy() { 671 672 if( JSharedObjects.getPluginEngine() != null ) { 673 JSharedObjects.getPluginEngine().removePluginEngineListener( this ); 674 JSharedObjects.destroy(); 675 contactList.destroy(); 676 } 677 } 678 679 684 private void manageProfileButtonActionPerformed( java.awt.event.ActionEvent evt ) { 685 686 JMOSProfileManagerDlg profileDlg = new JMOSProfileManagerDlg( this, true ); 687 688 profileDlg.setVisible( true ); 689 } 690 691 696 private void addInviteButtonActionPerformed( java.awt.event.ActionEvent evt ) { 697 698 JMOSAddInviteDlg addInviteDlg = new JMOSAddInviteDlg( this, true ); 699 700 addInviteDlg.setVisible( true ); 701 } 702 703 708 private void myMessengerButtonActionPerformed( java.awt.event.ActionEvent evt ) { 709 710 preferencesDlg.setVisible( true ); 711 } 712 713 717 private void exitForm() { 718 719 destroy(); 720 dispose(); 721 System.exit( 0 ); 722 } 723 724 727 private void about() { 728 729 javax.swing.JDialog aboutDlg = new javax.swing.JDialog ( this, true ); 730 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); 731 javax.swing.JPanel contentPane = ( javax.swing.JPanel ) splashWindow.getContentPane(); 732 javax.swing.JLabel backImage = ( javax.swing.JLabel ) contentPane.getComponent( 0 ); 733 javax.swing.JLabel versionLabel = ( javax.swing.JLabel ) backImage.getComponent( 0 ); 734 javax.swing.JLabel infoLabel = ( javax.swing.JLabel ) backImage.getComponent( 3 ); 735 javax.swing.JLabel loadingImage = ( javax.swing.JLabel ) backImage.getComponent( 4 ); 736 javax.swing.JProgressBar progressBar = ( javax.swing.JProgressBar ) backImage.getComponent( 2 ); 737 int nStringWidth = 0; 738 int nStringHeight = 10; 739 740 741 loadingImage.setVisible( false ); 742 progressBar.setVisible( false ); 743 versionLabel.setFont( JSystemFonts.SPLASH_WINDOW_FONT ); 744 versionLabel.setText( JSharedObjects.getLanguageManager().getStringEx( "PLANETAMESSENGER_SPLASH_INFO" ) ); 745 nStringWidth = versionLabel.getFontMetrics( versionLabel.getFont() ).stringWidth( versionLabel.getText() ); 746 versionLabel.setBounds( SPLASH_WIDTH - nStringWidth - 5, SPLASH_HEIGHT - ( nStringHeight * 3 ) - 3, nStringWidth, nStringHeight ); 747 748 infoLabel.setFont( JSystemFonts.SPLASH_WINDOW_FONT ); 749 infoLabel.setText( JSharedObjects.getLanguageManager().getStringEx( "EXTRA_INFO" ) ); 750 751 nStringWidth = infoLabel.getFontMetrics( infoLabel.getFont() ).stringWidth( infoLabel.getText() ); 752 infoLabel.setBounds( SPLASH_WIDTH - nStringWidth - 10, SPLASH_HEIGHT - nStringHeight - 3, nStringWidth, nStringHeight ); 753 754 aboutDlg.setTitle( JSharedObjects.getLanguageManager().getStringEx( "ABOUT_WINDOW_TITLE" ) ); 755 aboutDlg.setBounds( new java.awt.Rectangle ( SPLASH_WIDTH + aboutDlg.getOwner().getInsets().left + aboutDlg.getOwner().getInsets().right, SPLASH_HEIGHT + aboutDlg.getOwner().getInsets().top + aboutDlg.getOwner().getInsets().bottom ) ); 756 aboutDlg.setContentPane( contentPane ); 757 aboutDlg.setLocation( ( screenSize.width - aboutDlg.getSize().width ) / 2, ( screenSize.height - aboutDlg.getSize().height ) / 2 ); 758 aboutDlg.setResizable( false ); 759 aboutDlg.setVisible( true ); 760 aboutDlg.setAlwaysOnTop( true ); 761 } 762 763 769 public void iconLeftClicked( snoozesoft.systray4j.SysTrayMenuEvent sysTrayMenuEvent ) { 770 771 } 772 773 778 public void iconLeftDoubleClicked( snoozesoft.systray4j.SysTrayMenuEvent sysTrayMenuEvent ) { 779 780 if( isVisible() ) 781 setVisible( false ); 782 else 783 setVisible( true ); 784 } 785 786 791 public void menuItemSelected( snoozesoft.systray4j.SysTrayMenuEvent sysTrayMenuEvent ) { 792 793 if( sysTrayMenuEvent.getActionCommand().equals( "exit" ) ) 794 exitForm(); 795 else 796 if( sysTrayMenuEvent.getActionCommand().equals( "show/hide" ) ) 797 iconLeftDoubleClicked( null ); 798 else 799 about(); 800 } 801 802 808 public void onCreatePlugin( org.planetamessenger.plugin.JPlugin plugin ) { 809 810 setNextInitStep( JSharedObjects.getLanguageManager().getStringEx( "STARTING" ) + " " + plugin.getPluginProperties().getName(), true ); 811 onAddPlugin( plugin ); 812 } 813 814 819 public void onDestroyPlugin( org.planetamessenger.plugin.JPlugin plugin ) { 820 821 } 822 823 829 public void onAddPlugin( org.planetamessenger.plugin.JPlugin plugin ) { 830 831 if( JSharedObjects.getProfileManager().checkForPluginUser( plugin.getPluginProperties().getPluginId() ) ) { 832 accountsTable.addRow( plugin ); 833 834 if( !addInviteAction.isEnabled() ) { 835 addInviteAction.setEnabled( true ); 836 addUserItem.setEnabled( true ); 837 } 838 } 839 } 840 841 847 public void onRemovePlugin( org.planetamessenger.plugin.JPlugin plugin ) { 848 849 JSharedObjects.getContactListManager().removeAllUIItems( plugin ); 850 accountsTable.removeRow( plugin ); 851 852 if( !JSharedObjects.getProfileManager().hasPluginUserInProfile( JSharedObjects.getProfileManager().getProfileId() ) && addInviteAction.isEnabled() ) { 854 addInviteAction.setEnabled( false ); 855 addUserItem.setEnabled( false ); 856 } 857 } 858 859 866 public void onPluginStatusChanged( org.planetamessenger.plugin.JPlugin plugin, int nStatus ) { 867 868 accountsTable.changeStatus( plugin, nStatus ); 869 } 870 871 878 public void onPluginConnectionStatusChanged( org.planetamessenger.plugin.JPlugin plugin, int nStatus ) { 879 880 accountsTable.changeConnectionStatus( plugin, nStatus ); 881 } 882 883 893 public void onError( int nPluginId, String strMessage, int nErrorCode ) { 894 895 switch( nErrorCode ) { 896 case JPluginEngineListener.ERROR_INCOMPATIBLE_PLUGIN : 897 JOptionPane.showMessageDialog( this, JSharedObjects.getLanguageManager().getStringEx( "INCOMPATIBLE_PLUGIN" ) + " [" + strMessage +"]", 898 JSharedObjects.getLanguageManager().getStringEx( "ERROR" ), JOptionPane.ERROR_MESSAGE ); 899 break; 900 901 case JPluginEngineListener.ERROR_DISCONNECTED_PLUGIN : 902 JOptionPane.showMessageDialog( JSharedObjects.getPluginEngine().getMessageWindow( nPluginId ), 903 JSharedObjects.getLanguageManager().getStringEx( "CHECK_YOUR_CONNECTION_ERROR_WARNING" ), 904 JSharedObjects.getLanguageManager().getStringEx( "ERROR" ), javax.swing.JOptionPane.ERROR_MESSAGE ); 905 break; 906 } 907 } 908 909 914 public void onCapabilityNotFound( org.planetamessenger.plugin.JPlugin plugin, int nCapabilityCode ) { 915 916 switch( nCapabilityCode ) { 917 918 case JPluginEngineListener.CAPABILITY_OFFLINE_MESSAGES : 919 JOptionPane.showMessageDialog( JSharedObjects.getPluginEngine().getMessageWindow( plugin.getPluginProperties().getPluginId() ), "[" + plugin.getPluginProperties().getName() +"] - " + JSharedObjects.getLanguageManager().getStringEx( "THIS_PLUGIN_CANNOT_SEND_OFFLINE_MESSAGES" ), JSharedObjects.getLanguageManager().getStringEx( "WARNING" ), JOptionPane.WARNING_MESSAGE ); 920 break; 921 922 case JPluginEngineListener.CAPABILITY_REMOVE_CONTACTS_WHEN_OFFLINE : 923 JOptionPane.showMessageDialog( JSharedObjects.getPluginEngine().getMessageWindow( plugin.getPluginProperties().getPluginId() ), "[" + plugin.getPluginProperties().getName() +"] - " + JSharedObjects.getLanguageManager().getStringEx( "THIS_PLUGIN_CANNOT_REMOVE_CONTACTS_WHEN_DISCONNECTED" ), JSharedObjects.getLanguageManager().getStringEx( "WARNING" ), JOptionPane.WARNING_MESSAGE ); 924 break; 925 } 926 } 927 } 928 929 | Popular Tags |