diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/ISharedDisplaySession.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/ISharedDisplaySession.java
index 3353f4bfb5..19cd3a281a 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/ISharedDisplaySession.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/ISharedDisplaySession.java
@@ -21,10 +21,10 @@ package com.raytheon.uf.viz.collaboration.comm.identity;
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
import com.raytheon.uf.viz.collaboration.comm.identity.user.SharedDisplayRole;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
- *
+ * Interface for sessions that have displays shared between clients
*
*
* - EventBus subscription events. Implementors may to post the following
@@ -53,6 +53,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 21, 2012 jkorman Initial creation
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -92,28 +93,28 @@ public interface ISharedDisplaySession extends IVenueSession {
*
* @return
*/
- public UserId getCurrentDataProvider();
+ public VenueParticipant getCurrentDataProvider();
/**
* Returns the current Session Leader for the session
*
* @return
*/
- public UserId getCurrentSessionLeader();
+ public VenueParticipant getCurrentSessionLeader();
/**
* Sets the current Data Provider for the session
*
* @param participant
*/
- public void setCurrentDataProvider(UserId participant);
+ public void setCurrentDataProvider(VenueParticipant participant);
/**
* Sets the current Session Leader for the session
*
* @param participant
*/
- public void setCurrentSessionLeader(UserId participant);
+ public void setCurrentSessionLeader(VenueParticipant participant);
/**
* Checks if the currently logged in user has the role on this session
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/IVenueSession.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/IVenueSession.java
index 18ece3b051..c5068096c9 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/IVenueSession.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/IVenueSession.java
@@ -26,9 +26,10 @@ import org.jivesoftware.smack.packet.Presence;
import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenue;
import com.raytheon.uf.viz.collaboration.comm.identity.invite.VenueInvite;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
- *
+ * Interface for multi user sessions
*
*
* - EventBus subscription events. Implementors are required to post the
@@ -50,7 +51,8 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
- * Mar 5, 2012 jkorman Initial creation
+ * Mar 5, 2012 jkorman Initial creation
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -80,9 +82,8 @@ public interface IVenueSession extends ISession {
*
* @param id
* The target user for this invitation.
- * @param subject
- * The intended subject of the venue conversation.
- * @return
+ * @param invite
+ * @throws CollaborationException
*/
public void sendInvitation(UserId id, VenueInvite invite)
throws CollaborationException;
@@ -92,9 +93,8 @@ public interface IVenueSession extends ISession {
*
* @param ids
* A list of target users for this invitation.
- * @param body
- * Any text that the user may wish to include.
- * @return
+ * @param invite
+ * @throws CollaborationException
*/
public void sendInvitation(List ids, VenueInvite invite)
throws CollaborationException;
@@ -106,4 +106,9 @@ public interface IVenueSession extends ISession {
*/
public void sendPresence(Presence presence) throws CollaborationException;
+ /**
+ *
+ * @return
+ */
+ public VenueParticipant getUserID();
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/event/IVenueParticipantEvent.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/event/IVenueParticipantEvent.java
index 05fc481c1f..6b42d72a5f 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/event/IVenueParticipantEvent.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/event/IVenueParticipantEvent.java
@@ -21,7 +21,7 @@ package com.raytheon.uf.viz.collaboration.comm.identity.event;
import org.jivesoftware.smack.packet.Presence;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
* Event fired when a venue participant has a change in status
@@ -34,6 +34,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* ------------ ---------- ----------- --------------------------
* Mar 20, 2012 jkorman Initial creation
* Dec 19, 2013 2563 bclement added description getter
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -51,7 +52,7 @@ public interface IVenueParticipantEvent {
/**
* @return user id of participant
*/
- public UserId getParticipant();
+ public VenueParticipant getParticipant();
/**
* @return presence of participant, may be null
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/info/IVenue.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/info/IVenue.java
index 918e69edfd..2dc36be1b7 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/info/IVenue.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/info/IVenue.java
@@ -23,7 +23,7 @@ import java.util.Collection;
import org.jivesoftware.smack.packet.Presence;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
* Provides information about a venue.
@@ -36,6 +36,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* ------------ ---------- ----------- --------------------------
* Mar 1, 2012 jkorman Initial creation
* Jan 28, 2014 2698 bclement removed getInfo, added methods to replace
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -47,7 +48,7 @@ public interface IVenue {
/**
* @return list of users in venue
*/
- public Collection getParticipants();
+ public Collection getParticipants();
/**
* Get the presence for a user in the session.
@@ -55,7 +56,7 @@ public interface IVenue {
* @param user
* @return
*/
- public Presence getPresence(UserId user);
+ public Presence getPresence(VenueParticipant user);
/**
* @return id of venue "name@service"
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/invite/ColorPopulator.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/invite/ColorPopulator.java
index 8d02c036c8..f9d8abaf01 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/invite/ColorPopulator.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/invite/ColorPopulator.java
@@ -28,7 +28,7 @@ import org.eclipse.swt.graphics.RGB;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
* Color information for a list of users
@@ -41,6 +41,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* ------------ ---------- ----------- --------------------------
* Apr 19, 2012 mnash Initial creation
* Dec 6, 2013 2561 bclement code cleanup
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -51,7 +52,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
@DynamicSerialize
public class ColorPopulator {
@DynamicSerializeElement
- private List users;
+ private List users;
@DynamicSerializeElement
private List red;
@@ -73,12 +74,12 @@ public class ColorPopulator {
* @param rgbs
* Map of user ids to color information
*/
- public ColorPopulator(Map rgbs) {
- users = new ArrayList();
+ public ColorPopulator(Map rgbs) {
+ users = new ArrayList();
red = new ArrayList();
green = new ArrayList();
blue = new ArrayList();
- for (UserId key : rgbs.keySet()) {
+ for (VenueParticipant key : rgbs.keySet()) {
users.add(key);
red.add(rgbs.get(key).red);
green.add(rgbs.get(key).green);
@@ -89,8 +90,8 @@ public class ColorPopulator {
/**
* @return Map of user ids to color information
*/
- public Map getColors() {
- Map colors = new HashMap();
+ public Map getColors() {
+ Map colors = new HashMap();
for (int i = 0; i < users.size(); i++) {
colors.put(users.get(i),
new RGB(red.get(i), green.get(i), blue.get(i)));
@@ -101,7 +102,7 @@ public class ColorPopulator {
/**
* @return the users
*/
- public List getUsers() {
+ public List getUsers() {
return users;
}
@@ -109,7 +110,7 @@ public class ColorPopulator {
* @param users
* the users to set
*/
- public void setUsers(List users) {
+ public void setUsers(List users) {
this.users = users;
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/invite/SharedDisplayVenueInvite.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/invite/SharedDisplayVenueInvite.java
index f0285fb9e6..d86f1ad1a8 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/invite/SharedDisplayVenueInvite.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/identity/invite/SharedDisplayVenueInvite.java
@@ -21,7 +21,7 @@ package com.raytheon.uf.viz.collaboration.comm.identity.invite;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
* Invitation to shared display venue
@@ -33,6 +33,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 19, 2012 mnash Initial creation
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -44,24 +45,24 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
public class SharedDisplayVenueInvite extends VenueInvite {
@DynamicSerializeElement
- private UserId sessionLeader;
+ private VenueParticipant sessionLeader;
@DynamicSerializeElement
- private UserId dataProvider;
+ private VenueParticipant dataProvider;
- public UserId getSessionLeader() {
+ public VenueParticipant getSessionLeader() {
return sessionLeader;
}
- public void setSessionLeader(UserId sessionLeader) {
+ public void setSessionLeader(VenueParticipant sessionLeader) {
this.sessionLeader = sessionLeader;
}
- public UserId getDataProvider() {
+ public VenueParticipant getDataProvider() {
return dataProvider;
}
- public void setDataProvider(UserId dataProvider) {
+ public void setDataProvider(VenueParticipant dataProvider) {
this.dataProvider = dataProvider;
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/event/UserNicknameChangedEvent.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/event/UserNicknameChangedEvent.java
index 61dbbc5198..0fa1ae6afe 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/event/UserNicknameChangedEvent.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/event/UserNicknameChangedEvent.java
@@ -19,7 +19,7 @@
**/
package com.raytheon.uf.viz.collaboration.comm.provider.event;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
* An event to put on a CollaborationConnection event bus when a users nickname
@@ -33,6 +33,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jul 25, 2012 bsteffen Initial creation
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -42,16 +43,16 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
public class UserNicknameChangedEvent {
- public final UserId user;
+ public final VenueParticipant user;
public final String nickname;
- public UserNicknameChangedEvent(UserId user, String nickname) {
+ public UserNicknameChangedEvent(VenueParticipant user, String nickname) {
this.user = user;
this.nickname = nickname;
}
- public UserId getUser() {
+ public VenueParticipant getUser() {
return user;
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/event/VenueParticipantEvent.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/event/VenueParticipantEvent.java
index 7b935c1dba..7b70c83c5c 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/event/VenueParticipantEvent.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/event/VenueParticipantEvent.java
@@ -23,7 +23,7 @@ import org.jivesoftware.smack.packet.Presence;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IVenueParticipantEvent;
import com.raytheon.uf.viz.collaboration.comm.identity.event.ParticipantEventType;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
* Event that is posted when a participant's status changes
@@ -36,6 +36,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* ------------ ---------- ----------- --------------------------
* Mar 20, 2012 jkorman Initial creation
* Dec 19, 2013 2563 bclement added description
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -47,19 +48,20 @@ public class VenueParticipantEvent implements IVenueParticipantEvent {
private final ParticipantEventType eventType;
- private final UserId participant;
+ private final VenueParticipant participant;
private Presence presence;
private String eventDescription;
- public VenueParticipantEvent(UserId participant,
+ public VenueParticipantEvent(VenueParticipant participant,
ParticipantEventType eventType) {
this.participant = participant;
this.eventType = eventType;
}
- public VenueParticipantEvent(UserId participant, Presence presence,
+ public VenueParticipantEvent(VenueParticipant participant,
+ Presence presence,
ParticipantEventType eventType) {
this.participant = participant;
this.eventType = eventType;
@@ -78,7 +80,7 @@ public class VenueParticipantEvent implements IVenueParticipantEvent {
* @see com.raytheon.uf.viz.collaboration.comm.identity.event.IVenueParticipantEvent#getParticipant()
*/
@Override
- public UserId getParticipant() {
+ public VenueParticipant getParticipant() {
return participant;
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/info/Venue.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/info/Venue.java
index 0e3c674241..03d000085e 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/info/Venue.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/info/Venue.java
@@ -19,12 +19,12 @@
**/
package com.raytheon.uf.viz.collaboration.comm.provider.info;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
-import java.util.Set;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.Presence;
@@ -35,7 +35,7 @@ import org.jivesoftware.smackx.muc.MultiUserChat;
import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenue;
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
* Provides information about a venue.
@@ -49,6 +49,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* Mar 1, 2012 jkorman Initial creation
* Dec 6, 2013 2561 bclement removed ECF
* Jan 28, 2014 2698 bclement removed getInfo, added methods to replace
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant, getSubject never returns null
*
*
*
@@ -66,8 +67,8 @@ public class Venue implements IVenue {
}
@Override
- public Collection getParticipants() {
- Set participants = new HashSet();
+ public Collection getParticipants() {
+ List participants = new ArrayList();
Iterator iter = muc.getOccupants();
while (iter.hasNext()) {
String id = iter.next();
@@ -77,8 +78,8 @@ public class Venue implements IVenue {
}
@Override
- public Presence getPresence(UserId user) {
- Presence presence = presenceMap.get(user.getNormalizedId());
+ public Presence getPresence(VenueParticipant user) {
+ Presence presence = presenceMap.get(user.getAlias());
if (presence == null) {
presence = new Presence(Type.unavailable);
presence.setMode(Mode.away);
@@ -86,8 +87,8 @@ public class Venue implements IVenue {
return presence;
}
- public void handlePresenceUpdated(UserId fromID, Presence presence) {
- presenceMap.put(fromID.getNormalizedId(), presence);
+ public void handlePresenceUpdated(VenueParticipant fromID, Presence presence) {
+ presenceMap.put(fromID.getAlias(), presence);
}
/*
@@ -129,7 +130,8 @@ public class Venue implements IVenue {
*/
@Override
public String getSubject() {
- return muc.getSubject();
+ String rval = muc.getSubject();
+ return rval != null ? rval : "";
}
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/CollaborationConnection.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/CollaborationConnection.java
index d911e4d9b3..c288457627 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/CollaborationConnection.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/CollaborationConnection.java
@@ -71,6 +71,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserSearch;
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
*
@@ -107,6 +108,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
* Jan 24, 2014 2701 bclement removed roster manager
* Jan 28, 2014 2698 bclement fixed compression default
* cleaned up createCollaborationVenue, removed getVenueInfo
+ * Jan 30, 2014 2698 bclement changed arguments to create sessions, moved room connection from SessionView
*
*
*
@@ -365,13 +367,14 @@ public class CollaborationConnection implements IEventPublisher {
}
public ISharedDisplaySession joinCollaborationVenue(
- IVenueInvitationEvent invitation) throws CollaborationException {
+ IVenueInvitationEvent invitation, String handle)
+ throws CollaborationException {
String venueName = invitation.getRoomId().getName();
String sessionId = invitation.getInvite().getSessionId();
SharedDisplaySession session = new SharedDisplaySession(eventBus, this,
sessionId);
- session.configureVenue(venueName);
-
+ session.configureVenue(venueName, handle);
+ session.connectToRoom();
if (invitation.getInvite() instanceof SharedDisplayVenueInvite) {
SharedDisplayVenueInvite invite = (SharedDisplayVenueInvite) invitation
.getInvite();
@@ -390,14 +393,16 @@ public class CollaborationConnection implements IEventPublisher {
* @return
* @throws CollaborationException
*/
- public ISharedDisplaySession createCollaborationVenue(String venueName,
- String subject) throws CollaborationException {
+ public ISharedDisplaySession createCollaborationVenue(CreateSessionData data)
+ throws CollaborationException {
SharedDisplaySession session = null;
session = new SharedDisplaySession(eventBus, this);
- session.createVenue(venueName, subject);
- session.setCurrentSessionLeader(user);
- session.setCurrentDataProvider(user);
+ session.createVenue(data);
+ VenueParticipant leader = session.getUserID();
+ leader.setAlias(session.getHandle());
+ session.setCurrentSessionLeader(leader);
+ session.setCurrentDataProvider(leader);
sessions.put(session.getSessionId(), session);
postEvent(session);
@@ -410,11 +415,12 @@ public class CollaborationConnection implements IEventPublisher {
* @return
* @throws CollaborationException
*/
- public IVenueSession joinTextOnlyVenue(String venueName)
+ public IVenueSession joinTextOnlyVenue(String venueName, String handle)
throws CollaborationException {
try {
VenueSession session = new VenueSession(eventBus, this);
- session.configureVenue(venueName);
+ session.configureVenue(venueName, handle);
+ session.connectToRoom();
sessions.put(session.getSessionId(), session);
postEvent(session);
return session;
@@ -447,10 +453,10 @@ public class CollaborationConnection implements IEventPublisher {
* @return
* @throws CollaborationException
*/
- public IVenueSession createTextOnlyVenue(String venueName, String subject)
+ public IVenueSession createTextOnlyVenue(CreateSessionData data)
throws CollaborationException {
VenueSession session = new VenueSession(eventBus, this);
- session.createVenue(venueName, subject);
+ session.createVenue(data);
sessions.put(session.getSessionId(), session);
postEvent(session);
return session;
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionData.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/CreateSessionData.java
similarity index 80%
rename from cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionData.java
rename to cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/CreateSessionData.java
index 621c05b274..cd988083a8 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionData.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/CreateSessionData.java
@@ -17,10 +17,10 @@
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
-package com.raytheon.uf.viz.collaboration.ui;
+package com.raytheon.uf.viz.collaboration.comm.provider.session;
/**
- * TODO Add Description
+ * Configuration used to create a new session
*
*
*
@@ -29,16 +29,19 @@ package com.raytheon.uf.viz.collaboration.ui;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 7, 2012 rferrel Initial creation
+ * Jan 30, 2014 2698 bclement moved to collaboration.comm project from collaboration.ui
+ * added handle
*
*
*
* @author rferrel
* @version 1.0
*/
-
public class CreateSessionData {
private String name;
+ private String handle;
+
private String subject;
private boolean inviteUsers;
@@ -65,6 +68,21 @@ public class CreateSessionData {
this.name = name;
}
+ /**
+ * @return the handle
+ */
+ public String getHandle() {
+ return handle;
+ }
+
+ /**
+ * @param handle
+ * the handle to set
+ */
+ public void setHandle(String handle) {
+ this.handle = handle;
+ }
+
public String getSubject() {
return subject;
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/SharedDisplaySession.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/SharedDisplaySession.java
index 72185ce21d..5f626e4e4d 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/SharedDisplaySession.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/SharedDisplaySession.java
@@ -59,6 +59,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.SessionPayload;
import com.raytheon.uf.viz.collaboration.comm.provider.SessionPayload.PayloadType;
import com.raytheon.uf.viz.collaboration.comm.provider.Tools;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
* Chat room with shared display
@@ -72,6 +73,8 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* Apr 18, 2012 njensen Initial creation
* Dec 18, 2013 2562 bclement moved data to packet extension
* Jan 28, 2014 2698 bclement removed venue info
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
+ * changed args to create/configure venue
*
*
*
@@ -85,9 +88,9 @@ public class SharedDisplaySession extends VenueSession implements
private static final transient IUFStatusHandler log = UFStatus
.getHandler(SharedDisplaySession.class);
- private UserId sessionLeader = null;
+ private VenueParticipant sessionLeader = null;
- private UserId dataProvider = null;
+ private VenueParticipant dataProvider = null;
private PubSubManager pubsubMgr;
@@ -102,8 +105,7 @@ public class SharedDisplaySession extends VenueSession implements
}
public SharedDisplaySession(EventBus externalBus,
- CollaborationConnection manager, String sessionId)
- throws CollaborationException {
+ CollaborationConnection manager, String sessionId) {
super(externalBus, manager, sessionId);
init();
}
@@ -205,7 +207,7 @@ public class SharedDisplaySession extends VenueSession implements
* @see com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession#getCurrentDataProvider()
*/
@Override
- public UserId getCurrentDataProvider() {
+ public VenueParticipant getCurrentDataProvider() {
return dataProvider;
}
@@ -216,7 +218,7 @@ public class SharedDisplaySession extends VenueSession implements
* @see com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession#getCurrentSessionLeader()
*/
@Override
- public UserId getCurrentSessionLeader() {
+ public VenueParticipant getCurrentSessionLeader() {
return sessionLeader;
}
@@ -245,7 +247,7 @@ public class SharedDisplaySession extends VenueSession implements
* (com.raytheon.uf.viz.collaboration.comm.provider.user.UserId)
*/
@Override
- public void setCurrentSessionLeader(UserId id) {
+ public void setCurrentSessionLeader(VenueParticipant id) {
sessionLeader = id;
}
@@ -258,7 +260,7 @@ public class SharedDisplaySession extends VenueSession implements
* (com.raytheon.uf.viz.collaboration.comm.provider.user.UserId)
*/
@Override
- public void setCurrentDataProvider(UserId id) {
+ public void setCurrentDataProvider(VenueParticipant id) {
dataProvider = id;
}
@@ -270,9 +272,9 @@ public class SharedDisplaySession extends VenueSession implements
* configureVenue(java.lang.String)
*/
@Override
- protected void configureVenue(String venueName)
+ protected void configureVenue(String venueName, String handle)
throws CollaborationException {
- super.configureVenue(venueName);
+ super.configureVenue(venueName, handle);
try {
configureSubscription();
} catch (XMPPException e) {
@@ -331,9 +333,9 @@ public class SharedDisplaySession extends VenueSession implements
* createVenue(java.lang.String, java.lang.String)
*/
@Override
- protected void createVenue(String venueName, String subject)
+ protected void createVenue(CreateSessionData data)
throws CollaborationException {
- super.createVenue(venueName, subject);
+ super.createVenue(data);
try {
createNode(getSessionId());
} catch (XMPPException e) {
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java
index 92f74d080d..88049f63e5 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java
@@ -41,9 +41,6 @@ import org.jivesoftware.smackx.muc.UserStatusListener;
import org.jivesoftware.smackx.packet.DiscoverItems;
import com.google.common.eventbus.EventBus;
-import com.raytheon.uf.common.status.IUFStatusHandler;
-import com.raytheon.uf.common.status.UFStatus;
-import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.collaboration.comm.Activator;
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
import com.raytheon.uf.viz.collaboration.comm.identity.IMessage;
@@ -51,6 +48,7 @@ import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
import com.raytheon.uf.viz.collaboration.comm.identity.event.ParticipantEventType;
import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenue;
import com.raytheon.uf.viz.collaboration.comm.identity.invite.VenueInvite;
+import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
import com.raytheon.uf.viz.collaboration.comm.provider.CollaborationMessage;
import com.raytheon.uf.viz.collaboration.comm.provider.SessionPayload;
import com.raytheon.uf.viz.collaboration.comm.provider.SessionPayload.PayloadType;
@@ -62,6 +60,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.event.VenueUserEvent;
import com.raytheon.uf.viz.collaboration.comm.provider.info.Venue;
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
* Represents a multi-user chat room
@@ -94,6 +93,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* Jan 08, 2014 2563 bclement fixed service name in user IDs from chat history
* Jan 28, 2014 2698 bclement removed venue info, new rooms are now invite-only
* improved error handling for when room already exists
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant, added handle
*
*
*
@@ -106,9 +106,6 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
public class VenueSession extends BaseSession implements IVenueSession {
- private static final transient IUFStatusHandler statusHandler = UFStatus
- .getHandler(VenueSession.class);
-
private static final String SEND_TXT = "[[TEXT]]";
public static final String SEND_HISTORY = "[[HISTORY]]";
@@ -119,6 +116,8 @@ public class VenueSession extends BaseSession implements IVenueSession {
private PacketListener participantListener = null;
+ private String handle;
+
private Venue venue;
/**
@@ -127,8 +126,7 @@ public class VenueSession extends BaseSession implements IVenueSession {
* @param eventBus
*/
protected VenueSession(EventBus externalBus,
- CollaborationConnection manager, String sessionId)
- throws CollaborationException {
+ CollaborationConnection manager, String sessionId) {
super(externalBus, manager, sessionId);
}
@@ -177,20 +175,13 @@ public class VenueSession extends BaseSession implements IVenueSession {
return venue;
}
- /**
- * Send an invitation from this venue to another user.
+ /*
+ * (non-Javadoc)
*
- * @param room
- * The target venue for this invitation.
- * @param id
- * The target user for this invitation.
- * @param subject
- * The intended subject of the venue conversation.
- * @param body
- * Any text that the user may wish to include.
- * @throws CollaborationException
- * @see com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession#sendInvitation(java.lang.String,
- * java.lang.String, java.lang.String, java.lang.String)
+ * @see
+ * com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession#sendInvitation
+ * (com.raytheon.uf.viz.collaboration.comm.provider.user.UserId,
+ * com.raytheon.uf.viz.collaboration.comm.identity.invite.VenueInvite)
*/
@Override
public void sendInvitation(UserId id, VenueInvite invite)
@@ -211,19 +202,13 @@ public class VenueSession extends BaseSession implements IVenueSession {
muc.invite(msg, id.getNormalizedId(), reason);
}
- /**
- * Send an invitation from this venue to another user.
+ /*
+ * (non-Javadoc)
*
- * @param room
- * The target venue for this invitation.
- * @param id
- * The target user for this invitation.
- * @param subject
- * The intended subject of the venue conversation.
- * @param body
- * Any text that the user may wish to include.
- * @see com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession#sendInvitation(java.lang.String,
- * java.lang.String, java.lang.String, java.lang.String)
+ * @see
+ * com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession#sendInvitation
+ * (java.util.List,
+ * com.raytheon.uf.viz.collaboration.comm.identity.invite.VenueInvite)
*/
@Override
public void sendInvitation(List ids, VenueInvite invite)
@@ -235,6 +220,13 @@ public class VenueSession extends BaseSession implements IVenueSession {
}
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession#sendChatMessage
+ * (java.lang.String)
+ */
@Override
public void sendChatMessage(String message) throws CollaborationException {
// Assume success
@@ -254,10 +246,10 @@ public class VenueSession extends BaseSession implements IVenueSession {
* {@link VenueSession#connectToRoom()} to actually join room
*
* @param venueName
- * @return
+ * @param handle
* @throws CollaborationException
*/
- protected void configureVenue(String venueName)
+ protected void configureVenue(String venueName, String handle)
throws CollaborationException {
CollaborationConnection manager = getSessionManager();
XMPPConnection conn = manager.getXmppConnection();
@@ -265,6 +257,7 @@ public class VenueSession extends BaseSession implements IVenueSession {
this.muc = new MultiUserChat(conn, roomId);
this.venue = new Venue(conn, muc);
createListeners();
+ setHandle(manager, handle);
}
/**
@@ -281,27 +274,24 @@ public class VenueSession extends BaseSession implements IVenueSession {
/**
* Create room and connect to it
*
- * @param venueName
+ * @param data
* @throws CollaborationException
- * @throws Exception
- * @see com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession#createVenue(java.lang.String,
- * java.lang.String)
*/
- protected void createVenue(String venueName, String subject)
+ protected void createVenue(CreateSessionData data)
throws CollaborationException {
try {
CollaborationConnection manager = getSessionManager();
XMPPConnection conn = manager.getXmppConnection();
- String roomId = getRoomId(conn.getServiceName(), venueName);
+ String roomId = getRoomId(conn.getServiceName(), data.getName());
if (roomExistsOnServer(conn, roomId)) {
throw new CollaborationException("Session name already in use");
}
this.muc = new MultiUserChat(conn, roomId);
createListeners();
- UserId user = manager.getUser();
- muc.create(user.getName());
- muc.sendConfigurationForm(getRoomConfig(venueName));
- muc.changeSubject(subject);
+ setHandle(manager, data.getHandle());
+ muc.create(this.handle);
+ muc.sendConfigurationForm(getRoomConfig(data.getName()));
+ muc.changeSubject(data.getSubject());
this.venue = new Venue(conn, muc);
sendPresence(CollaborationConnection.getConnection().getPresence());
} catch (XMPPException e) {
@@ -317,12 +307,34 @@ public class VenueSession extends BaseSession implements IVenueSession {
msg = xmppError.getCondition();
}
} else {
- msg = "Error creating venue " + venueName;
+ msg = "Error creating venue " + data.getName();
}
throw new CollaborationException(msg, e);
}
}
+ /**
+ * Change handle used in room. If handle is blank or null, the account's
+ * username is used.
+ *
+ * @param manager
+ * @param handle
+ */
+ private void setHandle(CollaborationConnection manager, String handle) {
+ if (StringUtils.isBlank(handle)) {
+ UserId user = manager.getUser();
+ handle = user.getName();
+ }
+ this.handle = handle;
+ }
+
+ /**
+ * Get filled out configuration form for room creation
+ *
+ * @param roomName
+ * @return
+ * @throws CollaborationException
+ */
protected Form getRoomConfig(String roomName) throws CollaborationException {
Form form;
try {
@@ -365,6 +377,7 @@ public class VenueSession extends BaseSession implements IVenueSession {
}
/**
+ * @param conn
* @param roomId
* @return true if room exists on server
* @throws XMPPException
@@ -418,7 +431,8 @@ public class VenueSession extends BaseSession implements IVenueSession {
@Override
public void nicknameChanged(String participant, String newNickname) {
- UserId user = IDConverter.convertFromRoom(muc, participant);
+ VenueParticipant user = IDConverter.convertFromRoom(muc,
+ participant);
postEvent(new UserNicknameChangedEvent(user, newNickname));
}
@@ -488,7 +502,8 @@ public class VenueSession extends BaseSession implements IVenueSession {
private void sendParticipantEvent(String participant,
ParticipantEventType type, String desciption) {
- UserId user = IDConverter.convertFromRoom(muc, participant);
+ VenueParticipant user = IDConverter.convertFromRoom(muc,
+ participant);
VenueParticipantEvent event = new VenueParticipantEvent(user,
ParticipantEventType.ARRIVED);
event.setEventDescription(desciption);
@@ -504,7 +519,8 @@ public class VenueSession extends BaseSession implements IVenueSession {
if (packet instanceof Presence) {
Presence p = (Presence) packet;
String fromID = p.getFrom();
- UserId user = IDConverter.convertFromRoom(muc, fromID);
+ VenueParticipant user = IDConverter.convertFromRoom(muc,
+ fromID);
venue.handlePresenceUpdated(user, p);
postEvent(new VenueParticipantEvent(user, p,
ParticipantEventType.PRESENCE_UPDATED));
@@ -520,8 +536,15 @@ public class VenueSession extends BaseSession implements IVenueSession {
Message m = (Message) packet;
Activator.getDefault().getNetworkStats()
.log(Activator.VENUE, 0, m.getBody().length());
- if (accept(m)) {
- distributeMessage(convertMessage(m));
+ String fromStr = m.getFrom();
+ IQualifiedID from;
+ if (IDConverter.isRoomSystemMessage(fromStr)) {
+ postEvent(new VenueUserEvent(m.getBody()));
+ } else {
+ from = IDConverter.convertFromRoom(muc, fromStr);
+ if (accept(m, from)) {
+ distributeMessage(convertMessage(m, from));
+ }
}
}
@@ -630,20 +653,33 @@ public class VenueSession extends BaseSession implements IVenueSession {
* Allows users to connect after the fact so that they do not miss any
* messages coming from the room (after the dialog/view has been
* instantiated)
+ *
+ * @throws CollaborationException
*/
- public void connectToRoom() {
+ public void connectToRoom() throws CollaborationException {
if (this.muc.isJoined()) {
return;
}
try {
- UserId user = getSessionManager().getUser();
- this.muc.join(user.getName());
+ this.muc.join(handle);
sendPresence(CollaborationConnection.getConnection().getPresence());
- } catch (CollaborationException e) {
- statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);
} catch (XMPPException e) {
- statusHandler.handle(Priority.ERROR,
- "Unable to connect to container", e);
+ XMPPError xmppError = e.getXMPPError();
+ String msg;
+ if (xmppError != null) {
+ int code = xmppError.getCode();
+ if (code == 409) {
+ // 409: can't join due to handle conflict
+ msg = "Handle '"
+ + handle
+ + "' already in use. Please enter a different handle.";
+ } else {
+ msg = xmppError.getCondition();
+ }
+ } else {
+ msg = "Error joining venue " + muc.getRoom();
+ }
+ throw new CollaborationException(msg, e);
}
}
@@ -653,29 +689,19 @@ public class VenueSession extends BaseSession implements IVenueSession {
*
* @param message
* A message to accept.
+ * @param from
+ * user that the message is from
* @return Should the message be accepted.
*/
- private boolean accept(Message message) {
+ private boolean accept(Message message, IQualifiedID from) {
if (this.muc == null) {
// we don't seem to be in a room
return false;
}
- String from = message.getFrom();
- String roomName = Tools.parseName(from);
- String thisRoom = Tools.parseName(this.muc.getRoom());
- if (!thisRoom.equals(roomName)) {
- // this message is for another room, they should have a listener to
- // pick it up
- return false;
- }
-
- UserId account = getSessionManager().getUser();
- UserId fromUser = IDConverter.convertFromRoom(muc, from);
-
String body = message.getBody();
- if (!body.startsWith(SEND_HISTORY) && fromUser.isSameUser(account)) {
+ if (!body.startsWith(SEND_HISTORY) && from.equals(getUserID())) {
// ignore from ourselves except for history
return false;
} else if (body.startsWith(Tools.CMD_PREAMBLE)
@@ -687,6 +713,7 @@ public class VenueSession extends BaseSession implements IVenueSession {
}
/**
+ * Process message and post event to bus
*
* @param message
*/
@@ -736,9 +763,11 @@ public class VenueSession extends BaseSession implements IVenueSession {
*
* @param msg
* The chat room message to convert.
+ * @param from
+ * user that the message is from
* @return The converted message.
*/
- private IMessage convertMessage(Message msg) {
+ private IMessage convertMessage(Message msg, IQualifiedID from) {
IMessage message = null;
String body = msg.getBody();
@@ -747,7 +776,7 @@ public class VenueSession extends BaseSession implements IVenueSession {
body = body.substring(SEND_TXT.length());
}
message = new CollaborationMessage(null, body);
- message.setFrom(IDConverter.convertFromRoom(muc, msg.getFrom()));
+ message.setFrom(from);
}
return message;
}
@@ -766,4 +795,25 @@ public class VenueSession extends BaseSession implements IVenueSession {
conn.sendPacket(presence);
}
+ /**
+ * @return the handle
+ */
+ public String getHandle() {
+ return handle;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.viz.collaboration.comm.provider.session.BaseSession#getUserID
+ * ()
+ */
+ @Override
+ public VenueParticipant getUserID() {
+ UserId account = super.getUserID();
+ return new VenueParticipant(account.getName(), account.getHost(),
+ handle);
+ }
+
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/ContactsManager.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/ContactsManager.java
index 9abc9bc0ff..b6d068b223 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/ContactsManager.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/ContactsManager.java
@@ -47,7 +47,6 @@ import com.raytheon.uf.common.time.util.TimeUtil;
import com.raytheon.uf.common.util.collections.UpdatingSet;
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
import com.raytheon.uf.viz.collaboration.comm.provider.Tools;
-import com.raytheon.uf.viz.collaboration.comm.provider.event.UserNicknameChangedEvent;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
/**
@@ -68,6 +67,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConn
* added shared groups
* Jan 27, 2014 2700 bclement fixed ungrouped entries being out of date
* added utility methods for subscription status
+ * Jan 30, 2014 2698 bclement removed unneeded nickname changed event
*
*
*
@@ -403,7 +403,6 @@ public class ContactsManager {
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(),
e);
}
- connection.postEvent(new UserNicknameChangedEvent(user, nickname));
}
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/IDConverter.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/IDConverter.java
index 4ba7ea94ab..d98e781cf3 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/IDConverter.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/IDConverter.java
@@ -35,6 +35,7 @@ import org.jivesoftware.smackx.muc.Occupant;
* ------------ ---------- ----------- --------------------------
* Mar 28, 2012 jkorman Initial creation
* Dec 6, 2013 2561 bclement removed ECF
+ * Jan 30, 2014 2698 bclement reworked convertFromRoom for venue participants
*
*
*
@@ -60,25 +61,31 @@ public class IDConverter {
return rval;
}
- public static UserId convertFromRoom(MultiUserChat room, String id) {
- String nickname = StringUtils.parseResource(id);
- if (nickname == null || nickname.trim().isEmpty()) {
- // this message is from the room itself
- return convertFrom(id);
+ /**
+ * Parse userId from room id string "room@host/handle". Name field on
+ * returned id may be null.
+ *
+ * @param room
+ * @param id
+ * @return
+ */
+ public static VenueParticipant convertFromRoom(MultiUserChat room, String id) {
+ String handle = StringUtils.parseResource(id);
+ if (handle == null || handle.trim().isEmpty()) {
+ throw new IllegalArgumentException(
+ "Room participant ids must have handle in resource");
}
String host = StringUtils.parseServer(id);
- String name;
+ String name = null;
Occupant occupant;
if (room != null && (occupant = room.getOccupant(id)) != null) {
- // get actual user name
- name = StringUtils.parseName(occupant.getJid());
- } else {
- // fallback to using room nickname
- name = nickname;
+ if (occupant.getJid() != null) {
+ // get actual user name
+ name = StringUtils.parseName(occupant.getJid());
+ }
}
-
- return new UserId(name, host);
+ return new VenueParticipant(name, host, handle);
}
public static String normalizeHostname(String hostname) {
@@ -93,4 +100,11 @@ public class IDConverter {
return host.startsWith(CONF_ID);
}
+ public static boolean isRoomSystemMessage(String id) {
+ String handle = StringUtils.parseResource(id);
+ // system messages look like participant IDs, just without a handle
+ return isFromRoom(id)
+ && org.apache.commons.lang.StringUtils.isBlank(handle);
+ }
+
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/UserId.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/UserId.java
index 70d41d7695..783001e25d 100644
--- a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/UserId.java
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/UserId.java
@@ -21,10 +21,11 @@ package com.raytheon.uf.viz.collaboration.comm.provider.user;
import javax.xml.bind.annotation.XmlRootElement;
+import org.apache.commons.lang.builder.EqualsBuilder;
+
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
-import com.raytheon.uf.viz.collaboration.comm.provider.Tools;
/**
* Parsed user id string
@@ -38,6 +39,8 @@ import com.raytheon.uf.viz.collaboration.comm.provider.Tools;
* Feb 24, 2012 jkorman Initial creation
* Apr 18, 2012 njensen Major refactor
* Dec 6, 2013 2561 bclement removed ECF
+ * Jan 30, 2014 2698 bclement removed unneeded isSameUser(string, string)
+ * improved other isSameUser so it won't blow up on nulls
*
*
*
@@ -247,23 +250,14 @@ public class UserId implements IQualifiedID {
* @return if it is the same user
*/
public boolean isSameUser(String id) {
- String name = Tools.parseName(id);
- String host = Tools.parseHost(id);
- return isSameUser(name, host);
+ return isSameUser(IDConverter.convertFrom(id));
}
public boolean isSameUser(UserId other) {
- return isSameUser(other.getName(), other.getHost());
- }
-
- public boolean isSameUser(String name, String host) {
- boolean result = false;
- if (name != null && host != null) {
- if (this.name.equals(name) && this.host.equals(host)) {
- result = true;
- }
- }
- return result;
+ EqualsBuilder builder = new EqualsBuilder();
+ builder.append(this.name, other.getName());
+ builder.append(this.host, other.getHost());
+ return builder.isEquals();
}
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/VenueParticipant.java b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/VenueParticipant.java
new file mode 100644
index 0000000000..3181e2d9c5
--- /dev/null
+++ b/cave/com.raytheon.uf.viz.collaboration.comm/src/com/raytheon/uf/viz/collaboration/comm/provider/user/VenueParticipant.java
@@ -0,0 +1,141 @@
+/**
+ * This software was developed and / or modified by Raytheon Company,
+ * pursuant to Contract DG133W-05-CQ-1067 with the US Government.
+ *
+ * U.S. EXPORT CONTROLLED TECHNICAL DATA
+ * This software product contains export-restricted data whose
+ * export/transfer/disclosure is restricted by U.S. law. Dissemination
+ * to non-U.S. persons whether in the United States or abroad requires
+ * an export license or other authorization.
+ *
+ * Contractor Name: Raytheon Company
+ * Contractor Address: 6825 Pine Street, Suite 340
+ * Mail Stop B8
+ * Omaha, NE 68106
+ * 402.291.0100
+ *
+ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for
+ * further licensing information.
+ **/
+package com.raytheon.uf.viz.collaboration.comm.provider.user;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
+import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
+
+/**
+ * Parsed ID string from venue. Not guaranteed to have username, but will always
+ * have alias.
+ *
+ *
+ *
+ * SOFTWARE HISTORY
+ *
+ * Date Ticket# Engineer Description
+ * ------------ ---------- ----------- --------------------------
+ * Jan 29, 2014 bclement Initial creation
+ *
+ *
+ *
+ * @author bclement
+ * @version 1.0
+ */
+@DynamicSerialize
+@XmlRootElement(name = "participant")
+public class VenueParticipant extends UserId {
+
+ /**
+ *
+ */
+ public VenueParticipant() {
+ }
+
+ /**
+ * @param userName
+ * @param hostName
+ */
+ public VenueParticipant(String userName, String hostName) {
+ super(userName, hostName);
+ }
+
+ /**
+ * @param userName
+ * @param hostName
+ * @param resource
+ */
+ public VenueParticipant(String userName, String hostName, String handle) {
+ this(userName, hostName);
+ setAlias(handle);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.viz.collaboration.comm.provider.user.UserId#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ HashCodeBuilder builder = new HashCodeBuilder();
+ builder.append(host);
+ builder.append(alias);
+ return builder.toHashCode();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.viz.collaboration.comm.provider.user.UserId#equals(java
+ * .lang.Object)
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof UserId)) {
+ return false;
+ }
+ UserId user = (UserId) obj;
+ EqualsBuilder builder = new EqualsBuilder();
+ builder.append(alias, user.alias);
+ builder.append(host, user.host);
+ return builder.isEquals();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.viz.collaboration.comm.provider.user.UserId#isSameUser
+ * (java.lang.String)
+ */
+ @Override
+ public boolean isSameUser(String id) {
+ if (!IDConverter.isFromRoom(id)) {
+ return false;
+ }
+ UserId other = IDConverter.convertFromRoom(null, id);
+ return isSameUser(other);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.viz.collaboration.comm.provider.user.UserId#isSameUser
+ * (com.raytheon.uf.viz.collaboration.comm.provider.user.UserId)
+ */
+ @Override
+ public boolean isSameUser(UserId other) {
+ return equals(other);
+ }
+
+}
diff --git a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/ColorChangeEvent.java b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/ColorChangeEvent.java
index f3809f7681..2c08073bb5 100644
--- a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/ColorChangeEvent.java
+++ b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/ColorChangeEvent.java
@@ -23,7 +23,7 @@ import org.eclipse.swt.graphics.RGB;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
/**
* Event for when a new user enters and a color is added
@@ -35,6 +35,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 11, 2012 mnash Initial creation
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -45,7 +46,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
@DynamicSerialize
public class ColorChangeEvent {
@DynamicSerializeElement
- private UserId userName;
+ private VenueParticipant userName;
@DynamicSerializeElement
private Integer red;
@@ -59,7 +60,7 @@ public class ColorChangeEvent {
public ColorChangeEvent() {
}
- public ColorChangeEvent(UserId user, RGB color) {
+ public ColorChangeEvent(VenueParticipant user, RGB color) {
this.userName = user;
if (color != null) {
red = color.red;
@@ -72,14 +73,14 @@ public class ColorChangeEvent {
* @param userName
* the userName to set
*/
- public void setUserName(UserId userName) {
+ public void setUserName(VenueParticipant userName) {
this.userName = userName;
}
/**
* @return the userName
*/
- public UserId getUserName() {
+ public VenueParticipant getUserName() {
return userName;
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/SessionColorManager.java b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/SessionColorManager.java
index 7b7ec4b08c..31da499146 100644
--- a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/SessionColorManager.java
+++ b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/SessionColorManager.java
@@ -24,7 +24,7 @@ import java.util.Map;
import org.eclipse.swt.graphics.RGB;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
import com.raytheon.viz.core.ColorUtil;
/**
@@ -38,6 +38,7 @@ import com.raytheon.viz.core.ColorUtil;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 3, 2012 mnash Initial creation
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -47,7 +48,7 @@ import com.raytheon.viz.core.ColorUtil;
public class SessionColorManager {
- private Map colors;
+ private Map colors;
private static RGB[] rgbPresets = null;
@@ -56,7 +57,7 @@ public class SessionColorManager {
*/
public SessionColorManager() {
if (colors == null) {
- colors = new HashMap();
+ colors = new HashMap();
rgbPresets = ColorUtil.getResourceColorPresets();
}
}
@@ -64,22 +65,22 @@ public class SessionColorManager {
/**
* @return the colors
*/
- public Map getColors() {
+ public Map getColors() {
return colors;
}
- public void setColors(Map map) {
+ public void setColors(Map map) {
colors = map;
}
- public RGB getColorFromUser(UserId user) {
+ public RGB getColorFromUser(VenueParticipant user) {
if (colors.get(user) == null) {
addUser(user);
}
return colors.get(user);
}
- public void setColorForUser(UserId id, RGB rgb) {
+ public void setColorForUser(VenueParticipant id, RGB rgb) {
colors.put(id, rgb);
}
@@ -88,7 +89,7 @@ public class SessionColorManager {
*
* @param user
*/
- public void addUser(UserId user) {
+ public void addUser(VenueParticipant user) {
int count = colors.size();
if (rgbPresets.length <= count) {
count = count % rgbPresets.length;
diff --git a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/CollaborationDrawingEvent.java b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/CollaborationDrawingEvent.java
index 4e33e9dccc..0c138412c9 100644
--- a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/CollaborationDrawingEvent.java
+++ b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/CollaborationDrawingEvent.java
@@ -23,11 +23,11 @@ import java.util.List;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
import com.vividsolutions.jts.geom.Coordinate;
/**
- * TODO Add Description
+ * Event posted when a venue participant draws on shared display
*
*
*
@@ -36,6 +36,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 3, 2012 mnash Initial creation
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -57,7 +58,7 @@ public class CollaborationDrawingEvent {
private List coordinates;
@DynamicSerializeElement
- private UserId userName;
+ private VenueParticipant userName;
@DynamicSerializeElement
private CollaborationEventType type;
@@ -103,7 +104,7 @@ public class CollaborationDrawingEvent {
/**
* @return the userName
*/
- public UserId getUserName() {
+ public VenueParticipant getUserName() {
return userName;
}
@@ -111,7 +112,7 @@ public class CollaborationDrawingEvent {
* @param userName
* the userName to set
*/
- public void setUserName(UserId userName) {
+ public void setUserName(VenueParticipant userName) {
this.userName = userName;
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/CollaborationDrawingResource.java b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/CollaborationDrawingResource.java
index d51c57a9bc..4c20e527bb 100644
--- a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/CollaborationDrawingResource.java
+++ b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/CollaborationDrawingResource.java
@@ -30,6 +30,7 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IVenueParticipantEvent;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
import com.raytheon.uf.viz.collaboration.display.Activator;
import com.raytheon.uf.viz.collaboration.display.data.SessionContainer;
import com.raytheon.uf.viz.collaboration.display.data.SharedDisplaySessionMgr;
@@ -61,6 +62,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* May 23, 2012 mschenke Initial creation
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -73,9 +75,9 @@ public class CollaborationDrawingResource extends
private SessionContainer container;
- private UserId myUser;
+ private VenueParticipant myUser;
- private Map layerMap;
+ private Map layerMap;
private CollaborationDrawingUIManager manager;
@@ -97,7 +99,7 @@ public class CollaborationDrawingResource extends
}
myUser = container.getSession().getUserID();
- layerMap = new HashMap();
+ layerMap = new HashMap();
}
/*
@@ -111,7 +113,7 @@ public class CollaborationDrawingResource extends
protected void initInternal(IGraphicsTarget target) throws VizException {
EditableManager.makeEditable(this, true);
if (layerMap == null) {
- layerMap = new HashMap();
+ layerMap = new HashMap();
}
OutlineCapability outline = getCapability(OutlineCapability.class);
@@ -165,7 +167,7 @@ public class CollaborationDrawingResource extends
OutlineCapability outline = getCapability(OutlineCapability.class);
synchronized (layerMap) {
- for (UserId user : layerMap.keySet()) {
+ for (VenueParticipant user : layerMap.keySet()) {
DrawingToolLayer layer = layerMap.get(user);
if (layer != null) {
layer.setEraserWidth(16); // Configure?
@@ -203,7 +205,7 @@ public class CollaborationDrawingResource extends
/**
* @return the myUser
*/
- public UserId getMyUser() {
+ public VenueParticipant getMyUser() {
return myUser;
}
@@ -224,7 +226,7 @@ public class CollaborationDrawingResource extends
* @param user
* @return
*/
- public DrawingToolLayer getDrawingLayerFor(UserId user) {
+ public DrawingToolLayer getDrawingLayerFor(VenueParticipant user) {
if (layerMap != null) {
synchronized (layerMap) {
DrawingToolLayer layer = layerMap.get(user);
@@ -321,7 +323,7 @@ public class CollaborationDrawingResource extends
@Subscribe
public void handleDrawEvent(CollaborationDrawingEvent event) {
- UserId user = event.getUserName();
+ VenueParticipant user = event.getUserName();
if (event.getDisplayId() != resourceData.getDisplayId()
|| user.equals(myUser)) {
// Early exit case, don't process my own events twice
diff --git a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/InitialCollaborationData.java b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/InitialCollaborationData.java
index 3f7f68022d..518c63d16f 100644
--- a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/InitialCollaborationData.java
+++ b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/rsc/telestrator/InitialCollaborationData.java
@@ -24,7 +24,7 @@ import java.util.Stack;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
import com.vividsolutions.jts.geom.Geometry;
/**
@@ -38,6 +38,7 @@ import com.vividsolutions.jts.geom.Geometry;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jul 11, 2012 dgilling Initial creation
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -52,7 +53,7 @@ public class InitialCollaborationData {
private int displayId;
@DynamicSerializeElement
- private UserId userName;
+ private VenueParticipant userName;
@DynamicSerializeElement
private boolean sessionLeader;
@@ -77,7 +78,7 @@ public class InitialCollaborationData {
}
- public InitialCollaborationData(UserId userName, int displayId,
+ public InitialCollaborationData(VenueParticipant userName, int displayId,
boolean sessionLeader, boolean drawingLocked,
CollaborationDrawingToolLayer layer) {
this.userName = userName;
@@ -89,11 +90,11 @@ public class InitialCollaborationData {
this.redoData = layer.getRedoStack();
}
- public UserId getUserName() {
+ public VenueParticipant getUserName() {
return userName;
}
- public void setUserName(UserId userName) {
+ public void setUserName(VenueParticipant userName) {
this.userName = userName;
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java
index 1fb00992c2..8f3a503208 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java
@@ -85,7 +85,6 @@ import com.google.common.eventbus.Subscribe;
import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IRosterChangeEvent;
import com.raytheon.uf.viz.collaboration.comm.provider.event.ServerDisconnectEvent;
-import com.raytheon.uf.viz.collaboration.comm.provider.event.UserNicknameChangedEvent;
import com.raytheon.uf.viz.collaboration.comm.provider.event.UserPresenceChangedEvent;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.ContactsManager;
@@ -140,6 +139,8 @@ import com.raytheon.viz.ui.views.CaveFloatingView;
* Jan 24, 2014 2701 bclement removed local groups, added shared groups
* removed option to create empty group
* Jan 27, 2014 2700 bclement fixed context menu for roster entries
+ * Jan 30, 2014 2698 bclement fixed alias not working for roster entries
+ * removed unneeded subscription for nickname changed events
*
*
*
@@ -569,8 +570,8 @@ public class CollaborationGroupView extends CaveFloatingView implements
}
protected void changeText(Object selectedObj, String newText) {
- if (selectedObj instanceof UserId) {
- UserId user = (UserId) selectedObj;
+ if (selectedObj instanceof RosterEntry) {
+ UserId user = IDConverter.convertFrom((RosterEntry) selectedObj);
user.setAlias(newText);
CollaborationConnection.getConnection().getContactsManager()
.setNickname(user, newText);
@@ -906,11 +907,6 @@ public class CollaborationGroupView extends CaveFloatingView implements
refreshUsersTreeViewerAsync(group);
}
- @Subscribe
- public void userNicknameChanged(UserNicknameChangedEvent e) {
- refreshUsersTreeViewerAsync(usersTreeViewer.getInput());
- }
-
@Subscribe
public void serverDisconnected(final ServerDisconnectEvent e) {
if (logOut == null) {
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/ConnectionSubscriber.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/ConnectionSubscriber.java
index 1972cc663b..9332135907 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/ConnectionSubscriber.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/ConnectionSubscriber.java
@@ -39,8 +39,6 @@ import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IHttpdCollaborationConfigurationEvent;
import com.raytheon.uf.viz.collaboration.comm.identity.event.ITextMessageEvent;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IVenueInvitationEvent;
-import com.raytheon.uf.viz.collaboration.comm.identity.invite.SharedDisplayVenueInvite;
-import com.raytheon.uf.viz.collaboration.comm.identity.invite.VenueInvite;
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
import com.raytheon.uf.viz.collaboration.comm.identity.user.SharedDisplayRole;
import com.raytheon.uf.viz.collaboration.comm.provider.TextMessage;
@@ -72,6 +70,7 @@ import com.raytheon.viz.ui.views.CaveWorkbenchPageManager;
* Dec 18, 2013 2562 bclement fixed venue invite
* Jan 14, 2014 2630 bclement added away timeout
* Jan 27, 2014 2700 bclement added auto subscribe property listener
+ * Jan 30, 2014 2698 bclement moved xmpp join logic to dialog so we can reprompt user on failure
*
*
*
@@ -186,31 +185,15 @@ public class ConnectionSubscriber {
@Override
public void run() {
- IQualifiedID inviter = event.getInviter();
- IQualifiedID room = event.getRoomId();
Shell shell = new Shell(Display.getCurrent());
- StringBuilder sb = new StringBuilder();
- VenueInvite invite = event.getInvite();
- boolean sharedDisplay = invite instanceof SharedDisplayVenueInvite;
- sb.append("You are invited to a ");
- if (sharedDisplay) {
- sb.append("collaboration session.");
- } else {
- sb.append("chat room.");
- }
- InviteDialog inviteBox = new InviteDialog(shell, inviter
- .getName(), invite.getSubject(), room.getName(), sb
- .toString(), invite.getMessage());
+ InviteDialog inviteBox = new InviteDialog(shell, event);
if (!(Boolean) inviteBox.open()) {
return;
}
- CollaborationConnection connection = CollaborationConnection
- .getConnection();
try {
- IVenueSession session;
- if (sharedDisplay) {
- session = connection.joinCollaborationVenue(event);
+ IVenueSession session = inviteBox.getSession();
+ if (inviteBox.isSharedDisplay()) {
ISharedDisplaySession displaySession = (ISharedDisplaySession) session;
SessionColorManager man = new SessionColorManager();
SharedDisplaySessionMgr.joinSession(displaySession,
@@ -220,13 +203,10 @@ public class ConnectionSubscriber {
CollaborationSessionView.ID, session.getSessionId(),
IWorkbenchPage.VIEW_ACTIVATE);
} else {
- session = connection.joinTextOnlyVenue(room.getName());
CaveWorkbenchPageManager.getActiveInstance().showView(
SessionView.ID, session.getSessionId(),
IWorkbenchPage.VIEW_ACTIVATE);
}
- } catch (CollaborationException e) {
- statusHandler.error("Unable to join session venue", e);
} catch (PartInitException e) {
statusHandler.error("Unable to display session view", e);
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionDialog.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionDialog.java
index ea88faef8a..c55058550a 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionDialog.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionDialog.java
@@ -57,6 +57,7 @@ import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
import com.raytheon.uf.viz.collaboration.comm.identity.user.SharedDisplayRole;
import com.raytheon.uf.viz.collaboration.comm.provider.Tools;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
+import com.raytheon.uf.viz.collaboration.comm.provider.session.CreateSessionData;
import com.raytheon.uf.viz.collaboration.comm.provider.session.PeerToPeerCommHelper;
import com.raytheon.uf.viz.collaboration.comm.provider.session.VenueSession;
import com.raytheon.uf.viz.collaboration.display.data.SharedDisplaySessionMgr;
@@ -85,6 +86,7 @@ import com.raytheon.viz.ui.editor.IMultiPaneEditor;
* Feb 15, 2012 rferrel Initial creation
* Dec 19, 2013 2563 bclement disable shared display option if not supported by server
* Jan 28, 2014 2698 bclement added error display text
+ * Jan 30, 2014 2698 bclement added handle to join room with
*
*
*
@@ -98,6 +100,8 @@ public class CreateSessionDialog extends CaveSWTDialog {
private Text nameTF;
+ private Text handleTF;
+
private Text subjectTF;
private Button sharedSessionDisplay;
@@ -122,8 +126,7 @@ public class CreateSessionDialog extends CaveSWTDialog {
private Control createDialogArea(Composite parent) {
Composite body = new Composite(parent, SWT.NONE);
body.setLayout(new GridLayout(2, false));
- // body.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
- // | GridData.HORIZONTAL_ALIGN_FILL));
+
Label label = null;
label = new Label(body, SWT.NONE);
label.setText("Name: ");
@@ -131,7 +134,7 @@ public class CreateSessionDialog extends CaveSWTDialog {
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
gd.minimumWidth = 200;
nameTF.setLayoutData(gd);
- nameTF.addVerifyListener(new VerifyListener() {
+ VerifyListener validNameListener = new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
@@ -140,7 +143,15 @@ public class CreateSessionDialog extends CaveSWTDialog {
// Toolkit.getDefaultToolkit().beep();
}
}
- });
+ };
+ nameTF.addVerifyListener(validNameListener);
+
+ label = new Label(body, SWT.NONE);
+ label.setText("Handle: ");
+ handleTF = new Text(body, SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ handleTF.setLayoutData(gd);
+ handleTF.addVerifyListener(validNameListener);
label = new Label(body, SWT.NONE);
label.setText("Subject: ");
@@ -438,11 +449,20 @@ public class CreateSessionDialog extends CaveSWTDialog {
focusField = nameTF;
errorMessages.add(err);
}
+ err = validateHandle();
+ String handle = handleTF.getText();
+ if (err != null) {
+ if (focusField == null) {
+ focusField = handleTF;
+ }
+ errorMessages.add(err);
+ }
if (focusField == null) {
CreateSessionData result = new CreateSessionData();
result.setName(name);
result.setSubject(subject);
+ result.setHandle(handle);
result.setCollaborationSessioh(sharedSessionDisplay
.getSelection());
if (inviteUsers == null) {
@@ -457,15 +477,15 @@ public class CreateSessionDialog extends CaveSWTDialog {
CollaborationConnection connection = CollaborationConnection
.getConnection();
if (result.isCollaborationSession()) {
- session = connection.createCollaborationVenue(
- result.getName(), result.getSubject());
+ session = connection
+ .createCollaborationVenue(result);
ISharedDisplaySession displaySession = (ISharedDisplaySession) session;
SharedDisplaySessionMgr.joinSession(
displaySession,
SharedDisplayRole.DATA_PROVIDER, null);
} else {
- session = connection.createTextOnlyVenue(
- result.getName(), result.getSubject());
+ session = connection
+ .createTextOnlyVenue(result);
}
result.setSessionId(session.getSessionId());
setReturnValue(result);
@@ -513,7 +533,7 @@ public class CreateSessionDialog extends CaveSWTDialog {
if (name.length() <= 0) {
err = "Must have session name.";
} else if (!Tools.isValidId(name)) {
- err = "Name contains invalid characters.";
+ err = "Session name contains invalid characters.";
} else {
try {
if (VenueSession.roomExistsOnServer(name)) {
@@ -527,6 +547,16 @@ public class CreateSessionDialog extends CaveSWTDialog {
return err;
}
+ private String validateHandle() {
+ String handle = handleTF.getText().trim();
+ handleTF.setText(handle);
+ String err = null;
+ if (!Tools.isValidId(handle)) {
+ err = "Handle contains invalid characters.";
+ }
+ return err;
+ }
+
private void enableOrDisableSharedDisplays() {
boolean sharedSessionsEnabled = Activator
.getDefault()
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/InviteDialog.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/InviteDialog.java
index 571cc906a1..ce8a465b21 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/InviteDialog.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/InviteDialog.java
@@ -23,6 +23,8 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.layout.GridData;
@@ -33,7 +35,15 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
+import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
+import com.raytheon.uf.viz.collaboration.comm.identity.event.IVenueInvitationEvent;
+import com.raytheon.uf.viz.collaboration.comm.identity.invite.SharedDisplayVenueInvite;
+import com.raytheon.uf.viz.collaboration.comm.identity.invite.VenueInvite;
+import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
+import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.viz.ui.dialogs.CaveSWTDialogBase;
/**
@@ -47,6 +57,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialogBase;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Aug 14, 2012 lvenable Initial creation.
+ * Jan 30, 2014 2698 bclement added logic to join room and reprompt if failed
*
*
*
@@ -70,6 +81,16 @@ public class InviteDialog extends CaveSWTDialogBase {
private Font font;
+ private Text handleText;
+
+ private IVenueSession session;
+
+ private boolean sharedDisplay;
+
+ private IVenueInvitationEvent event;
+
+ private Text errorMessage;
+
/**
* Constructor.
*
@@ -84,18 +105,27 @@ public class InviteDialog extends CaveSWTDialogBase {
* @param iconStyle
* Icon style to be displayed.
*/
- public InviteDialog(Shell parentShell, String inviter, String subject,
- String room, String inviteText, String message) {
+ public InviteDialog(Shell parentShell, IVenueInvitationEvent event) {
super(parentShell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL
| SWT.PRIMARY_MODAL | SWT.SYSTEM_MODAL, CAVE.NONE);
setText("Session Invitation");
-
- this.inviter = inviter;
- this.subject = subject;
- this.room = room;
- this.inviteText = inviteText;
- this.message = message;
-
+ IQualifiedID inviter = event.getInviter();
+ IQualifiedID room = event.getRoomId();
+ StringBuilder sb = new StringBuilder();
+ VenueInvite invite = event.getInvite();
+ this.sharedDisplay = invite instanceof SharedDisplayVenueInvite;
+ sb.append("You are invited to a ");
+ if (sharedDisplay) {
+ sb.append("collaboration session.");
+ } else {
+ sb.append("chat room.");
+ }
+ this.event = event;
+ this.inviter = inviter.getName();
+ this.subject = invite.getSubject();
+ this.room = room.getName();
+ this.inviteText = sb.toString();
+ this.message = invite.getMessage();
setReturnValue(Boolean.FALSE);
}
@@ -156,6 +186,28 @@ public class InviteDialog extends CaveSWTDialogBase {
gd.horizontalSpan = 2;
text.setLayoutData(gd);
}
+ addLabel(labelTextComp, "Join With Handle:", true);
+ handleText = new Text(labelTextComp, SWT.BORDER);
+ handleText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ handleText.addVerifyListener(new VerifyListener() {
+
+ @Override
+ public void verifyText(VerifyEvent e) {
+ if (" \t\"&'/,<>@".indexOf(e.character) >= 0) {
+ e.doit = false;
+ // Toolkit.getDefaultToolkit().beep();
+ }
+ }
+ });
+ GridData gd = new GridData(GridData.GRAB_HORIZONTAL
+ | GridData.HORIZONTAL_ALIGN_FILL);
+ gd.horizontalSpan = 2;
+ errorMessage = new Text(labelTextComp, SWT.READ_ONLY | SWT.WRAP);
+ errorMessage.setLayoutData(gd);
+ Display display = errorMessage.getDisplay();
+ errorMessage.setBackground(display
+ .getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
+ errorMessage.setForeground(display.getSystemColor(SWT.COLOR_RED));
font.dispose();
}
@@ -206,9 +258,26 @@ public class InviteDialog extends CaveSWTDialogBase {
okBtn.setLayoutData(gd);
okBtn.addSelectionListener(new SelectionAdapter() {
@Override
- public void widgetSelected(SelectionEvent e) {
- setReturnValue(Boolean.TRUE);
- close();
+ public void widgetSelected(SelectionEvent se) {
+ CollaborationConnection connection = CollaborationConnection
+ .getConnection();
+ String handle = handleText.getText();
+ try {
+ if (sharedDisplay) {
+ session = connection.joinCollaborationVenue(event,
+ handle);
+ } else {
+ session = connection.joinTextOnlyVenue(room, handle);
+ }
+ setReturnValue(Boolean.TRUE);
+ se.doit = true;
+ close();
+ } catch (CollaborationException ex) {
+ se.doit = false;
+ setReturnValue(Boolean.FALSE);
+ errorMessage.setText(ex.getLocalizedMessage());
+ errorMessage.setVisible(true);
+ }
}
});
@@ -225,4 +294,16 @@ public class InviteDialog extends CaveSWTDialogBase {
}
});
}
+
+ public IVenueSession getSession() {
+ return session;
+ }
+
+ /**
+ * @return the sharedDisplay
+ */
+ public boolean isSharedDisplay() {
+ return sharedDisplay;
+ }
+
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/CreateSessionAction.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/CreateSessionAction.java
index 2c0814986c..2f02eae42b 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/CreateSessionAction.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/CreateSessionAction.java
@@ -30,9 +30,9 @@ import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
+import com.raytheon.uf.viz.collaboration.comm.provider.session.CreateSessionData;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.Activator;
-import com.raytheon.uf.viz.collaboration.ui.CreateSessionData;
import com.raytheon.uf.viz.collaboration.ui.CreateSessionDialog;
import com.raytheon.uf.viz.collaboration.ui.IUserSelector;
import com.raytheon.uf.viz.collaboration.ui.session.CollaborationSessionView;
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/DisplayFeedAction.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/DisplayFeedAction.java
index e974ee00f6..47033acc0a 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/DisplayFeedAction.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/DisplayFeedAction.java
@@ -55,6 +55,7 @@ import com.raytheon.viz.ui.views.CaveWorkbenchPageManager;
* Jul 5, 2012 bsteffen Initial creation
* Dec 19, 2013 2563 bclement added check for feed venue existence
* Jan 28, 2014 2698 bclement changed feed venue filter to match whole name
+ * Jan 30, 2014 2698 bclement added default handle of username
*
*
*
@@ -102,8 +103,9 @@ public class DisplayFeedAction extends Action {
}
if (sessionId == null && create) {
try {
- IVenueSession session = connection
- .joinTextOnlyVenue(FEED_VENUE);
+ // TODO auto join with handle from preferences
+ IVenueSession session = connection.joinTextOnlyVenue(
+ FEED_VENUE, connection.getUser().getName());
sessionId = session.getSessionId();
} catch (CollaborationException e) {
statusHandler.handle(Priority.PROBLEM,
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/InviteAction.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/InviteAction.java
index be11546239..9d8a71bf8e 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/InviteAction.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/InviteAction.java
@@ -44,6 +44,7 @@ import com.raytheon.uf.viz.collaboration.comm.identity.invite.SharedDisplayVenue
import com.raytheon.uf.viz.collaboration.comm.identity.invite.VenueInvite;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
import com.raytheon.uf.viz.collaboration.display.data.SharedDisplaySessionMgr;
/**
@@ -58,6 +59,7 @@ import com.raytheon.uf.viz.collaboration.display.data.SharedDisplaySessionMgr;
* Jul 3, 2012 bsteffen Initial creation
* Dec 6, 2013 2561 bclement removed ECF
* Jan 28, 2014 2698 bclement removed venue info
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -168,10 +170,10 @@ public class InviteAction extends Action {
.getSessions();
for (ISession session : sessions) {
if (session != null && session instanceof IVenueSession) {
- Collection participants = ((IVenueSession) session)
+ Collection participants = ((IVenueSession) session)
.getVenue().getParticipants();
boolean notInRoom = true;
- for (UserId pa : participants) {
+ for (VenueParticipant pa : participants) {
if (pa.isSameUser(user)) {
notInRoom = false;
break;
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/AbstractSessionView.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/AbstractSessionView.java
index a0bedaa089..d6a5eeb501 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/AbstractSessionView.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/AbstractSessionView.java
@@ -93,6 +93,7 @@ import com.raytheon.viz.ui.views.CaveFloatingView;
* ------------ ---------- ----------- --------------------------
* Mar 16, 2012 244 rferrel Initial creation
* Dec 19, 2013 2563 bclement moved color lookup into runAsync block
+ * Jan 30, 2014 2698 bclement get display name from child class
*
*
*
@@ -318,6 +319,8 @@ public abstract class AbstractSessionView extends CaveFloatingView {
appendMessage(userId, timestamp, body, subject);
}
+ protected abstract String getDisplayName(UserId userId);
+
public void appendMessage(final UserId userId, final long timestamp,
final String body, final String subject) {
VizApp.runAsync(new Runnable() {
@@ -339,8 +342,7 @@ public abstract class AbstractSessionView extends CaveFloatingView {
Date date = new Date(timestamp);
String time = dateFormatter.format(date);
- String name = connection.getContactsManager().getDisplayName(
- userId);
+ String name = getDisplayName(userId);
UserId myUser = connection.getUser();
if (!myUser.equals(userId)
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/CollaborationSessionView.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/CollaborationSessionView.java
index 1ff904780a..8b9715cb23 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/CollaborationSessionView.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/CollaborationSessionView.java
@@ -55,7 +55,7 @@ import com.raytheon.uf.viz.collaboration.comm.identity.invite.ColorPopulator;
import com.raytheon.uf.viz.collaboration.comm.identity.user.SharedDisplayRole;
import com.raytheon.uf.viz.collaboration.comm.provider.TransferRoleCommand;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
-import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
import com.raytheon.uf.viz.collaboration.display.IRemoteDisplayContainer;
import com.raytheon.uf.viz.collaboration.display.IRemoteDisplayContainer.IRemoteDisplayChangedListener;
import com.raytheon.uf.viz.collaboration.display.IRemoteDisplayContainer.RemoteDisplay;
@@ -92,6 +92,7 @@ import com.raytheon.viz.ui.input.EditableManager;
* ------------ ---------- ----------- --------------------------
* Mar 1, 2012 rferrel Initial creation
* Jan 28, 2014 2698 bclement removed venue info
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -206,7 +207,8 @@ public class CollaborationSessionView extends SessionView implements
if (rgb != null) {
IStructuredSelection selection = (IStructuredSelection) usersTable
.getSelection();
- UserId entry = (UserId) selection.getFirstElement();
+ VenueParticipant entry = (VenueParticipant) selection
+ .getFirstElement();
ColorChangeEvent event = new ColorChangeEvent(entry, rgb);
try {
session.sendObjectToVenue(event);
@@ -478,7 +480,7 @@ public class CollaborationSessionView extends SessionView implements
String message = getComposedMessage();
if (message.length() > 0) {
try {
- UserId id = CollaborationConnection.getConnection().getUser();
+ VenueParticipant id = session.getUserID();
appendMessage(id, System.currentTimeMillis(), message, null);
((IVenueSession) session).sendChatMessage(message);
} catch (CollaborationException e) {
@@ -511,7 +513,8 @@ public class CollaborationSessionView extends SessionView implements
public void modifyColors(ColorPopulator populator) {
SessionColorManager colorMan = SharedDisplaySessionMgr
.getSessionContainer(sessionId).getColorManager();
- for (Entry entry : populator.getColors().entrySet()) {
+ for (Entry entry : populator.getColors()
+ .entrySet()) {
colorMan.setColorForUser(entry.getKey(), entry.getValue());
}
VizApp.runAsync(new Runnable() {
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/ParticipantsLabelProvider.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/ParticipantsLabelProvider.java
index 0cff8b5074..3a40d226b1 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/ParticipantsLabelProvider.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/ParticipantsLabelProvider.java
@@ -36,6 +36,7 @@ import com.raytheon.uf.viz.collaboration.comm.identity.info.SiteConfigInformatio
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.session.SharedDisplaySession;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
import com.raytheon.uf.viz.collaboration.display.data.SessionColorManager;
import com.raytheon.uf.viz.collaboration.ui.AbstractUserLabelProvider;
@@ -50,6 +51,8 @@ import com.raytheon.uf.viz.collaboration.ui.AbstractUserLabelProvider;
* ------------ ---------- ----------- --------------------------
* Feb 24, 2012 mnash Initial creation
* Dec 6, 2013 2561 bclement removed ECF
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
+ * added JID and display name if available
*
*
*
@@ -103,10 +106,10 @@ public class ParticipantsLabelProvider extends AbstractUserLabelProvider {
@Override
public Font getFont(Object element) {
- if (!(element instanceof UserId)) {
+ if (!(element instanceof VenueParticipant)) {
return null;
}
- UserId user = (UserId) element;
+ VenueParticipant user = (VenueParticipant) element;
boolean leader = isSessionLeader(user);
boolean provider = isDataProvider(user);
if (leader && provider) {
@@ -139,10 +142,10 @@ public class ParticipantsLabelProvider extends AbstractUserLabelProvider {
@Override
public Color getForeground(Object element) {
- if (!(element instanceof UserId)) {
+ if (!(element instanceof VenueParticipant)) {
return null;
}
- UserId user = ((UserId) element);
+ VenueParticipant user = ((VenueParticipant) element);
RGB rgb = manager.getColorFromUser(user);
if (rgb == null) {
rgb = new RGB(0, 0, 0);
@@ -172,22 +175,22 @@ public class ParticipantsLabelProvider extends AbstractUserLabelProvider {
return connection.getSession(sessionId);
}
- protected boolean isSessionLeader(UserId user) {
+ protected boolean isSessionLeader(VenueParticipant user) {
ISession session = getSession();
if (session instanceof SharedDisplaySession) {
UserId leader = ((SharedDisplaySession) session)
.getCurrentSessionLeader();
- return user.equals(leader);
+ return user.getAlias().equals(leader.getAlias());
}
return false;
}
- protected boolean isDataProvider(UserId user) {
+ protected boolean isDataProvider(VenueParticipant user) {
ISession session = getSession();
if (session instanceof SharedDisplaySession) {
UserId provider = ((SharedDisplaySession) session)
.getCurrentDataProvider();
- return user.equals(provider);
+ return user.getAlias().equals(provider.getAlias());
}
return false;
}
@@ -199,7 +202,7 @@ public class ParticipantsLabelProvider extends AbstractUserLabelProvider {
return null;
}
StringBuilder builder = new StringBuilder(toolTip);
- UserId user = (UserId) element;
+ VenueParticipant user = (VenueParticipant) element;
Presence presence = getPresence(user);
if (presence != null) {
String site = String.valueOf(presence
@@ -228,6 +231,11 @@ public class ParticipantsLabelProvider extends AbstractUserLabelProvider {
// }
}
}
+ if (user.getName() != null) {
+ builder.append("\nJID: ").append(user.getNormalizedId());
+ builder.append("\nDisplay Name: ").append(
+ super.getDisplayName(user));
+ }
return builder.toString();
}
@@ -246,6 +254,19 @@ public class ParticipantsLabelProvider extends AbstractUserLabelProvider {
@Override
protected Presence getPresence(UserId user) {
IVenueSession session = (IVenueSession) getSession();
- return session.getVenue().getPresence(user);
+ return session.getVenue().getPresence((VenueParticipant) user);
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.raytheon.uf.viz.collaboration.ui.AbstractUserLabelProvider#getDisplayName
+ * (com.raytheon.uf.viz.collaboration.comm.provider.user.UserId)
+ */
+ @Override
+ protected String getDisplayName(UserId user) {
+ return user.getAlias();
+ }
+
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/PeerToPeerView.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/PeerToPeerView.java
index 256acb90bb..fbcbe5a078 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/PeerToPeerView.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/PeerToPeerView.java
@@ -48,7 +48,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.actions.PrintLogActionContributionItem;
/**
- * TODO Add Description
+ * UI display for one-on-one chat sessions
*
*
*
@@ -57,6 +57,7 @@ import com.raytheon.uf.viz.collaboration.ui.actions.PrintLogActionContributionIt
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 1, 2012 rferrel Initial creation
+ * Jan 30, 2014 2698 bclement added getDisplayName
*
*
*
@@ -304,4 +305,17 @@ public class PeerToPeerView extends AbstractSessionView implements
+ ", Date: "
+ dateFormatter.format(msgArchive.getCreationTime());
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.viz.collaboration.ui.session.AbstractSessionView#
+ * getDisplayName
+ * (com.raytheon.uf.viz.collaboration.comm.provider.user.UserId)
+ */
+ @Override
+ protected String getDisplayName(UserId userId) {
+ CollaborationConnection conn = CollaborationConnection.getConnection();
+ return conn.getContactsManager().getDisplayName(userId);
+ }
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/SessionFeedView.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/SessionFeedView.java
index 85cffe08e0..be56a86ebc 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/SessionFeedView.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/SessionFeedView.java
@@ -41,6 +41,7 @@ import com.raytheon.uf.viz.collaboration.comm.identity.IMessage;
import com.raytheon.uf.viz.collaboration.comm.identity.info.SiteConfigInformation;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
import com.raytheon.uf.viz.collaboration.ui.Activator;
import com.raytheon.uf.viz.collaboration.ui.SiteColorInformation;
import com.raytheon.uf.viz.collaboration.ui.SiteColorInformation.SiteColor;
@@ -60,6 +61,7 @@ import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants;
* Dec 6, 2013 2561 bclement removed ECF
* Dec 19, 2013 2563 bclement moved participant filter logic to one method
* Jan 08, 2014 2563 bclement changes to match SiteConfigurationManager user sites config
+ * Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
*
*
*
@@ -109,7 +111,7 @@ public class SessionFeedView extends SessionView {
super.initComponents(parent);
colors = SiteConfigurationManager.getSiteColors();
if (colors != null) {
- for (UserId user : session.getVenue().getParticipants()) {
+ for (VenueParticipant user : session.getVenue().getParticipants()) {
setColorForSite(user);
}
} else {
@@ -147,7 +149,8 @@ public class SessionFeedView extends SessionView {
// loop through all the entries in the list so we can set the
// color for all sites corresponding to "selectedSite"
if (site != null) {
- for (UserId user : session.getVenue().getParticipants()) {
+ for (VenueParticipant user : session.getVenue()
+ .getParticipants()) {
setColorForSite(user);
}
}
@@ -254,9 +257,9 @@ public class SessionFeedView extends SessionView {
Object site = null;
if (isHistory) {
site = msg.getSubject();
- } else if (msg.getFrom() instanceof UserId) {
+ } else if (msg.getFrom() instanceof VenueParticipant) {
Presence presence = session.getVenue().getPresence(
- (UserId) msg.getFrom());
+ (VenueParticipant) msg.getFrom());
site = presence.getProperty(SiteConfigInformation.SITE_NAME);
}
@@ -270,8 +273,8 @@ public class SessionFeedView extends SessionView {
@Override
protected void styleAndAppendText(StringBuilder sb, int offset,
String name, UserId userId, String subject, List ranges) {
- if (subject != null) {
- setColorForSite(userId, subject);
+ if (subject != null && userId instanceof VenueParticipant) {
+ setColorForSite((VenueParticipant) userId, subject);
}
super.styleAndAppendText(sb, offset, name, userId, subject, ranges);
}
@@ -285,7 +288,8 @@ public class SessionFeedView extends SessionView {
private String getSelectedSite() {
IStructuredSelection selection = (IStructuredSelection) usersTable
.getSelection();
- UserId selectedEntry = (UserId) selection.getFirstElement();
+ VenueParticipant selectedEntry = (VenueParticipant) selection
+ .getFirstElement();
Presence pres = session.getVenue().getPresence(selectedEntry);
Object selectedSite = pres.getProperty(
SiteConfigInformation.SITE_NAME);
@@ -299,7 +303,7 @@ public class SessionFeedView extends SessionView {
*
* @param user
*/
- private void setColorForSite(UserId user) {
+ private void setColorForSite(VenueParticipant user) {
Presence presence = session.getVenue().getPresence(user);
setColorForSite(user, presence);
}
@@ -310,7 +314,7 @@ public class SessionFeedView extends SessionView {
* @param id
* @param presence
*/
- private void setColorForSite(UserId id, Presence presence) {
+ private void setColorForSite(VenueParticipant id, Presence presence) {
if (presence == null) {
return;
}
@@ -321,7 +325,7 @@ public class SessionFeedView extends SessionView {
}
}
- private void setColorForSite(UserId id, String site) {
+ private void setColorForSite(VenueParticipant id, String site) {
SiteColor siteColor = new SiteColor();
siteColor.setSite(site.toString());
int index = colors.indexOf(siteColor);
@@ -364,7 +368,7 @@ public class SessionFeedView extends SessionView {
* java.lang.String)
*/
@Override
- protected void sendParticipantSystemMessage(UserId participant,
+ protected void sendParticipantSystemMessage(VenueParticipant participant,
String message) {
Presence presence = session.getVenue().getPresence(participant);
Object siteObj = presence.getProperty(SiteConfigInformation.SITE_NAME);
@@ -388,7 +392,7 @@ public class SessionFeedView extends SessionView {
* org.jivesoftware.smack.packet.Presence)
*/
@Override
- protected void participantPresenceUpdated(UserId participant,
+ protected void participantPresenceUpdated(VenueParticipant participant,
Presence presence) {
setColorForSite(participant, presence);
super.participantPresenceUpdated(participant, presence);
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/SessionView.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/SessionView.java
index 8c17024d1c..dda67036d2 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/SessionView.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/SessionView.java
@@ -22,7 +22,6 @@ package com.raytheon.uf.viz.collaboration.ui.session;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
-import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -35,9 +34,6 @@ import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;
@@ -80,8 +76,8 @@ import com.raytheon.uf.viz.collaboration.comm.provider.event.VenueUserEvent;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.session.VenueSession;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
+import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
import com.raytheon.uf.viz.collaboration.display.data.SessionColorManager;
-import com.raytheon.uf.viz.collaboration.ui.actions.PeerToPeerChatAction;
import com.raytheon.uf.viz.collaboration.ui.actions.PrintLogActionContributionItem;
import com.raytheon.uf.viz.core.VizApp;
import com.raytheon.viz.ui.views.CaveWorkbenchPageManager;
@@ -239,25 +235,6 @@ public class SessionView extends AbstractSessionView implements IPrintableView {
}
- @Subscribe
- public void updateUserAlias(UserId id) {
- Collection> entries = (Collection>) usersTable.getInput();
- for (Object obj : entries) {
- if (!(obj instanceof UserId)) {
- statusHandler.error("Unexpected user table input type: "
- + obj.getClass());
- return;
- }
- UserId uid = (UserId) obj;
- if (uid.getFQName().equals(id.getFQName())) {
- // TODO update on roster?
- uid.setAlias(id.getAlias());
- break;
- }
- }
- usersTable.refresh();
- }
-
protected void initColorManager() {
colorManager = new SessionColorManager();
}
@@ -363,23 +340,24 @@ public class SessionView extends AbstractSessionView implements IPrintableView {
UserId c1 = (UserId) e1;
UserId c2 = (UserId) e1;
- return c1.getName().compareTo(c2.getName());
+ return c1.getAlias().compareTo(c2.getAlias());
}
});
ColumnViewerToolTipSupport.enableFor(usersTable, ToolTip.RECREATE);
- usersTable.addDoubleClickListener(new IDoubleClickListener() {
- @Override
- public void doubleClick(DoubleClickEvent event) {
- StructuredSelection selection = (StructuredSelection) usersTable
- .getSelection();
-
- Object o = selection.getFirstElement();
- if (o instanceof UserId) {
- new PeerToPeerChatAction((UserId) o).run();
- }
- }
- });
+ // TODO this needs to be a private chat through the muc
+ // usersTable.addDoubleClickListener(new IDoubleClickListener() {
+ // @Override
+ // public void doubleClick(DoubleClickEvent event) {
+ // StructuredSelection selection = (StructuredSelection) usersTable
+ // .getSelection();
+ //
+ // Object o = selection.getFirstElement();
+ // if (o instanceof UserId) {
+ // new PeerToPeerChatAction((UserId) o).run();
+ // }
+ // }
+ // });
if (session != null) {
usersTable.setInput(session.getVenue().getParticipants());
@@ -471,7 +449,12 @@ public class SessionView extends AbstractSessionView implements IPrintableView {
@Override
protected void styleAndAppendText(StringBuilder sb, int offset,
String name, UserId userId, String subject, List ranges) {
- RGB rgb = colorManager.getColorFromUser(userId);
+ RGB rgb = null;
+ // messages from the venue itself will not be of type VenueParticipant,
+ // they default to black
+ if (userId instanceof VenueParticipant) {
+ rgb = colorManager.getColorFromUser((VenueParticipant) userId);
+ }
if (mappedColors.get(rgb) == null) {
if (rgb == null) {
rgb = new RGB(0, 0, 0);
@@ -608,8 +591,6 @@ public class SessionView extends AbstractSessionView implements IPrintableView {
CollaborationConnection.getConnection().registerEventHandler(this);
session.registerEventHandler(this);
-
- ((VenueSession) session).connectToRoom();
}
/*
@@ -637,7 +618,7 @@ public class SessionView extends AbstractSessionView implements IPrintableView {
final ParticipantEventType type = event.getEventType();
final Presence presence = event.getPresence();
- final UserId participant = event.getParticipant();
+ final VenueParticipant participant = event.getParticipant();
final String description = event.getEventDescription();
VizApp.runAsync(new Runnable() {
@@ -681,7 +662,8 @@ public class SessionView extends AbstractSessionView implements IPrintableView {
*
* @param participant
*/
- protected void participantArrived(UserId participant, String description) {
+ protected void participantArrived(VenueParticipant participant,
+ String description) {
usersTable.setInput(session.getVenue().getParticipants());
usersTable.refresh();
String message = description != null ? description
@@ -694,7 +676,8 @@ public class SessionView extends AbstractSessionView implements IPrintableView {
*
* @param participant
*/
- protected void participantDeparted(UserId participant, String description) {
+ protected void participantDeparted(VenueParticipant participant,
+ String description) {
usersTable.setInput(session.getVenue().getParticipants());
usersTable.refresh();
String message = description != null ? description
@@ -711,13 +694,12 @@ public class SessionView extends AbstractSessionView implements IPrintableView {
* @param participant
* @param message
*/
- protected void sendParticipantSystemMessage(UserId participant,
+ protected void sendParticipantSystemMessage(VenueParticipant participant,
String message) {
CollaborationConnection connection = CollaborationConnection
.getConnection();
if (connection != null) {
- String name = connection.getContactsManager().getDisplayName(
- participant);
+ String name = getDisplayName(participant);
StringBuilder builder = new StringBuilder(name);
builder.append(" ").append(message);
@@ -729,7 +711,7 @@ public class SessionView extends AbstractSessionView implements IPrintableView {
* @param participant
* @param presence
*/
- protected void participantPresenceUpdated(UserId participant,
+ protected void participantPresenceUpdated(VenueParticipant participant,
Presence presence) {
usersTable.refresh();
}
@@ -786,4 +768,16 @@ public class SessionView extends AbstractSessionView implements IPrintableView {
+ ", Date: "
+ dateFormatter.format(msgArchive.getCreationTime());
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.raytheon.uf.viz.collaboration.ui.session.AbstractSessionView#
+ * getDisplayName
+ * (com.raytheon.uf.viz.collaboration.comm.provider.user.UserId)
+ */
+ @Override
+ protected String getDisplayName(UserId userId) {
+ return userId.getAlias();
+ }
}
diff --git a/cots/org.jivesoftware.smack/META-INF/MANIFEST.MF b/cots/org.jivesoftware.smack/META-INF/MANIFEST.MF
index 5803e7befd..72f19f8d8d 100644
--- a/cots/org.jivesoftware.smack/META-INF/MANIFEST.MF
+++ b/cots/org.jivesoftware.smack/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: Smack
Bundle-SymbolicName: org.jivesoftware.smack
Bundle-Version: 3.3.1
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ClassPath: smack.jar,
.,
smackx.jar