aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator
diff options
context:
space:
mode:
authorDamian Minkov <damencho@jitsi.org>2013-12-05 08:46:57 +0200
committerDamian Minkov <damencho@jitsi.org>2013-12-05 17:19:09 +0200
commit393aca093fae77939e8c8ab6ee288eaf8f7a4df0 (patch)
treefb8da1b7cdd8dadefc8df7c5678668e1df2491c1 /src/net/java/sip/communicator
parentfcae9527e6d05c6ee91c5f0127e6aa386b42ac14 (diff)
downloadjitsi-393aca093fae77939e8c8ab6ee288eaf8f7a4df0.zip
jitsi-393aca093fae77939e8c8ab6ee288eaf8f7a4df0.tar.gz
jitsi-393aca093fae77939e8c8ab6ee288eaf8f7a4df0.tar.bz2
Fixes updating status message menu instances.
Diffstat (limited to 'src/net/java/sip/communicator')
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/presence/PresenceStatusMenu.java3
-rw-r--r--src/net/java/sip/communicator/plugin/desktoputil/presence/NewStatusMessageDialog.java13
-rw-r--r--src/net/java/sip/communicator/plugin/desktoputil/presence/StatusMessageMenu.java15
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;