diff options
author | Damian Minkov <damencho@jitsi.org> | 2013-12-05 08:46:57 +0200 |
---|---|---|
committer | Damian Minkov <damencho@jitsi.org> | 2013-12-05 17:19:09 +0200 |
commit | 393aca093fae77939e8c8ab6ee288eaf8f7a4df0 (patch) | |
tree | fb8da1b7cdd8dadefc8df7c5678668e1df2491c1 /src/net/java/sip/communicator | |
parent | fcae9527e6d05c6ee91c5f0127e6aa386b42ac14 (diff) | |
download | jitsi-393aca093fae77939e8c8ab6ee288eaf8f7a4df0.zip jitsi-393aca093fae77939e8c8ab6ee288eaf8f7a4df0.tar.gz jitsi-393aca093fae77939e8c8ab6ee288eaf8f7a4df0.tar.bz2 |
Fixes updating status message menu instances.
Diffstat (limited to 'src/net/java/sip/communicator')
3 files changed, 19 insertions, 12 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/presence/PresenceStatusMenu.java b/src/net/java/sip/communicator/impl/gui/main/presence/PresenceStatusMenu.java index dc64b0b..b10e7f7 100644 --- a/src/net/java/sip/communicator/impl/gui/main/presence/PresenceStatusMenu.java +++ b/src/net/java/sip/communicator/impl/gui/main/presence/PresenceStatusMenu.java @@ -295,7 +295,10 @@ public class PresenceStatusMenu titleArea = null; if(statusMessageMenu != null) + { + statusMessageMenu.removePropertyChangeListener(this); statusMessageMenu.dispose(); + } statusMessageMenu = null; } } diff --git a/src/net/java/sip/communicator/plugin/desktoputil/presence/NewStatusMessageDialog.java b/src/net/java/sip/communicator/plugin/desktoputil/presence/NewStatusMessageDialog.java index 132f8de..b2e2534 100644 --- a/src/net/java/sip/communicator/plugin/desktoputil/presence/NewStatusMessageDialog.java +++ b/src/net/java/sip/communicator/plugin/desktoputil/presence/NewStatusMessageDialog.java @@ -45,9 +45,9 @@ public class NewStatusMessageDialog DesktopUtilActivator.getResources().getI18NString("service.gui.CANCEL")); /** - * The presence operation set through which we change the status message. + * The current status message. */ - private final OperationSetPresence presenceOpSet; + private final String currentStatusMessage; /** * Message panel. @@ -67,15 +67,14 @@ public class NewStatusMessageDialog /** * Creates an instance of <tt>NewStatusMessageDialog</tt>. * - * @param protocolProvider the <tt>ProtocolProviderService</tt>. + * @param currentStatusMessage the current status message. */ - public NewStatusMessageDialog (ProtocolProviderService protocolProvider, + public NewStatusMessageDialog (String currentStatusMessage, StatusMessageMenu parentMenu) { super(false); - presenceOpSet - = protocolProvider.getOperationSet(OperationSetPresence.class); + this.currentStatusMessage = currentStatusMessage; this.parentMenu = parentMenu; this.init(); @@ -130,7 +129,7 @@ public class NewStatusMessageDialog dataPanel.add(messageLabel, BorderLayout.WEST); - messageTextField.setText(presenceOpSet.getCurrentStatusMessage()); + messageTextField.setText(currentStatusMessage); dataPanel.add(messageTextField, BorderLayout.CENTER); infoTitleLabel.setHorizontalAlignment(JLabel.CENTER); diff --git a/src/net/java/sip/communicator/plugin/desktoputil/presence/StatusMessageMenu.java b/src/net/java/sip/communicator/plugin/desktoputil/presence/StatusMessageMenu.java index 99d19ab..d746039 100644 --- a/src/net/java/sip/communicator/plugin/desktoputil/presence/StatusMessageMenu.java +++ b/src/net/java/sip/communicator/plugin/desktoputil/presence/StatusMessageMenu.java @@ -99,8 +99,9 @@ public class StatusMessageMenu /** * All property change listeners registered so far. + * Static so we can communicate between status message menus. */ - private java.util.List<PropertyChangeListener> + private static java.util.List<PropertyChangeListener> propertyChangeListeners = new ArrayList<PropertyChangeListener>(); /** @@ -326,8 +327,12 @@ public class StatusMessageMenu if (menuItem.equals(newMessageItem)) { - NewStatusMessageDialog dialog - = new NewStatusMessageDialog(protocolProvider, this); + OperationSetPresence presenceOpSet + = protocolProvider.getOperationSet(OperationSetPresence.class); + + NewStatusMessageDialog dialog = new NewStatusMessageDialog( + presenceOpSet == null ? + "" : presenceOpSet.getCurrentStatusMessage(), this); dialog.setLocation( Toolkit.getDefaultToolkit().getScreenSize().width/2 @@ -931,9 +936,9 @@ public class StatusMessageMenu */ public void dispose() { + removePropertyChangeListener(this); + protocolProvider = null; - propertyChangeListeners.clear(); - propertyChangeListeners = null; noMessageItem = null; newMessageItem = null; |