Merge "Omaha #3705 added collaboration public room search, bookmarking" into omaha_14.4.1
Former-commit-id:91ba36db75
[formerly550b269370
] [formerlyf6601e4ee1
] [formerly91ba36db75
[formerly550b269370
] [formerlyf6601e4ee1
] [formerly1a24808709
[formerlyf6601e4ee1
[formerly 05a008ed69414e3977998cca45516a736181d5b6]]]] Former-commit-id:1a24808709
Former-commit-id:c14691cba1
[formerlyf3c1ca00d2
] [formerly 024f1c40cc395ad17cece7abc6f869ff6b39b5de [formerly145db4077e
]] Former-commit-id: e83aebdfadbb6cd359c4c1a685edfb2e2319fd36 [formerly17971ea0b6
] Former-commit-id:c9e949c8bd
This commit is contained in:
commit
4b7163ff79
18 changed files with 963 additions and 29 deletions
|
@ -26,6 +26,7 @@ import org.jivesoftware.smack.packet.Presence;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenue;
|
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.invite.VenueInvite;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -55,6 +56,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
|
||||||
* Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
|
* Jan 30, 2014 2698 bclement changed UserId to VenueParticipant
|
||||||
* Mar 06, 2014 2751 bclement added isAdmin()
|
* Mar 06, 2014 2751 bclement added isAdmin()
|
||||||
* Mar 07, 2014 2848 bclement added getVenueName() and hasOtherParticipants()
|
* Mar 07, 2014 2848 bclement added getVenueName() and hasOtherParticipants()
|
||||||
|
* Oct 08, 2014 3705 bclement added getVenueId()
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -76,6 +78,11 @@ public interface IVenueSession extends ISession {
|
||||||
*/
|
*/
|
||||||
public String getVenueName();
|
public String getVenueName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return qualified id of venue on server
|
||||||
|
*/
|
||||||
|
public VenueId getVenueId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a chat message.
|
* Send a chat message.
|
||||||
*
|
*
|
||||||
|
|
|
@ -21,8 +21,11 @@ package com.raytheon.uf.viz.collaboration.comm.provider.connection;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.TreeSet;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
@ -35,6 +38,9 @@ import org.jivesoftware.smack.packet.Message;
|
||||||
import org.jivesoftware.smack.packet.Presence;
|
import org.jivesoftware.smack.packet.Presence;
|
||||||
import org.jivesoftware.smack.packet.XMPPError;
|
import org.jivesoftware.smack.packet.XMPPError;
|
||||||
import org.jivesoftware.smack.provider.ProviderManager;
|
import org.jivesoftware.smack.provider.ProviderManager;
|
||||||
|
import org.jivesoftware.smackx.bookmark.BookmarkManager;
|
||||||
|
import org.jivesoftware.smackx.bookmark.BookmarkedConference;
|
||||||
|
import org.jivesoftware.smackx.muc.HostedRoom;
|
||||||
import org.jivesoftware.smackx.muc.MultiUserChat;
|
import org.jivesoftware.smackx.muc.MultiUserChat;
|
||||||
import org.jivesoftware.smackx.pubsub.PubSubElementType;
|
import org.jivesoftware.smackx.pubsub.PubSubElementType;
|
||||||
import org.jivesoftware.smackx.pubsub.packet.PubSubNamespace;
|
import org.jivesoftware.smackx.pubsub.packet.PubSubNamespace;
|
||||||
|
@ -62,6 +68,8 @@ import com.raytheon.uf.viz.collaboration.comm.packet.SessionPayload;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.packet.SessionPayloadProvider;
|
import com.raytheon.uf.viz.collaboration.comm.packet.SessionPayloadProvider;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.account.AccountManager;
|
import com.raytheon.uf.viz.collaboration.comm.provider.account.AccountManager;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.account.ClientAuthManager;
|
import com.raytheon.uf.viz.collaboration.comm.provider.account.ClientAuthManager;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.event.BookmarkEvent;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.event.BookmarkEvent.Type;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.event.VenueUserEvent;
|
import com.raytheon.uf.viz.collaboration.comm.provider.event.VenueUserEvent;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.session.CreateSessionData;
|
import com.raytheon.uf.viz.collaboration.comm.provider.session.CreateSessionData;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.session.FeedVenueConfigManager;
|
import com.raytheon.uf.viz.collaboration.comm.provider.session.FeedVenueConfigManager;
|
||||||
|
@ -126,6 +134,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
|
||||||
* May 09, 2014 3107 bclement added ability for packet timeout to be set via system properties
|
* May 09, 2014 3107 bclement added ability for packet timeout to be set via system properties
|
||||||
* May 19, 2014 3180 bclement added getJoinedVenueSessions()
|
* May 19, 2014 3180 bclement added getJoinedVenueSessions()
|
||||||
* Jun 16, 2014 3288 bclement feed venue configuration changes
|
* Jun 16, 2014 3288 bclement feed venue configuration changes
|
||||||
|
* Oct 08, 2014 3705 bclement added bookmarks, joinTextOnlyVenue() and getPublicRooms()
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -556,6 +565,27 @@ public class CollaborationConnection implements IEventPublisher {
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Join existing chat room with provided handle
|
||||||
|
*
|
||||||
|
* @param venueId
|
||||||
|
* @param handle
|
||||||
|
* @return
|
||||||
|
* @throws CollaborationException
|
||||||
|
*/
|
||||||
|
public VenueSession joinTextOnlyVenue(VenueId venueId, String handle)
|
||||||
|
throws CollaborationException {
|
||||||
|
VenueSession session = createTextOnlyVenue(venueId, handle);
|
||||||
|
try {
|
||||||
|
session.configureVenue();
|
||||||
|
postEvent(session);
|
||||||
|
return session;
|
||||||
|
} catch (CollaborationException e) {
|
||||||
|
removeSession(session);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if venue exists on server
|
* Check if venue exists on server
|
||||||
*
|
*
|
||||||
|
@ -625,6 +655,29 @@ public class CollaborationConnection implements IEventPublisher {
|
||||||
return sessions.values();
|
return sessions.values();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return list of public chat rooms on server
|
||||||
|
*/
|
||||||
|
public Collection<VenueId> getPublicRooms() {
|
||||||
|
XMPPConnection conn = getXmppConnection();
|
||||||
|
String mucService = VenueId.DEFAULT_SUBDOMAIN + "."
|
||||||
|
+ conn.getServiceName();
|
||||||
|
Collection<HostedRoom> results;
|
||||||
|
try {
|
||||||
|
results = MultiUserChat.getHostedRooms(conn, mucService);
|
||||||
|
} catch (XMPPException e) {
|
||||||
|
statusHandler.error("Problem getting public room list from server",
|
||||||
|
e);
|
||||||
|
results = Collections.emptyList();
|
||||||
|
}
|
||||||
|
Collection<VenueId> rval = new TreeSet<>();
|
||||||
|
for (HostedRoom room : results) {
|
||||||
|
rval.add(new VenueId(room.getJid()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return all IVenueSessions that this user is a participant in
|
* @return all IVenueSessions that this user is a participant in
|
||||||
*/
|
*/
|
||||||
|
@ -682,4 +735,82 @@ public class CollaborationConnection implements IEventPublisher {
|
||||||
return statusHandler;
|
return statusHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return collection of chat rooms bookmarked by user
|
||||||
|
* @throws CollaborationException
|
||||||
|
*/
|
||||||
|
public Collection<VenueId> getBookmarkedRooms()
|
||||||
|
throws CollaborationException {
|
||||||
|
Collection<BookmarkedConference> bookmarkedConferences;
|
||||||
|
try {
|
||||||
|
BookmarkManager bmkManager = BookmarkManager
|
||||||
|
.getBookmarkManager(getXmppConnection());
|
||||||
|
bookmarkedConferences = bmkManager.getBookmarkedConferences();
|
||||||
|
} catch (XMPPException e) {
|
||||||
|
throw new CollaborationException(
|
||||||
|
"Unable to get list of bookmarked rooms from server", e);
|
||||||
|
}
|
||||||
|
List<VenueId> rval = new ArrayList<>(bookmarkedConferences.size());
|
||||||
|
for (BookmarkedConference conf : bookmarkedConferences) {
|
||||||
|
rval.add(new VenueId(conf.getJid()));
|
||||||
|
}
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bookmark room on server
|
||||||
|
*
|
||||||
|
* @param room
|
||||||
|
* @throws CollaborationException
|
||||||
|
*/
|
||||||
|
public void bookmarkRoom(VenueId room) throws CollaborationException {
|
||||||
|
try {
|
||||||
|
BookmarkManager bmkManager = BookmarkManager
|
||||||
|
.getBookmarkManager(getXmppConnection());
|
||||||
|
bmkManager.addBookmarkedConference(room.getName(),
|
||||||
|
room.getFQName(), false, null, null);
|
||||||
|
postEvent(new BookmarkEvent(Type.ADDED, room));
|
||||||
|
} catch (XMPPException e) {
|
||||||
|
throw new CollaborationException("Unable to bookmark room: "
|
||||||
|
+ room.getFQName(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove bookmark for room from server
|
||||||
|
*
|
||||||
|
* @param room
|
||||||
|
* @throws CollaborationException
|
||||||
|
*/
|
||||||
|
public void removeBookmark(VenueId room) throws CollaborationException {
|
||||||
|
try {
|
||||||
|
BookmarkManager bmkManager = BookmarkManager
|
||||||
|
.getBookmarkManager(getXmppConnection());
|
||||||
|
bmkManager.removeBookmarkedConference(room.getFQName());
|
||||||
|
postEvent(new BookmarkEvent(Type.REMOVED, room));
|
||||||
|
} catch (XMPPException e) {
|
||||||
|
throw new CollaborationException(
|
||||||
|
"Unable to remove bookmark for room: " + room.getFQName(),
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find session this user is joined to by venue id
|
||||||
|
*
|
||||||
|
* @param room
|
||||||
|
* @return null if not joined to room
|
||||||
|
*/
|
||||||
|
public IVenueSession getJoinedVenueSession(VenueId room) {
|
||||||
|
IVenueSession rval = null;
|
||||||
|
Collection<IVenueSession> joinedRooms = getJoinedVenueSessions();
|
||||||
|
for (IVenueSession session : joinedRooms) {
|
||||||
|
VenueId vid = session.getVenueId();
|
||||||
|
if (room.equals(vid)) {
|
||||||
|
rval = session;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
/**
|
||||||
|
* 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.event;
|
||||||
|
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event triggered when the user adds or removes a bookmark for a chat room
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Oct 8, 2014 3705 bclement Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author bclement
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public class BookmarkEvent {
|
||||||
|
|
||||||
|
public static enum Type {
|
||||||
|
ADDED, REMOVED
|
||||||
|
};
|
||||||
|
|
||||||
|
private final Type type;
|
||||||
|
|
||||||
|
private final VenueId room;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public BookmarkEvent(Type type, VenueId room) {
|
||||||
|
this.type = type;
|
||||||
|
this.room = room;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the type
|
||||||
|
*/
|
||||||
|
public Type getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the room
|
||||||
|
*/
|
||||||
|
public VenueId getRoom() {
|
||||||
|
return room;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -113,6 +113,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
|
||||||
* Apr 29, 2014 3061 bclement moved invite payload to shared display session
|
* Apr 29, 2014 3061 bclement moved invite payload to shared display session
|
||||||
* May 09, 2014 3107 bclement removed catch from isRoomOwner() so callers know about errors
|
* May 09, 2014 3107 bclement removed catch from isRoomOwner() so callers know about errors
|
||||||
* Jun 16, 2014 3288 bclement changed String venueName to VenueId venueId, added createVenueId()
|
* Jun 16, 2014 3288 bclement changed String venueName to VenueId venueId, added createVenueId()
|
||||||
|
* Oct 08, 2014 3705 bclement aded getVenueId()
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
|
@ -1004,4 +1005,16 @@ public class VenueSession extends BaseSession implements IVenueSession {
|
||||||
venueName);
|
venueName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession#getVenueId
|
||||||
|
* ()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public VenueId getVenueId() {
|
||||||
|
return venueId;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
**/
|
**/
|
||||||
package com.raytheon.uf.viz.collaboration.comm.provider.user;
|
package com.raytheon.uf.viz.collaboration.comm.provider.user;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.util.StringUtils;
|
||||||
|
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
|
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.Tools;
|
import com.raytheon.uf.viz.collaboration.comm.provider.Tools;
|
||||||
|
|
||||||
|
@ -35,6 +37,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.Tools;
|
||||||
* Feb 13, 2014 2751 bclement removed resource, fixed getFQN
|
* Feb 13, 2014 2751 bclement removed resource, fixed getFQN
|
||||||
* May 19, 2014 3180 bclement added isSameVenue() fromString() and hashcode/equals
|
* May 19, 2014 3180 bclement added isSameVenue() fromString() and hashcode/equals
|
||||||
* Jun 16, 2014 3288 bclement added constructors, default subdomain
|
* Jun 16, 2014 3288 bclement added constructors, default subdomain
|
||||||
|
* Oct 08, 2014 3705 bclement added single string constructor, compareTo()
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -42,7 +45,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.Tools;
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class VenueId implements IQualifiedID {
|
public class VenueId implements IQualifiedID, Comparable<VenueId> {
|
||||||
|
|
||||||
public static final String DEFAULT_SUBDOMAIN = "conference";
|
public static final String DEFAULT_SUBDOMAIN = "conference";
|
||||||
|
|
||||||
|
@ -56,6 +59,11 @@ public class VenueId implements IQualifiedID {
|
||||||
public VenueId() {
|
public VenueId() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public VenueId(String jid) {
|
||||||
|
this.name = StringUtils.parseName(jid);
|
||||||
|
this.host = StringUtils.parseServer(jid);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param host
|
* @param host
|
||||||
* @param name
|
* @param name
|
||||||
|
@ -189,4 +197,30 @@ public class VenueId implements IQualifiedID {
|
||||||
rval.setHost(Tools.parseHost(venueId));
|
rval.setHost(Tools.parseHost(venueId));
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see java.lang.Comparable#compareTo(java.lang.Object)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int compareTo(VenueId o) {
|
||||||
|
int rval;
|
||||||
|
if (o == null) {
|
||||||
|
rval = 1;
|
||||||
|
} else if (this.name == null) {
|
||||||
|
if (o.name == null) {
|
||||||
|
rval = 0;
|
||||||
|
} else {
|
||||||
|
rval = -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (o.name == null) {
|
||||||
|
rval = 1;
|
||||||
|
} else {
|
||||||
|
rval = this.name.compareTo(o.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,12 +87,14 @@ 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.identity.event.IRosterChangeEvent;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.event.RosterChangeType;
|
import com.raytheon.uf.viz.collaboration.comm.identity.event.RosterChangeType;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.connection.CollaborationConnection;
|
import com.raytheon.uf.viz.collaboration.comm.provider.connection.CollaborationConnection;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.event.BookmarkEvent;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.event.UserPresenceChangedEvent;
|
import com.raytheon.uf.viz.collaboration.comm.provider.event.UserPresenceChangedEvent;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.ContactsManager;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.ContactsManager;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.ContactsManager.GroupListener;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.ContactsManager.GroupListener;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.SharedGroup;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.SharedGroup;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.AddNotifierAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.AddNotifierAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.AddToGroupAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.AddToGroupAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.ArchiveViewerAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.ArchiveViewerAction;
|
||||||
|
@ -106,10 +108,12 @@ import com.raytheon.uf.viz.collaboration.ui.actions.CreateSessionAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.DeleteGroupAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.DeleteGroupAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.DisplayFeedAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.DisplayFeedAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.InviteAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.InviteAction;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.actions.JoinRoomAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.LinkToEditorAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.LinkToEditorAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.LoginAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.LoginAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.LogoutAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.LogoutAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.PeerToPeerChatAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.PeerToPeerChatAction;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.actions.RemoveBookmarkAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.RemoveFromGroupAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.RemoveFromGroupAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.RemoveFromRosterAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.RemoveFromRosterAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.SendSubReqAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.SendSubReqAction;
|
||||||
|
@ -117,6 +121,7 @@ import com.raytheon.uf.viz.collaboration.ui.actions.ShowVenueAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.actions.UserSearchAction;
|
import com.raytheon.uf.viz.collaboration.ui.actions.UserSearchAction;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.data.AlertWordWrapper;
|
import com.raytheon.uf.viz.collaboration.ui.data.AlertWordWrapper;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationGroupContainer;
|
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationGroupContainer;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.data.PublicRoomContainer;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
|
import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.notifier.NotifierTools;
|
import com.raytheon.uf.viz.collaboration.ui.notifier.NotifierTools;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants;
|
import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants;
|
||||||
|
@ -154,6 +159,7 @@ import com.raytheon.viz.ui.views.CaveWorkbenchPageManager;
|
||||||
* Apr 11, 2014 2903 bclement login action changes, removed server disconnect listener,
|
* Apr 11, 2014 2903 bclement login action changes, removed server disconnect listener,
|
||||||
* added static utility method to show view
|
* added static utility method to show view
|
||||||
* May 19, 2014 3180 bclement fixed inviting multiple users to session
|
* May 19, 2014 3180 bclement fixed inviting multiple users to session
|
||||||
|
* Oct 08, 2014 3705 bclement added room search and bookmarking
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -192,6 +198,8 @@ public class CollaborationGroupView extends CaveFloatingView implements
|
||||||
|
|
||||||
private LogoutAction logOut;
|
private LogoutAction logOut;
|
||||||
|
|
||||||
|
private Action roomSearchAction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param parent
|
* @param parent
|
||||||
*/
|
*/
|
||||||
|
@ -307,6 +315,15 @@ public class CollaborationGroupView extends CaveFloatingView implements
|
||||||
// this is either on or off, so it is a toggle
|
// this is either on or off, so it is a toggle
|
||||||
displayFeedAction = new DisplayFeedAction();
|
displayFeedAction = new DisplayFeedAction();
|
||||||
|
|
||||||
|
roomSearchAction = new Action("Public Room Search...",
|
||||||
|
IconUtil.getImageDescriptor(Activator.getDefault().getBundle(),
|
||||||
|
"spyglass.gif")) {
|
||||||
|
public void run() {
|
||||||
|
new RoomSearchDialog(Display.getCurrent().getActiveShell())
|
||||||
|
.open();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
this.disableOrEnableToolbarActions();
|
this.disableOrEnableToolbarActions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -341,6 +358,7 @@ public class CollaborationGroupView extends CaveFloatingView implements
|
||||||
|
|
||||||
private void createMenu(IMenuManager mgr) {
|
private void createMenu(IMenuManager mgr) {
|
||||||
mgr.add(new UserSearchAction());
|
mgr.add(new UserSearchAction());
|
||||||
|
mgr.add(roomSearchAction);
|
||||||
mgr.add(new Separator());
|
mgr.add(new Separator());
|
||||||
mgr.add(new ChangeFontAction());
|
mgr.add(new ChangeFontAction());
|
||||||
mgr.add(new ChangeStatusAction());
|
mgr.add(new ChangeStatusAction());
|
||||||
|
@ -413,6 +431,9 @@ public class CollaborationGroupView extends CaveFloatingView implements
|
||||||
if (o instanceof SessionGroupContainer) {
|
if (o instanceof SessionGroupContainer) {
|
||||||
manager.add(createSessionAction);
|
manager.add(createSessionAction);
|
||||||
return;
|
return;
|
||||||
|
} else if (o instanceof PublicRoomContainer){
|
||||||
|
manager.add(roomSearchAction);
|
||||||
|
return;
|
||||||
} else if (o instanceof IVenueSession) {
|
} else if (o instanceof IVenueSession) {
|
||||||
manager.add(new ShowVenueAction((IVenueSession) o));
|
manager.add(new ShowVenueAction((IVenueSession) o));
|
||||||
manager.add(new ArchiveViewerAction((IVenueSession) o));
|
manager.add(new ArchiveViewerAction((IVenueSession) o));
|
||||||
|
@ -458,6 +479,11 @@ public class CollaborationGroupView extends CaveFloatingView implements
|
||||||
renameAction.setId(group.getName());
|
renameAction.setId(group.getName());
|
||||||
manager.add(renameAction);
|
manager.add(renameAction);
|
||||||
}
|
}
|
||||||
|
} else if (o instanceof VenueId) {
|
||||||
|
VenueId venue = (VenueId) o;
|
||||||
|
manager.add(new JoinRoomAction(venue, false));
|
||||||
|
manager.add(new JoinRoomAction(venue, true));
|
||||||
|
manager.add(new RemoveBookmarkAction(venue));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -515,6 +541,8 @@ public class CollaborationGroupView extends CaveFloatingView implements
|
||||||
new PeerToPeerChatAction(user).run();
|
new PeerToPeerChatAction(user).run();
|
||||||
} else if (o instanceof IVenueSession) {
|
} else if (o instanceof IVenueSession) {
|
||||||
new ShowVenueAction((IVenueSession) o).run();
|
new ShowVenueAction((IVenueSession) o).run();
|
||||||
|
} else if (o instanceof VenueId) {
|
||||||
|
new JoinRoomAction((VenueId) o, false).run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -913,6 +941,11 @@ public class CollaborationGroupView extends CaveFloatingView implements
|
||||||
refreshUsersTreeViewerAsync(topLevel.getSessionGroup());
|
refreshUsersTreeViewerAsync(topLevel.getSessionGroup());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void handleBookmarkEvent(BookmarkEvent event) {
|
||||||
|
refreshUsersTreeViewerAsync(topLevel.getPublicRoomGroup());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enables or disables the toolbar buttons based on whether or not the user
|
* Enables or disables the toolbar buttons based on whether or not the user
|
||||||
* is connected to the xmpp server.
|
* is connected to the xmpp server.
|
||||||
|
|
|
@ -0,0 +1,183 @@
|
||||||
|
/**
|
||||||
|
* 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.ui;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import org.eclipse.jface.action.IMenuListener;
|
||||||
|
import org.eclipse.jface.action.IMenuManager;
|
||||||
|
import org.eclipse.jface.action.MenuManager;
|
||||||
|
import org.eclipse.jface.layout.TableColumnLayout;
|
||||||
|
import org.eclipse.jface.viewers.ColumnWeightData;
|
||||||
|
import org.eclipse.swt.SWT;
|
||||||
|
import org.eclipse.swt.events.SelectionAdapter;
|
||||||
|
import org.eclipse.swt.events.SelectionEvent;
|
||||||
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
import org.eclipse.swt.layout.RowData;
|
||||||
|
import org.eclipse.swt.layout.RowLayout;
|
||||||
|
import org.eclipse.swt.widgets.Button;
|
||||||
|
import org.eclipse.swt.widgets.Composite;
|
||||||
|
import org.eclipse.swt.widgets.Menu;
|
||||||
|
import org.eclipse.swt.widgets.Shell;
|
||||||
|
import org.eclipse.swt.widgets.Table;
|
||||||
|
import org.eclipse.swt.widgets.TableColumn;
|
||||||
|
import org.eclipse.swt.widgets.TableItem;
|
||||||
|
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.connection.CollaborationConnection;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.actions.AddBookmarkAction;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.actions.JoinRoomAction;
|
||||||
|
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dialog for finding public chat rooms on server
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Oct 8, 2014 3705 bclement Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author bclement
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public class RoomSearchDialog extends CaveSWTDialog {
|
||||||
|
|
||||||
|
private Table resultTable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param parentShell
|
||||||
|
*/
|
||||||
|
public RoomSearchDialog(Shell parentShell) {
|
||||||
|
super(parentShell);
|
||||||
|
setText("Room Search");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* com.raytheon.viz.ui.dialogs.CaveSWTDialogBase#initializeComponents(org
|
||||||
|
* .eclipse.swt.widgets.Shell)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void initializeComponents(Shell shell) {
|
||||||
|
initializeResultsTable(shell);
|
||||||
|
initializeButtonBar(shell);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeResultsTable(Shell shell) {
|
||||||
|
Composite tableComp = new Composite(shell, SWT.NONE);
|
||||||
|
GridData gridData = new GridData(500, 200);
|
||||||
|
gridData.horizontalAlignment = SWT.FILL;
|
||||||
|
gridData.verticalAlignment = SWT.FILL;
|
||||||
|
gridData.grabExcessHorizontalSpace = true;
|
||||||
|
gridData.grabExcessVerticalSpace = true;
|
||||||
|
tableComp.setLayoutData(gridData);
|
||||||
|
resultTable = new Table(tableComp, SWT.BORDER | SWT.V_SCROLL
|
||||||
|
| SWT.H_SCROLL | SWT.MULTI | SWT.FULL_SELECTION);
|
||||||
|
resultTable.setHeaderVisible(true);
|
||||||
|
resultTable.setLinesVisible(true);
|
||||||
|
TableColumn nameColumn = new TableColumn(resultTable, SWT.LEFT);
|
||||||
|
nameColumn.setText("Room Name");
|
||||||
|
TableColumn idColumn = new TableColumn(resultTable, SWT.LEFT);
|
||||||
|
idColumn.setText("Service");
|
||||||
|
|
||||||
|
TableColumnLayout tcl = new TableColumnLayout();
|
||||||
|
tableComp.setLayout(tcl);
|
||||||
|
tcl.setColumnData(nameColumn, new ColumnWeightData(40));
|
||||||
|
tcl.setColumnData(idColumn, new ColumnWeightData(60));
|
||||||
|
|
||||||
|
MenuManager menuMgr = new MenuManager();
|
||||||
|
menuMgr.setRemoveAllWhenShown(true);
|
||||||
|
menuMgr.addMenuListener(new IMenuListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void menuAboutToShow(IMenuManager manager) {
|
||||||
|
fillContextMenu(manager);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
Menu menu = menuMgr.createContextMenu(resultTable);
|
||||||
|
resultTable.setMenu(menu);
|
||||||
|
search();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeButtonBar(Shell shell) {
|
||||||
|
Composite buttonComp = new Composite(shell, SWT.NONE);
|
||||||
|
buttonComp.setLayoutData(new GridData(SWT.RIGHT, SWT.NONE, false,
|
||||||
|
false, 1, 1));
|
||||||
|
RowLayout layout = new RowLayout(SWT.HORIZONTAL);
|
||||||
|
layout.pack = false;
|
||||||
|
buttonComp.setLayout(layout);
|
||||||
|
|
||||||
|
Button closeButton = new Button(buttonComp, SWT.PUSH);
|
||||||
|
closeButton.setText("Close");
|
||||||
|
closeButton.addSelectionListener(new SelectionAdapter() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void widgetSelected(SelectionEvent e) {
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
closeButton.setLayoutData(new RowData(90, SWT.DEFAULT));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillContextMenu(IMenuManager manager) {
|
||||||
|
TableItem[] selection = resultTable.getSelection();
|
||||||
|
if (selection == null || selection.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
VenueId[] rooms = new VenueId[selection.length];
|
||||||
|
for (int i = 0; i < rooms.length; i += 1) {
|
||||||
|
rooms[i] = (VenueId) selection[i].getData();
|
||||||
|
}
|
||||||
|
if (rooms.length == 1) {
|
||||||
|
manager.add(new JoinRoomAction(rooms[0], false));
|
||||||
|
manager.add(new JoinRoomAction(rooms[0], true));
|
||||||
|
}
|
||||||
|
manager.add(new AddBookmarkAction(rooms));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void search() {
|
||||||
|
CollaborationConnection conn = CollaborationConnection.getConnection();
|
||||||
|
Collection<VenueId> results = conn.getPublicRooms();
|
||||||
|
resultTable.removeAll();
|
||||||
|
if (results.size() > 0) {
|
||||||
|
for (VenueId room : results) {
|
||||||
|
TableItem ti = new TableItem(resultTable, SWT.NONE);
|
||||||
|
ti.setText(0, room.getName());
|
||||||
|
ti.setText(1, room.getHost());
|
||||||
|
ti.setData(room);
|
||||||
|
}
|
||||||
|
resultTable.setEnabled(true);
|
||||||
|
} else {
|
||||||
|
TableItem ti = new TableItem(resultTable, SWT.NONE);
|
||||||
|
ti.setText("No rooms found.");
|
||||||
|
resultTable.setEnabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -35,7 +35,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.connection.CollaborationC
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.SharedGroup;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.SharedGroup;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationGroupContainer;
|
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationGroupContainer;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
|
import com.raytheon.uf.viz.collaboration.ui.data.TreeObjectContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides access to contacts list tree
|
* Provides access to contacts list tree
|
||||||
|
@ -51,6 +51,7 @@ import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
|
||||||
* Jan 24, 2014 2701 bclement removed local groups, added shared groups
|
* Jan 24, 2014 2701 bclement removed local groups, added shared groups
|
||||||
* Jan 27, 2014 2700 bclement added support roster entries
|
* Jan 27, 2014 2700 bclement added support roster entries
|
||||||
* Apr 24, 2014 3070 bclement removed check for hasInteraction() from group entries
|
* Apr 24, 2014 3070 bclement removed check for hasInteraction() from group entries
|
||||||
|
* Oct 08, 2014 3705 bclement replaced checks for SessionGroupContainer with TreeObjectContainer
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -93,9 +94,9 @@ public class UsersTreeContentProvider implements ITreeContentProvider {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Object[] getElements(Object inputElement) {
|
public Object[] getElements(Object inputElement) {
|
||||||
if (inputElement instanceof SessionGroupContainer) {
|
if (inputElement instanceof TreeObjectContainer) {
|
||||||
SessionGroupContainer group = (SessionGroupContainer) inputElement;
|
TreeObjectContainer cont = (TreeObjectContainer) inputElement;
|
||||||
return group.getObjects().toArray();
|
return cont.getObjects();
|
||||||
} else if (inputElement instanceof CollaborationGroupContainer) {
|
} else if (inputElement instanceof CollaborationGroupContainer) {
|
||||||
CollaborationGroupContainer cont = (CollaborationGroupContainer) inputElement;
|
CollaborationGroupContainer cont = (CollaborationGroupContainer) inputElement;
|
||||||
return cont.getObjects().toArray();
|
return cont.getObjects().toArray();
|
||||||
|
@ -115,9 +116,9 @@ public class UsersTreeContentProvider implements ITreeContentProvider {
|
||||||
public Object[] getChildren(Object parentElement) {
|
public Object[] getChildren(Object parentElement) {
|
||||||
// the only things that can have children are the sessions item or the
|
// the only things that can have children are the sessions item or the
|
||||||
// groups items
|
// groups items
|
||||||
if (parentElement instanceof SessionGroupContainer) {
|
if (parentElement instanceof TreeObjectContainer) {
|
||||||
SessionGroupContainer cont = (SessionGroupContainer) parentElement;
|
TreeObjectContainer cont = (TreeObjectContainer) parentElement;
|
||||||
return cont.getObjects().toArray();
|
return cont.getObjects();
|
||||||
} else if (parentElement instanceof RosterGroup) {
|
} else if (parentElement instanceof RosterGroup) {
|
||||||
RosterGroup group = (RosterGroup) parentElement;
|
RosterGroup group = (RosterGroup) parentElement;
|
||||||
return getRosterChildren(group.getEntries());
|
return getRosterChildren(group.getEntries());
|
||||||
|
@ -177,9 +178,9 @@ public class UsersTreeContentProvider implements ITreeContentProvider {
|
||||||
} else if (element instanceof SharedGroup) {
|
} else if (element instanceof SharedGroup) {
|
||||||
SharedGroup group = (SharedGroup) element;
|
SharedGroup group = (SharedGroup) element;
|
||||||
hasChildren = rosterHasChildren(group.getEntries());
|
hasChildren = rosterHasChildren(group.getEntries());
|
||||||
} else if (element instanceof SessionGroupContainer) {
|
} else if (element instanceof TreeObjectContainer) {
|
||||||
SessionGroupContainer cont = (SessionGroupContainer) element;
|
TreeObjectContainer cont = (TreeObjectContainer) element;
|
||||||
if (cont.getObjects() != null && cont.getObjects().size() > 0) {
|
if (cont.getObjects() != null && cont.getObjects().length > 0) {
|
||||||
hasChildren = true;
|
hasChildren = true;
|
||||||
} else {
|
} else {
|
||||||
hasChildren = false;
|
hasChildren = false;
|
||||||
|
|
|
@ -43,7 +43,8 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.ContactsManager;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.SharedGroup;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.SharedGroup;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.data.TreeObjectContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides contacts list UI elements with icons, text, tooltips, etc
|
* Provides contacts list UI elements with icons, text, tooltips, etc
|
||||||
|
@ -64,6 +65,7 @@ import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
|
||||||
* Feb 17, 2014 2751 bclement added block image logic to userLabelProvider
|
* Feb 17, 2014 2751 bclement added block image logic to userLabelProvider
|
||||||
* Mar 06, 2014 2848 bclement get venueName directly from session
|
* Mar 06, 2014 2848 bclement get venueName directly from session
|
||||||
* Jun 12, 2014 3267 bclement fixed missing null-check for outdated UI info
|
* Jun 12, 2014 3267 bclement fixed missing null-check for outdated UI info
|
||||||
|
* Oct 08, 2014 3705 bclement replaced checks for SessionGroupContainer with TreeObjectContainer
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -164,9 +166,9 @@ public class UsersTreeLabelProvider extends ColumnLabelProvider {
|
||||||
key = "shared_group";
|
key = "shared_group";
|
||||||
} else if (element instanceof IVenueSession) {
|
} else if (element instanceof IVenueSession) {
|
||||||
// key = "session_group";
|
// key = "session_group";
|
||||||
} else if (element instanceof SessionGroupContainer) {
|
} else if (element instanceof TreeObjectContainer) {
|
||||||
key = "session_group";
|
key = ((TreeObjectContainer) element).getIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (imageMap.get(key) == null && !key.equals("")) {
|
if (imageMap.get(key) == null && !key.equals("")) {
|
||||||
imageMap.put(key, CollaborationUtils.getNodeImage(key));
|
imageMap.put(key, CollaborationUtils.getNodeImage(key));
|
||||||
|
@ -182,8 +184,8 @@ public class UsersTreeLabelProvider extends ColumnLabelProvider {
|
||||||
return ((SharedGroup) element).getName();
|
return ((SharedGroup) element).getName();
|
||||||
} else if (element instanceof RosterEntry) {
|
} else if (element instanceof RosterEntry) {
|
||||||
return userLabelProvider.getText((RosterEntry) element);
|
return userLabelProvider.getText((RosterEntry) element);
|
||||||
} else if (element instanceof SessionGroupContainer) {
|
} else if (element instanceof TreeObjectContainer) {
|
||||||
return "Active Sessions";
|
return ((TreeObjectContainer) element).getLabel();
|
||||||
} else if (element instanceof UserId) {
|
} else if (element instanceof UserId) {
|
||||||
UserId user = (UserId) element;
|
UserId user = (UserId) element;
|
||||||
String fullname = userLabelProvider.getText(element);
|
String fullname = userLabelProvider.getText(element);
|
||||||
|
@ -201,6 +203,8 @@ public class UsersTreeLabelProvider extends ColumnLabelProvider {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return venue.getVenueName();
|
return venue.getVenueName();
|
||||||
|
} else if (element instanceof VenueId) {
|
||||||
|
return ((VenueId) element).getName();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -208,7 +212,7 @@ public class UsersTreeLabelProvider extends ColumnLabelProvider {
|
||||||
@Override
|
@Override
|
||||||
public Font getFont(Object element) {
|
public Font getFont(Object element) {
|
||||||
if (element instanceof RosterGroup || element instanceof SharedGroup
|
if (element instanceof RosterGroup || element instanceof SharedGroup
|
||||||
|| element instanceof SessionGroupContainer) {
|
|| element instanceof TreeObjectContainer) {
|
||||||
// for this case do nothing, as it is not the top level of
|
// for this case do nothing, as it is not the top level of
|
||||||
// session groups
|
// session groups
|
||||||
if (boldFont == null) {
|
if (boldFont == null) {
|
||||||
|
|
|
@ -28,6 +28,8 @@ import org.jivesoftware.smack.RosterGroup;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
|
import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.SharedGroup;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.SharedGroup;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.data.PublicRoomContainer;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
|
import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,6 +44,7 @@ import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
|
||||||
* Mar 1, 2012 rferrel Initial creation
|
* Mar 1, 2012 rferrel Initial creation
|
||||||
* Dec 6, 2013 2561 bclement removed ECF
|
* Dec 6, 2013 2561 bclement removed ECF
|
||||||
* Jan 24, 2014 2701 bclement removed local groups, added shared groups
|
* Jan 24, 2014 2701 bclement removed local groups, added shared groups
|
||||||
|
* Oct 08, 2014 3705 bclement added public rooms (venue ids)
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -74,6 +77,15 @@ public class UsersTreeViewerSorter extends ViewerSorter {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* bookmarked rooms next */
|
||||||
|
if (e1 instanceof PublicRoomContainer) {
|
||||||
|
if ((e2 instanceof PublicRoomContainer) == false) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else if (e2 instanceof PublicRoomContainer) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// Groups before users.
|
// Groups before users.
|
||||||
if (e1 instanceof SharedGroup) {
|
if (e1 instanceof SharedGroup) {
|
||||||
if (!(e2 instanceof SharedGroup)) {
|
if (!(e2 instanceof SharedGroup)) {
|
||||||
|
@ -129,6 +141,10 @@ public class UsersTreeViewerSorter extends ViewerSorter {
|
||||||
((RosterGroup) e2).getName());
|
((RosterGroup) e2).getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (e1 instanceof VenueId && e2 instanceof VenueId) {
|
||||||
|
return ((VenueId) e1).compareTo((VenueId) e2);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
/**
|
||||||
|
* 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.ui.actions;
|
||||||
|
|
||||||
|
import org.eclipse.jface.action.Action;
|
||||||
|
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.connection.CollaborationConnection;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.Activator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds bookmarks for public chatrooms
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Oct 8, 2014 3705 bclement Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author bclement
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public class AddBookmarkAction extends Action {
|
||||||
|
|
||||||
|
private final VenueId[] rooms;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public AddBookmarkAction(VenueId... rooms) {
|
||||||
|
super("Add Bookmark");
|
||||||
|
this.rooms = rooms;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see org.eclipse.jface.action.Action#run()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
CollaborationConnection connection = CollaborationConnection
|
||||||
|
.getConnection();
|
||||||
|
if (connection != null) {
|
||||||
|
for (VenueId room : rooms) {
|
||||||
|
try {
|
||||||
|
connection.bookmarkRoom(room);
|
||||||
|
} catch (CollaborationException e) {
|
||||||
|
Activator.statusHandler.error("Unable to bookmark room: "
|
||||||
|
+ room.getFQName(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -71,6 +71,7 @@ import com.raytheon.viz.ui.views.CaveWorkbenchPageManager;
|
||||||
* Apr 10, 2014 2937 bgonzale Connect to the venue after the feed view is available
|
* Apr 10, 2014 2937 bgonzale Connect to the venue after the feed view is available
|
||||||
* to display messages.
|
* to display messages.
|
||||||
* Jun 16, 2014 3288 bclement feed venue configuration changes
|
* Jun 16, 2014 3288 bclement feed venue configuration changes
|
||||||
|
* Oct 08, 2014 3705 bclement moved venue joining code to CollaborationConnection
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -133,14 +134,11 @@ public class DisplayFeedAction extends Action {
|
||||||
String defaultHandle = HandleUtil.getDefaultHandle();
|
String defaultHandle = HandleUtil.getDefaultHandle();
|
||||||
FeedVenueConfig config = FeedVenueConfigManager.getConfig();
|
FeedVenueConfig config = FeedVenueConfigManager.getConfig();
|
||||||
VenueId venueId = createVenueId(config);
|
VenueId venueId = createVenueId(config);
|
||||||
VenueSession session = connection.createTextOnlyVenue(venueId,
|
|
||||||
defaultHandle);
|
|
||||||
try {
|
try {
|
||||||
session.configureVenue();
|
VenueSession session = connection.joinTextOnlyVenue(venueId,
|
||||||
connection.postEvent(session);
|
defaultHandle);
|
||||||
return session;
|
return session;
|
||||||
} catch (CollaborationException e) {
|
} catch (CollaborationException e) {
|
||||||
connection.removeSession(session);
|
|
||||||
final String msg = e.getLocalizedMessage()
|
final String msg = e.getLocalizedMessage()
|
||||||
+ "\n\nDefault handle options can be set in the Collaboration Preferences page.";
|
+ "\n\nDefault handle options can be set in the Collaboration Preferences page.";
|
||||||
VizApp.runAsync(new Runnable() {
|
VizApp.runAsync(new Runnable() {
|
||||||
|
|
|
@ -0,0 +1,136 @@
|
||||||
|
/**
|
||||||
|
* 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.ui.actions;
|
||||||
|
|
||||||
|
import org.eclipse.jface.action.Action;
|
||||||
|
import org.eclipse.jface.dialogs.InputDialog;
|
||||||
|
import org.eclipse.jface.dialogs.MessageDialog;
|
||||||
|
import org.eclipse.jface.window.Window;
|
||||||
|
import org.eclipse.swt.widgets.Display;
|
||||||
|
import org.eclipse.swt.widgets.Shell;
|
||||||
|
import org.eclipse.ui.IWorkbenchPage;
|
||||||
|
import org.eclipse.ui.PartInitException;
|
||||||
|
|
||||||
|
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||||
|
import com.raytheon.uf.common.status.UFStatus;
|
||||||
|
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.provider.connection.CollaborationConnection;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.session.VenueSession;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.prefs.HandleUtil;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.session.SessionView;
|
||||||
|
import com.raytheon.viz.ui.views.CaveWorkbenchPageManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Action for joining a public chat room on server
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Oct 8, 2014 3705 bclement Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author bclement
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public class JoinRoomAction extends Action {
|
||||||
|
|
||||||
|
private static final IUFStatusHandler log = UFStatus
|
||||||
|
.getHandler(JoinRoomAction.class);
|
||||||
|
|
||||||
|
private final boolean promptForHandle;
|
||||||
|
|
||||||
|
private final VenueId room;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public JoinRoomAction(VenueId room, boolean promptForHandle) {
|
||||||
|
super(promptForHandle ? "Join with Custom Handle"
|
||||||
|
: "Join with Default Handle");
|
||||||
|
this.promptForHandle = promptForHandle;
|
||||||
|
this.room = room;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see org.eclipse.jface.action.Action#run()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
CollaborationConnection connection = CollaborationConnection
|
||||||
|
.getConnection();
|
||||||
|
IVenueSession joinedVenueSession = connection
|
||||||
|
.getJoinedVenueSession(room);
|
||||||
|
if (joinedVenueSession != null) {
|
||||||
|
openExistingSession(joinedVenueSession);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String handle = HandleUtil.getDefaultHandle();
|
||||||
|
if (promptForHandle) {
|
||||||
|
Shell shell = new Shell(Display.getCurrent());
|
||||||
|
InputDialog dlg = new InputDialog(shell, "Join Room",
|
||||||
|
"Enter handle for room: " + room.getName(), handle, null);
|
||||||
|
if (dlg.open() == Window.OK) {
|
||||||
|
handle = dlg.getValue();
|
||||||
|
} else {
|
||||||
|
/* user cancelled the dialog, abort joining the room */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (connection != null) {
|
||||||
|
try {
|
||||||
|
VenueSession session = connection.joinTextOnlyVenue(room,
|
||||||
|
handle);
|
||||||
|
CaveWorkbenchPageManager page = CaveWorkbenchPageManager
|
||||||
|
.getActiveInstance();
|
||||||
|
page.showView(SessionView.ID, session.getSessionId(),
|
||||||
|
IWorkbenchPage.VIEW_ACTIVATE);
|
||||||
|
session.connectToRoom();
|
||||||
|
} catch (CollaborationException | PartInitException e) {
|
||||||
|
log.error("Unable to join room " + room.getFQName(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openExistingSession(IVenueSession session) {
|
||||||
|
if (promptForHandle) {
|
||||||
|
Shell shell = new Shell(Display.getCurrent());
|
||||||
|
/* we are already in the room, prompt user before continuing */
|
||||||
|
if (!MessageDialog.openQuestion(shell, "Already In Room",
|
||||||
|
"Already joined to room '" + room.getName()
|
||||||
|
+ "' with handle '"
|
||||||
|
+ session.getUserID().getHandle()
|
||||||
|
+ "'. Open Session?")) {
|
||||||
|
/* user aborted */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
new ShowVenueAction(session).run();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
/**
|
||||||
|
* 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.ui.actions;
|
||||||
|
|
||||||
|
import org.eclipse.jface.action.Action;
|
||||||
|
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.connection.CollaborationConnection;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.Activator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove bookmark for public chat room on server
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Oct 8, 2014 3705 bclement Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author bclement
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public class RemoveBookmarkAction extends Action {
|
||||||
|
|
||||||
|
private final VenueId[] rooms;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public RemoveBookmarkAction(VenueId... rooms) {
|
||||||
|
super("Remove Bookmark");
|
||||||
|
this.rooms = rooms;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see org.eclipse.jface.action.Action#run()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
CollaborationConnection connection = CollaborationConnection
|
||||||
|
.getConnection();
|
||||||
|
if (connection != null) {
|
||||||
|
for (VenueId room : rooms) {
|
||||||
|
try {
|
||||||
|
connection.removeBookmark(room);
|
||||||
|
} catch (CollaborationException e) {
|
||||||
|
Activator.statusHandler.error(
|
||||||
|
"Unable to remove bookmark for room: "
|
||||||
|
+ room.getFQName(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -39,6 +39,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.ContactsManager;
|
||||||
* Apr 23, 2012 mnash Initial creation
|
* Apr 23, 2012 mnash Initial creation
|
||||||
* Dec 20, 2013 2563 bclement added items from server roster not in groups
|
* Dec 20, 2013 2563 bclement added items from server roster not in groups
|
||||||
* Jan 24, 2014 2701 bclement removed local groups, added shared groups
|
* Jan 24, 2014 2701 bclement removed local groups, added shared groups
|
||||||
|
* Oct 08, 2014 3705 bclement added public room group
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -48,7 +49,9 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.ContactsManager;
|
||||||
|
|
||||||
public class CollaborationGroupContainer {
|
public class CollaborationGroupContainer {
|
||||||
|
|
||||||
private SessionGroupContainer sessionGroup = new SessionGroupContainer();
|
private final SessionGroupContainer sessionGroup = new SessionGroupContainer();
|
||||||
|
|
||||||
|
private final PublicRoomContainer publicRoomGroup = new PublicRoomContainer();
|
||||||
|
|
||||||
public CollaborationGroupContainer() {
|
public CollaborationGroupContainer() {
|
||||||
}
|
}
|
||||||
|
@ -67,6 +70,7 @@ public class CollaborationGroupContainer {
|
||||||
List<Object> result = new ArrayList<Object>();
|
List<Object> result = new ArrayList<Object>();
|
||||||
result.add(connection.getUser());
|
result.add(connection.getUser());
|
||||||
result.add(sessionGroup);
|
result.add(sessionGroup);
|
||||||
|
result.add(publicRoomGroup);
|
||||||
ContactsManager contactsManager = connection.getContactsManager();
|
ContactsManager contactsManager = connection.getContactsManager();
|
||||||
result.addAll(contactsManager.getSharedGroups());
|
result.addAll(contactsManager.getSharedGroups());
|
||||||
result.addAll(contactsManager.getGroups());
|
result.addAll(contactsManager.getGroups());
|
||||||
|
@ -83,4 +87,11 @@ public class CollaborationGroupContainer {
|
||||||
return sessionGroup;
|
return sessionGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the publicRoomGroup
|
||||||
|
*/
|
||||||
|
public PublicRoomContainer getPublicRoomGroup() {
|
||||||
|
return publicRoomGroup;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
/**
|
||||||
|
* 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.ui.data;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.connection.CollaborationConnection;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueId;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.Activator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contributes bookmarked public rooms to the group view
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Oct 8, 2014 3705 bclement Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author bclement
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public class PublicRoomContainer extends TreeObjectContainer {
|
||||||
|
|
||||||
|
public PublicRoomContainer() {
|
||||||
|
super("Bookmarked Rooms", "session_group");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object[] getObjects() {
|
||||||
|
CollaborationConnection connection = CollaborationConnection
|
||||||
|
.getConnection();
|
||||||
|
if (connection == null) {
|
||||||
|
return new Object[0];
|
||||||
|
}
|
||||||
|
Collection<VenueId> bookmarkedRooms;
|
||||||
|
try {
|
||||||
|
bookmarkedRooms = connection.getBookmarkedRooms();
|
||||||
|
} catch (CollaborationException e) {
|
||||||
|
Activator.statusHandler.error(
|
||||||
|
"Unable to get bookmarked rooms from server", e);
|
||||||
|
bookmarkedRooms = Collections.emptyList();
|
||||||
|
}
|
||||||
|
return bookmarkedRooms.toArray(new Object[0]);
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,7 +21,6 @@ package com.raytheon.uf.viz.collaboration.ui.data;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.ISession;
|
import com.raytheon.uf.viz.collaboration.comm.identity.ISession;
|
||||||
|
@ -39,19 +38,24 @@ import com.raytheon.uf.viz.collaboration.comm.provider.connection.CollaborationC
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Mar 6, 2012 rferrel Initial creation
|
* Mar 6, 2012 rferrel Initial creation
|
||||||
* Jan 28, 2014 2698 bclement removed venue info
|
* Jan 28, 2014 2698 bclement removed venue info
|
||||||
|
* Oct 08, 2014 3705 bclement extends TreeObjectContainer
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author rferrel
|
* @author rferrel
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
public class SessionGroupContainer {
|
public class SessionGroupContainer extends TreeObjectContainer {
|
||||||
|
|
||||||
public List<Object> getObjects() {
|
public SessionGroupContainer() {
|
||||||
|
super("Active Sessions", "session_group");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object[] getObjects() {
|
||||||
CollaborationConnection connection = CollaborationConnection
|
CollaborationConnection connection = CollaborationConnection
|
||||||
.getConnection();
|
.getConnection();
|
||||||
if (connection == null) {
|
if (connection == null) {
|
||||||
return Collections.emptyList();
|
return new Object[0];
|
||||||
}
|
}
|
||||||
Collection<ISession> sessions = connection.getSessions();
|
Collection<ISession> sessions = connection.getSessions();
|
||||||
List<Object> result = new ArrayList<Object>();
|
List<Object> result = new ArrayList<Object>();
|
||||||
|
@ -60,7 +64,7 @@ public class SessionGroupContainer {
|
||||||
result.add(session);
|
result.add(session);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result.toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
/**
|
||||||
|
* 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.ui.data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for containers that contribute groups to the collaboration group
|
||||||
|
* view
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Oct 8, 2014 3705 bclement Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author bclement
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public abstract class TreeObjectContainer {
|
||||||
|
|
||||||
|
private final String label;
|
||||||
|
|
||||||
|
private final String icon;
|
||||||
|
|
||||||
|
public TreeObjectContainer(String label, String icon) {
|
||||||
|
this.label = label;
|
||||||
|
this.icon = icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract Object[] getObjects();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the label
|
||||||
|
*/
|
||||||
|
public String getLabel() {
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the icon
|
||||||
|
*/
|
||||||
|
public String getIcon() {
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue