From 393aca093fae77939e8c8ab6ee288eaf8f7a4df0 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Thu, 5 Dec 2013 08:46:57 +0200 Subject: Fixes updating status message menu instances. --- .../impl/gui/main/presence/PresenceStatusMenu.java | 3 +++ .../desktoputil/presence/NewStatusMessageDialog.java | 13 ++++++------- .../plugin/desktoputil/presence/StatusMessageMenu.java | 15 ++++++++++----- 3 files changed, 19 insertions(+), 12 deletions(-) (limited to 'src/net/java/sip/communicator') 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 NewStatusMessageDialog. * - * @param protocolProvider the ProtocolProviderService. + * @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 + private static java.util.List propertyChangeListeners = new ArrayList(); /** @@ -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; -- cgit v1.1