diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java
index 744d97861..ae0f2af4f 100644
--- a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java
+++ b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java
@@ -44,7 +44,7 @@ public class ConferenceChatManager
AdHocChatRoomInvitationRejectionListener,
LocalUserChatRoomPresenceListener,
LocalUserAdHocChatRoomPresenceListener,
- ServiceListener
+ ServiceListener, ChatRoomLocalUserRoleListener
{
/**
* The object used for logging.
@@ -277,10 +277,10 @@ else if(o instanceof ChatRoomMessageReceivedEvent)
message.getMessageUID(),
null);
- chatWindowManager.openChat(chatPanel, false);
+ if(evt.isImportantMessage())
+ chatWindowManager.openChat(chatPanel, true);
}
-
-
+
/**
* Implements the ChatRoomMessageListener.messageDeliveryFailed
* method.
@@ -489,8 +489,8 @@ public void run()
if(chatPanel.isShown())
((ConferenceChatSession) chatPanel.getChatSession())
.loadChatRoom(sourceChatRoom);
- else
- chatWindowManager.openChat(chatPanel, true);
+// else
+// chatWindowManager.openChat(chatPanel, true);
}
if (sourceChatRoom.isSystem())
@@ -504,6 +504,7 @@ public void run()
}
sourceChatRoom.addMessageListener(this);
+ sourceChatRoom.addLocalUserRoleListener(this);
}
else if (LocalUserChatRoomPresenceChangeEvent
.LOCAL_USER_JOIN_FAILED.equals(eventType))
@@ -536,6 +537,7 @@ else if (LocalUserChatRoomPresenceChangeEvent
}
sourceChatRoom.removeMessageListener(this);
+ sourceChatRoom.removelocalUserRoleListener(this);
}
}
@@ -1259,5 +1261,19 @@ public void messageReceived(AdHocChatRoomMessageReceivedEvent evt)
}
public void invitationRejected(AdHocChatRoomInvitationRejectedEvent evt) {}
+
+ @Override
+ public void localUserRoleChanged(ChatRoomLocalUserRoleChangeEvent evt)
+ {
+ ChatRoom sourceChatRoom = evt.getSourceChatRoom();
+ ChatRoomWrapper chatRoomWrapper
+ = GuiActivator.getMUCService().findChatRoomWrapperFromChatRoom(
+ sourceChatRoom);
+ ChatWindowManager chatWindowManager
+ = GuiActivator.getUIService().getChatWindowManager();
+ ChatPanel chatPanel
+ = chatWindowManager.getMultiChat(chatRoomWrapper, true);
+ chatWindowManager.openChat(chatPanel, true);
+ }
}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java
index 1152c9ede..bdef78ec6 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/ChatRoomJabberImpl.java
@@ -2008,6 +2008,13 @@ public void processPacket(Packet packet)
if(delay != null)
msgReceivedEvt.setHistoryMessage(true);
+ if(messageReceivedEventType
+ == ChatRoomMessageReceivedEvent.CONVERSATION_MESSAGE_RECEIVED
+ && newMessage.getContent().contains(getUserNickname() + ":"))
+ {
+ msgReceivedEvt.setImportantMessage(true);
+ }
+
fireMessageEvent(msgReceivedEvt);
}
}
diff --git a/src/net/java/sip/communicator/service/protocol/event/ChatRoomMessageReceivedEvent.java b/src/net/java/sip/communicator/service/protocol/event/ChatRoomMessageReceivedEvent.java
index 701e22d39..c448aa280 100644
--- a/src/net/java/sip/communicator/service/protocol/event/ChatRoomMessageReceivedEvent.java
+++ b/src/net/java/sip/communicator/service/protocol/event/ChatRoomMessageReceivedEvent.java
@@ -72,6 +72,11 @@ public class ChatRoomMessageReceivedEvent
* Some services can fill our room with message history.
*/
private boolean historyMessage = false;
+
+ /**
+ * Indicates whether the message is important or not.
+ */
+ private boolean isImportantMessage = false;
/**
* Creates a MessageReceivedEvent representing reception of the
@@ -167,4 +172,22 @@ public void setHistoryMessage(boolean historyMessage)
{
this.historyMessage = historyMessage;
}
+
+ /**
+ * Sets the the important message flag of the event.
+ * @param isImportant the value to be set.
+ */
+ public void setImportantMessage(boolean isImportant)
+ {
+ isImportantMessage = isImportant;
+ }
+
+ /**
+ * Returns true if message is important and false if not.
+ * @return true if message is important and false if not.
+ */
+ public boolean isImportantMessage()
+ {
+ return isImportantMessage;
+ }
}