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

cusax-fix
Yana Stamcheva 20 years ago
parent 1baaf01f19
commit 4119478728

@ -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 <tt>ProtocolProviderService</tt>
*/
private void handleProviderRemoved(
ProtocolProviderService protocolProvider) {
ProtocolProviderService protocolProvider) {
this.mainFrame.removeAccount(protocolProvider);
}
public boolean isManuallyDisconnected()
{
return manuallyDisconnected;
}
public void setManuallyDisconnected(boolean manuallyDisconnected)
{
this.manuallyDisconnected = manuallyDisconnected;
}
}

Loading…
Cancel
Save