From 41194787285ae1b65dfdeca33e13bd830bf34038 Mon Sep 17 00:00:00 2001 From: Yana Stamcheva Date: Wed, 20 Sep 2006 09:22:19 +0000 Subject: [PATCH] add listeners when a ProtocolProviderService was registered in osgi; differentiate the events when user was disconnected due to a network error and when manually disconnecting; unique updateStatus function which is invoked when RegistrationStateChanged event is received --- .../impl/gui/main/login/LoginManager.java | 129 +++++++++--------- 1 file changed, 68 insertions(+), 61 deletions(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/login/LoginManager.java b/src/net/java/sip/communicator/impl/gui/main/login/LoginManager.java index 99da621b6..28fb38aae 100644 --- a/src/net/java/sip/communicator/impl/gui/main/login/LoginManager.java +++ b/src/net/java/sip/communicator/impl/gui/main/login/LoginManager.java @@ -18,6 +18,7 @@ import net.java.sip.communicator.impl.gui.i18n.*; import net.java.sip.communicator.impl.gui.main.*; import net.java.sip.communicator.impl.gui.main.account.*; +import net.java.sip.communicator.impl.gui.main.authorization.*; import net.java.sip.communicator.impl.gui.utils.Constants; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.event.*; @@ -47,6 +48,8 @@ public class LoginManager private MainFrame mainFrame; + private boolean manuallyDisconnected = false; + public LoginManager(MainFrame mainFrame) { this.mainFrame = mainFrame; @@ -93,11 +96,9 @@ public ProtocolProviderService installAccount( * @param protocolProvider the ProtocolProviderService to register. */ public void login(ProtocolProviderService protocolProvider) { - + this.mainFrame.activateAccount(protocolProvider); - protocolProvider.addRegistrationStateChangeListener(this); - SecurityAuthorityImpl secAuth = new SecurityAuthorityImpl(mainFrame, protocolProvider); @@ -147,8 +148,11 @@ public void runLogin(MainFrame parent) { protocolProvider = (ProtocolProviderService) GuiActivator.bundleContext .getService(serRef); - - this.mainFrame.addAccount(protocolProvider); + + protocolProvider.addRegistrationStateChangeListener(this); + + this.mainFrame.addProtocolProvider(protocolProvider); + this.login(protocolProvider); } } @@ -196,21 +200,20 @@ private void showAccountRegistrationWizard() { */ public void registrationStateChanged(RegistrationStateChangeEvent evt) { ProtocolProviderService protocolProvider = evt.getProvider(); - + if (evt.getNewState().equals(RegistrationState.REGISTERED)) { - - this.mainFrame.addProtocolProvider(protocolProvider); - + + this.mainFrame.getStatusPanel().updateStatus(evt.getProvider()); + + mainFrame.getProtocolPresence(protocolProvider) + .setAuthorizationHandler( + new AuthorizationHandlerImpl()); + } else if (evt.getNewState().equals( RegistrationState.AUTHENTICATION_FAILED)) { - StatusPanel statusPanel = this.mainFrame.getStatusPanel(); - - statusPanel.stopConnecting(protocolProvider); - - statusPanel.setSelectedStatus(protocolProvider, - Constants.OFFLINE_STATUS); - + this.mainFrame.getStatusPanel().updateStatus(evt.getProvider()); + if (evt.getReasonCode() == RegistrationStateChangeEvent .REASON_RECONNECTION_RATE_LIMIT_EXCEEDED) { SIPCommMsgTextArea msgText @@ -246,13 +249,8 @@ else if (evt.getReasonCode() == RegistrationStateChangeEvent else if (evt.getNewState() .equals(RegistrationState.CONNECTION_FAILED)) { - this.mainFrame.getStatusPanel().stopConnecting( - evt.getProvider()); - - this.mainFrame.getStatusPanel().setSelectedStatus( - evt.getProvider(), - Constants.OFFLINE_STATUS); - + this.mainFrame.getStatusPanel().updateStatus(evt.getProvider()); + SIPCommMsgTextArea msgText = new SIPCommMsgTextArea( Messages.getString("connectionFailedMessage")); @@ -263,6 +261,8 @@ else if (evt.getNewState() logger.error(evt.getReason()); } else if (evt.getNewState().equals(RegistrationState.EXPIRED)) { + this.mainFrame.getStatusPanel().updateStatus(evt.getProvider()); + SIPCommMsgTextArea msgText = new SIPCommMsgTextArea(Messages.getString( "connectionExpiredMessage", protocolProvider @@ -276,42 +276,38 @@ else if (evt.getNewState().equals(RegistrationState.EXPIRED)) { } else if (evt.getNewState().equals(RegistrationState.UNREGISTERED)) { - if (evt.getReasonCode() == RegistrationStateChangeEvent - .REASON_MULTIPLE_LOGINS) { - SIPCommMsgTextArea msgText - = new SIPCommMsgTextArea(Messages.getString( - "multipleLogins", protocolProvider.getAccountID() - .getUserID())); - - JOptionPane.showMessageDialog(null, msgText, Messages - .getString("error"), JOptionPane.ERROR_MESSAGE); - } else if (evt.getReasonCode() == RegistrationStateChangeEvent - .REASON_CLIENT_LIMIT_REACHED_FOR_IP) { - SIPCommMsgTextArea msgText - = new SIPCommMsgTextArea(Messages - .getString("limitReachedForIp", protocolProvider - .getProtocolName())); - - JOptionPane.showMessageDialog(null, msgText, Messages - .getString("error"), JOptionPane.ERROR_MESSAGE); - } else { - SIPCommMsgTextArea msgText - = new SIPCommMsgTextArea(Messages.getString( - "unregisteredMessage", protocolProvider - .getProtocolName())); - - JOptionPane.showMessageDialog(null, msgText, Messages - .getString("error"), JOptionPane.ERROR_MESSAGE); + this.mainFrame.getStatusPanel().updateStatus(evt.getProvider()); + + if(!manuallyDisconnected) { + if (evt.getReasonCode() == RegistrationStateChangeEvent + .REASON_MULTIPLE_LOGINS) { + SIPCommMsgTextArea msgText + = new SIPCommMsgTextArea(Messages.getString( + "multipleLogins", protocolProvider.getAccountID() + .getUserID())); + + JOptionPane.showMessageDialog(null, msgText, Messages + .getString("error"), JOptionPane.ERROR_MESSAGE); + } else if (evt.getReasonCode() == RegistrationStateChangeEvent + .REASON_CLIENT_LIMIT_REACHED_FOR_IP) { + SIPCommMsgTextArea msgText + = new SIPCommMsgTextArea(Messages + .getString("limitReachedForIp", protocolProvider + .getProtocolName())); + + JOptionPane.showMessageDialog(null, msgText, Messages + .getString("error"), JOptionPane.ERROR_MESSAGE); + } else { + SIPCommMsgTextArea msgText + = new SIPCommMsgTextArea(Messages.getString( + "unregisteredMessage", protocolProvider + .getProtocolName())); + + JOptionPane.showMessageDialog(null, msgText, Messages + .getString("error"), JOptionPane.ERROR_MESSAGE); + } + logger.error(evt.getReason()); } - - logger.error(evt.getReason()); - - this.mainFrame.getStatusPanel().stopConnecting( - evt.getProvider()); - - this.mainFrame.getStatusPanel().setSelectedStatus( - evt.getProvider(), - Constants.OFFLINE_STATUS); } } @@ -341,7 +337,7 @@ public void setMainFrame(MainFrame mainFrame) { public void serviceChanged(ServiceEvent event) { Object service = GuiActivator.bundleContext .getService(event.getServiceReference()); - + // we don't care if the source service is not a protocol provider if (! (service instanceof ProtocolProviderService)) { return; @@ -365,7 +361,8 @@ else if (event.getType() == ServiceEvent.UNREGISTERING) */ private void handleProviderAdded( ProtocolProviderService protocolProvider) { - this.mainFrame.addAccount(protocolProvider); + protocolProvider.addRegistrationStateChangeListener(this); + this.mainFrame.addProtocolProvider(protocolProvider); this.login(protocolProvider); } @@ -374,7 +371,17 @@ private void handleProviderAdded( * @param protocolProvider the ProtocolProviderService */ private void handleProviderRemoved( - ProtocolProviderService protocolProvider) { + ProtocolProviderService protocolProvider) { this.mainFrame.removeAccount(protocolProvider); } + + public boolean isManuallyDisconnected() + { + return manuallyDisconnected; + } + + public void setManuallyDisconnected(boolean manuallyDisconnected) + { + this.manuallyDisconnected = manuallyDisconnected; + } }