diff options
13 files changed, 73 insertions, 23 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/account/AccountList.java b/src/net/java/sip/communicator/impl/gui/main/account/AccountList.java index c958a56..3ba0b47 100644 --- a/src/net/java/sip/communicator/impl/gui/main/account/AccountList.java +++ b/src/net/java/sip/communicator/impl/gui/main/account/AccountList.java @@ -237,9 +237,26 @@ public class AccountList * Dispatches the mouse event to the contained renderer check box. * @param e the <tt>MouseEvent</tt> that notified us */ - public void mousePressed(MouseEvent e) + public void mousePressed(final MouseEvent e) { - dispatchEventToCheckBox(e); + // run in separate thread, if account is currently blocked for + // registering, authenticating or something else make sure + // we don't block UI + new Thread() + { + public void run() + { + dispatchEventToCheckBox(e); + + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + AccountList.this.repaint(); + } + }); + } + }.start(); } public void mouseReleased(MouseEvent e) {} diff --git a/src/net/java/sip/communicator/impl/protocol/dict/ProtocolProviderFactoryDictImpl.java b/src/net/java/sip/communicator/impl/protocol/dict/ProtocolProviderFactoryDictImpl.java index e6df4b0..5d5bc18 100644 --- a/src/net/java/sip/communicator/impl/protocol/dict/ProtocolProviderFactoryDictImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/dict/ProtocolProviderFactoryDictImpl.java @@ -77,7 +77,7 @@ public class ProtocolProviderFactoryDictImpl //an osgi event, the osgi event triggers (through the UI) a call to the //ProtocolProviderService.register() method and it needs to acces //the configuration service and check for a stored password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); accountID = loadAccount(accountProperties); diff --git a/src/net/java/sip/communicator/impl/protocol/gibberish/ProtocolProviderFactoryGibberishImpl.java b/src/net/java/sip/communicator/impl/protocol/gibberish/ProtocolProviderFactoryGibberishImpl.java index 33e2a43..8ae484d 100644 --- a/src/net/java/sip/communicator/impl/protocol/gibberish/ProtocolProviderFactoryGibberishImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/gibberish/ProtocolProviderFactoryGibberishImpl.java @@ -67,7 +67,7 @@ public class ProtocolProviderFactoryGibberishImpl //an osgi event, the osgi event triggers (through the UI) a call to the //ProtocolProviderService.register() method and it needs to acces //the configuration service and check for a stored password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); accountID = loadAccount(accountProperties); diff --git a/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderFactoryIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderFactoryIcqImpl.java index 746a09c..a3f4ac5 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderFactoryIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderFactoryIcqImpl.java @@ -75,10 +75,10 @@ public class ProtocolProviderFactoryIcqImpl "An account for id " + userIDStr + " was already installed!"); //first store the account and only then load it as the load generates - //an osgi event, the osgi event triggers (trhgough the UI) a call to - //the register() method and it needs to acces the configuration service + //an osgi event, the osgi event triggers (through the UI) a call to + //the register() method and it needs to access the configuration service //and check for a password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); accountID = loadAccount(accountProperties); diff --git a/src/net/java/sip/communicator/impl/protocol/irc/ProtocolProviderFactoryIrcImpl.java b/src/net/java/sip/communicator/impl/protocol/irc/ProtocolProviderFactoryIrcImpl.java index b13caf8..b565e91 100644 --- a/src/net/java/sip/communicator/impl/protocol/irc/ProtocolProviderFactoryIrcImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/irc/ProtocolProviderFactoryIrcImpl.java @@ -68,7 +68,7 @@ public class ProtocolProviderFactoryIrcImpl //an OSGI event, the OSGI event triggers (through the UI) a call to the //ProtocolProviderService.register() method and it needs to access //the configuration service and check for a stored password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); accountID = loadAccount(accountProperties); diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderFactoryJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderFactoryJabberImpl.java index c397a57..adf88e0 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderFactoryJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/ProtocolProviderFactoryJabberImpl.java @@ -85,10 +85,10 @@ public class ProtocolProviderFactoryJabberImpl "An account for id " + userIDStr + " was already installed!"); //first store the account and only then load it as the load generates - //an osgi event, the osgi event triggers (trhgough the UI) a call to - //the register() method and it needs to acces the configuration service + //an osgi event, the osgi event triggers (through the UI) a call to + //the register() method and it needs to access the configuration service //and check for a password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); accountID = loadAccount(accountProperties); diff --git a/src/net/java/sip/communicator/impl/protocol/msn/ProtocolProviderFactoryMsnImpl.java b/src/net/java/sip/communicator/impl/protocol/msn/ProtocolProviderFactoryMsnImpl.java index 049d09a..1ec1a26 100644 --- a/src/net/java/sip/communicator/impl/protocol/msn/ProtocolProviderFactoryMsnImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/msn/ProtocolProviderFactoryMsnImpl.java @@ -67,7 +67,7 @@ public class ProtocolProviderFactoryMsnImpl //an osgi event, the osgi event triggers (trhgough the UI) a call to //the register() method and it needs to acces the configuration service //and check for a password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); accountID = loadAccount(accountProperties); @@ -130,8 +130,8 @@ public class ProtocolProviderFactoryMsnImpl accountID.setAccountProperties(accountProperties); // First store the account and only then load it as the load generates - // an osgi event, the osgi event triggers (trhgough the UI) a call to - // the register() method and it needs to acces the configuration service + // an osgi event, the osgi event triggers (through the UI) a call to + // the register() method and it needs to access the configuration service // and check for a password. this.storeAccount(accountID); diff --git a/src/net/java/sip/communicator/impl/protocol/rss/ProtocolProviderFactoryRssImpl.java b/src/net/java/sip/communicator/impl/protocol/rss/ProtocolProviderFactoryRssImpl.java index eb2da1f..45e52d4 100644 --- a/src/net/java/sip/communicator/impl/protocol/rss/ProtocolProviderFactoryRssImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/rss/ProtocolProviderFactoryRssImpl.java @@ -86,9 +86,9 @@ public class ProtocolProviderFactoryRssImpl //first store the account and only then load it as the load generates //an osgi event, the osgi event triggers (through the UI) a call to the - //ProtocolProviderService.register() method and it needs to acces + //ProtocolProviderService.register() method and it needs to access //the configuration service and check for a stored password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); accountID = loadAccount(accountProperties); diff --git a/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderFactorySipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderFactorySipImpl.java index 43f6656..300a829 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderFactorySipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderFactorySipImpl.java @@ -122,7 +122,7 @@ public class ProtocolProviderFactorySipImpl //an osgi event, the osgi event triggers (through the UI) a call to //the register() method and it needs to access the configuration service //and check for a password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); try { diff --git a/src/net/java/sip/communicator/impl/protocol/ssh/ProtocolProviderFactorySSHImpl.java b/src/net/java/sip/communicator/impl/protocol/ssh/ProtocolProviderFactorySSHImpl.java index 85b08dd..48239ff 100644 --- a/src/net/java/sip/communicator/impl/protocol/ssh/ProtocolProviderFactorySSHImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/ssh/ProtocolProviderFactorySSHImpl.java @@ -76,7 +76,7 @@ public class ProtocolProviderFactorySSHImpl //an osgi event, the osgi event triggers (through the UI) a call to the //ProtocolProviderService.register() method and it needs to acces //the configuration service and check for a stored password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); accountID = loadAccount(accountProperties); diff --git a/src/net/java/sip/communicator/impl/protocol/yahoo/ProtocolProviderFactoryYahooImpl.java b/src/net/java/sip/communicator/impl/protocol/yahoo/ProtocolProviderFactoryYahooImpl.java index 7e57be6..12f901d 100644 --- a/src/net/java/sip/communicator/impl/protocol/yahoo/ProtocolProviderFactoryYahooImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/yahoo/ProtocolProviderFactoryYahooImpl.java @@ -64,10 +64,10 @@ public class ProtocolProviderFactoryYahooImpl "An account for id " + userIDStr + " was already installed!"); //first store the account and only then load it as the load generates - //an osgi event, the osgi event triggers (trhgough the UI) a call to - //the register() method and it needs to acces the configuration service + //an osgi event, the osgi event triggers (through the UI) a call to + //the register() method and it needs to access the configuration service //and check for a password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); accountID = loadAccount(accountProperties); diff --git a/src/net/java/sip/communicator/impl/protocol/zeroconf/ProtocolProviderFactoryZeroconfImpl.java b/src/net/java/sip/communicator/impl/protocol/zeroconf/ProtocolProviderFactoryZeroconfImpl.java index 80b4c05..565cc3a 100644 --- a/src/net/java/sip/communicator/impl/protocol/zeroconf/ProtocolProviderFactoryZeroconfImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/zeroconf/ProtocolProviderFactoryZeroconfImpl.java @@ -72,9 +72,9 @@ public class ProtocolProviderFactoryZeroconfImpl //first store the account and only then load it as the load generates //an osgi event, the osgi event triggers (through the UI) a call to the - //ProtocolProviderService.register() method and it needs to acces + //ProtocolProviderService.register() method and it needs to access //the configuration service and check for a stored password. - this.storeAccount(accountID); + this.storeAccount(accountID, false); accountID = loadAccount(accountProperties); diff --git a/src/net/java/sip/communicator/service/protocol/ProtocolProviderFactory.java b/src/net/java/sip/communicator/service/protocol/ProtocolProviderFactory.java index 6402a3f..7ddaf45 100644 --- a/src/net/java/sip/communicator/service/protocol/ProtocolProviderFactory.java +++ b/src/net/java/sip/communicator/service/protocol/ProtocolProviderFactory.java @@ -535,6 +535,39 @@ public abstract class ProtocolProviderFactory */ protected void storeAccount(AccountID accountID) { + this.storeAccount(accountID, true); + } + + /** + * The method stores the specified account in the configuration service + * under the package name of the source factory. The restore and remove + * account methods are to be used to obtain access to and control the stored + * accounts. + * <p> + * In order to store all account properties, the method would create an + * entry in the configuration service corresponding (beginning with) the + * <tt>sourceFactory</tt>'s package name and add to it a unique identifier + * (e.g. the current miliseconds.) + * </p> + * + * @param accountID the AccountID corresponding to the account that we would + * like to store. + * @param isModification if <tt>false</tt> there must be no such already + * loaded account, it <tt>true</tt> ist modification of an existing account. + * Usually we use this method with <tt>false</tt> in method installAccount + * and with <tt>true</tt> or the overridden method in method + * modifyAccount. + */ + protected void storeAccount(AccountID accountID, boolean isModification) + { + if(!isModification + && getAccountManager().getStoredAccounts().contains(accountID)) + { + throw new IllegalStateException( + "An account for id " + accountID.getUserID() + + " was already loaded!"); + } + try { getAccountManager().storeAccount(this, accountID); |