Issue #244 Gett color coding on messages

Change-Id: Ibe54e07c26336899198093b0a104f8796ebc0d47

Former-commit-id: 3fa0c543f02ccb556b5d1898e359f1e2b6e63819
This commit is contained in:
Roger Ferrel 2012-03-29 16:39:38 -05:00
parent 0338159662
commit d9ca310d94
9 changed files with 161 additions and 160 deletions

View file

@ -17,6 +17,7 @@ Require-Bundle: com.raytheon.viz.ui,
org.geotools;bundle-version="2.6.4",
com.google.guava;bundle-version="1.0.0",
com.raytheon.viz.core;bundle-version="1.12.1174"
com.raytheon.uf.viz.drawing;bundle-version="1.0.0"
Import-Package: com.raytheon.uf.common.status,
com.raytheon.uf.viz.core.maps.display,
com.raytheon.uf.viz.core.maps.rsc,

View file

@ -71,7 +71,7 @@ public class CollaborationUser extends CollaborationNode implements
return "contact_disabled";
}
public DataUser.RoleType[] getRoles(String session) {
public DataUser.RoleType[] getRoles() {
return CollaborationDataManager.getInstance().getUser(id)
.getSessionRoles(session);
}

View file

@ -68,6 +68,7 @@ import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import org.osgi.framework.Bundle;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
@ -93,6 +94,7 @@ import com.raytheon.uf.viz.collaboration.ui.session.CollaborationSessionView;
import com.raytheon.uf.viz.collaboration.ui.session.PeerToPeerView;
import com.raytheon.uf.viz.collaboration.ui.session.SessionView;
import com.raytheon.uf.viz.core.VizApp;
import com.raytheon.uf.viz.core.icon.IconUtil;
import com.raytheon.uf.viz.drawing.PathToolbar;
import com.raytheon.viz.ui.perspectives.VizPerspectiveListener;
@ -207,6 +209,7 @@ public class CollaborationGroupView extends ViewPart {
*
*/
private void createActions() {
Bundle bundle = Activator.getDefault().getBundle();
createSessionAction = new Action("Create Session...") {
@Override
@ -215,8 +218,8 @@ public class CollaborationGroupView extends ViewPart {
}
};
createSessionAction.setImageDescriptor(CollaborationUtils
.getImageDescriptor("add_collaborate.gif"));
createSessionAction.setImageDescriptor(IconUtil.getImageDescriptor(
bundle, "add_collaborate.gif"));
createSessionAction.setEnabled(CollaborationDataManager.getInstance()
.isConnected());
@ -228,8 +231,8 @@ public class CollaborationGroupView extends ViewPart {
isChecked());
}
};
linkToEditorAction.setImageDescriptor(CollaborationUtils
.getImageDescriptor("link_to_editor.gif"));
linkToEditorAction.setImageDescriptor(IconUtil.getImageDescriptor(
bundle, "link_to_editor.gif"));
linkToEditorAction.setChecked(CollaborationDataManager.getInstance()
.getLinkCollaboration());
@ -243,8 +246,8 @@ public class CollaborationGroupView extends ViewPart {
// session.sendInvitation(invitation)
};
};
inviteAction.setImageDescriptor(CollaborationUtils
.getImageDescriptor("invite.gif"));
inviteAction.setImageDescriptor(IconUtil.getImageDescriptor(bundle,
"invite.gif"));
joinAction = new Action("Join Session") {
@Override
@ -266,8 +269,8 @@ public class CollaborationGroupView extends ViewPart {
populateTree();
}
};
logonAction.setImageDescriptor(CollaborationUtils
.getImageDescriptor("logout.gif"));
logonAction.setImageDescriptor(IconUtil.getImageDescriptor(bundle,
"logout.gif"));
logoutAction = new Action("Logout") {
@Override
@ -276,8 +279,8 @@ public class CollaborationGroupView extends ViewPart {
}
};
logoutAction.setImageDescriptor(CollaborationUtils
.getImageDescriptor("logout.gif"));
logoutAction.setImageDescriptor(IconUtil.getImageDescriptor(bundle,
"logout.gif"));
aliasAction = new Action("Alias") {
@Override
@ -299,16 +302,16 @@ public class CollaborationGroupView extends ViewPart {
System.out.println("Add User");
};
};
addUserAction.setImageDescriptor(CollaborationUtils
.getImageDescriptor("add_contact.gif"));
addUserAction.setImageDescriptor(IconUtil.getImageDescriptor(bundle,
"add_contact.gif"));
addGroupAction = new Action("Create Group") {
public void run() {
System.out.println("Create Group here");
};
};
addGroupAction.setImageDescriptor(CollaborationUtils
.getImageDescriptor("add_group.gif"));
addGroupAction.setImageDescriptor(IconUtil.getImageDescriptor(bundle,
"add_group.gif"));
selectGroups = new Action("Select System Groups...") {
public void run() {
@ -341,8 +344,8 @@ public class CollaborationGroupView extends ViewPart {
refreshActiveSessions();
}
};
refreshActiveSessionsAction.setImageDescriptor(CollaborationUtils
.getImageDescriptor("refresh.gif"));
refreshActiveSessionsAction.setImageDescriptor(IconUtil
.getImageDescriptor(bundle, "refresh.gif"));
refreshActiveSessionsAction
.setToolTipText("Refresh the Active Sessions Entries.");
@ -351,8 +354,8 @@ public class CollaborationGroupView extends ViewPart {
usersTreeViewer.collapseAll();
}
};
collapseAllAction.setImageDescriptor(CollaborationUtils
.getImageDescriptor("collapseall.gif"));
collapseAllAction.setImageDescriptor(IconUtil.getImageDescriptor(
bundle, "collapseall.gif"));
IMenuCreator creator = new IMenuCreator() {
@ -467,8 +470,9 @@ public class CollaborationGroupView extends ViewPart {
};
action.setId(type.name());
ActionContributionItem item = new ActionContributionItem(action);
action.setImageDescriptor(CollaborationUtils
.getImageDescriptor(type.name().toLowerCase() + ".gif"));
action.setImageDescriptor(IconUtil.getImageDescriptor(Activator
.getDefault().getBundle(), type.name().toLowerCase()
+ ".gif"));
item.fill(menu, -1);
}
}

View file

@ -19,14 +19,9 @@
**/
package com.raytheon.uf.viz.collaboration.ui;
import java.io.File;
import java.net.URL;
import java.util.List;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import com.raytheon.uf.common.status.IUFStatusHandler;
@ -34,6 +29,7 @@ import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.viz.collaboration.comm.identity.IPresence;
import com.raytheon.uf.viz.collaboration.comm.identity.IPresence.Mode;
import com.raytheon.uf.viz.collaboration.data.CollaborationNode;
import com.raytheon.uf.viz.core.icon.IconUtil;
/**
* Methods for sending, receiving messages
@ -75,26 +71,6 @@ public class CollaborationUtils {
return -1;
}
/**
* Get an descriptor for the file in the icon directory. DEPRECATED: Use
* IconUtil instead
*
* @param name
* - file name
* @return imageDescriptor
*/
@Deprecated
public static ImageDescriptor getImageDescriptor(String name) {
String iconPath = "icons" + File.separator;
URL url = FileLocator.find(Activator.getDefault().getBundle(),
new Path(iconPath + name), null);
if (url != null && url.getFile() == null) {
url = FileLocator.find(Activator.getDefault().getBundle(),
new Path(".." + File.separator + iconPath + name), null);
}
return ImageDescriptor.createFromURL(url);
}
/**
* Get an image associated with the node.
*
@ -102,33 +78,9 @@ public class CollaborationUtils {
* @return image
*/
public static Image getNodeImage(CollaborationNode node) {
// Image nodeImage = null;
String name = node.getImageKey().toLowerCase() + ".gif";
return getImageDescriptor(name).createImage();
// if (node instanceof CollaborationUser) {
// CollaborationUser user = (CollaborationUser) node;
// if (user.getMode() == IPresence.Mode.AVAILABLE) {
// nodeImage = getImageDescriptor("available.gif").createImage();
// } else if (user.getMode() == IPresence.Mode.AWAY) {
// nodeImage = getImageDescriptor("away.gif").createImage();
// } else if (user.getMode() == IPresence.Mode.DND) {
// nodeImage = getImageDescriptor("do_not_disturb.gif")
// .createImage();
// } else {
// nodeImage = getImageDescriptor("available.gif").createImage();
// }
// } else if (node instanceof SessionGroup) {
// if (!((SessionGroup) node).isSessionRoot()) {
// nodeImage = getImageDescriptor("session_group.gif")
// .createImage();
// } else {
// // nodeImage = getImageDescriptor("").createImage();
//
// }
// } else if (node instanceof CollaborationGroup) {
// nodeImage = getImageDescriptor("group.gif").createImage();
// }
// return nodeImage;
return IconUtil.getImageDescriptor(Activator.getDefault().getBundle(),
name).createImage();
}
public static void sendChatMessage(List<String> ids, String message) {

View file

@ -40,7 +40,8 @@ import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.part.ViewPart;
import com.raytheon.uf.viz.collaboration.ui.CollaborationUtils;
import com.raytheon.uf.viz.collaboration.ui.Activator;
import com.raytheon.uf.viz.core.icon.IconUtil;
import com.raytheon.viz.ui.perspectives.VizPerspectiveListener;
/**
@ -199,8 +200,9 @@ public abstract class AbstractSessionView extends ViewPart implements
private Image getImage() {
Image image = imageMap.get(SESSION_IMAGE_KEY);
if (image == null) {
image = CollaborationUtils
.getImageDescriptor(getSessionImageName()).createImage();
image = IconUtil.getImageDescriptor(
Activator.getDefault().getBundle(), getSessionImageName())
.createImage();
if (image != null) {
imageMap.put(SESSION_IMAGE_KEY, image);
}

View file

@ -19,11 +19,11 @@
**/
package com.raytheon.uf.viz.collaboration.ui.session;
import java.util.List;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;
import com.raytheon.uf.viz.collaboration.data.CollaborationUser;
/**
* TODO Add Description
*
@ -43,19 +43,42 @@ import com.raytheon.uf.viz.collaboration.data.CollaborationUser;
public class ParticipantsContentProvider implements IStructuredContentProvider {
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
@Override
public void dispose() {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface
* .viewers.Viewer, java.lang.Object, java.lang.Object)
*/
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
oldInput = newInput;
viewer.refresh();
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java
* .lang.Object)
*/
@Override
public Object[] getElements(Object inputElement) {
return (CollaborationUser[]) inputElement;
if (inputElement instanceof List<?>) {
List<?> list = (List<?>) inputElement;
return list.toArray();
}
return null;
}
}

View file

@ -34,11 +34,14 @@ import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.osgi.framework.Bundle;
import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager;
import com.raytheon.uf.viz.collaboration.data.CollaborationUser;
import com.raytheon.uf.viz.collaboration.data.DataUser.RoleType;
import com.raytheon.uf.viz.collaboration.ui.Activator;
import com.raytheon.uf.viz.collaboration.ui.CollaborationUtils;
import com.raytheon.uf.viz.core.icon.IconUtil;
/**
* TODO Add Description
@ -173,18 +176,19 @@ public class ParticipantsLabelProvider implements ITableColorProvider,
Image image = imageMap.get(modKey.toString());
if (image == null) {
Bundle bundle = Activator.getDefault().getBundle();
image = CollaborationUtils.getNodeImage(user);
// original image is 16x16
GC gc = new GC(image, SWT.LEFT_TO_RIGHT);
if (t.contains(RoleType.LEADER)) {
Image im = CollaborationUtils.getImageDescriptor(
Image im = IconUtil.getImageDescriptor(bundle,
"session_leader.png").createImage();
gc.drawImage(im, 7, 7);
im.dispose();
}
if (t.contains(RoleType.DATA_PROVIDER)) {
Image im = CollaborationUtils.getImageDescriptor(
Image im = IconUtil.getImageDescriptor(bundle,
"data_provider.png").createImage();
gc.drawImage(im, 0, 16);
im.dispose();

View file

@ -20,7 +20,6 @@
package com.raytheon.uf.viz.collaboration.ui.session;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.swt.SWT;
@ -49,7 +48,7 @@ import com.raytheon.uf.viz.collaboration.data.DataUser.RoleType;
public class SessionColorAdvisor {
private static Map<RoleType, Color> colors = null;
public static Color getColor(List<RoleType> type, boolean isSelf) {
public static Color getColor(RoleType[] type, boolean isSelf) {
if (colors == null) {
colors = new HashMap<RoleType, Color>();
colors.put(RoleType.LEADER,
@ -63,15 +62,23 @@ public class SessionColorAdvisor {
return Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
}
RoleType rType = null;
if (type == null || type.isEmpty()) {
if (type == null || type.length == 0) {
rType = RoleType.PARTICIPANT;
} else if (type.contains(RoleType.LEADER)) {
rType = RoleType.LEADER;
} else if (type.contains(RoleType.DATA_PROVIDER)) {
rType = RoleType.DATA_PROVIDER;
} else if (type.length == 1) {
rType = type[0];
} else {
rType = RoleType.PARTICIPANT;
for (RoleType rt : type) {
if (rt == RoleType.DATA_PROVIDER) {
rType = rt;
break;
}
if (rt == RoleType.LEADER) {
rType = rt;
}
}
}
return colors.get(rType);
}
}

View file

@ -21,7 +21,6 @@ package com.raytheon.uf.viz.collaboration.ui.session;
**/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
@ -63,6 +62,8 @@ 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.IMessage;
import com.raytheon.uf.viz.collaboration.comm.identity.IPresence;
import com.raytheon.uf.viz.collaboration.comm.identity.IPresence.Mode;
import com.raytheon.uf.viz.collaboration.comm.identity.IPresence.Type;
import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IVenueParticipantEvent;
import com.raytheon.uf.viz.collaboration.comm.identity.event.ParticipantEventType;
@ -201,8 +202,7 @@ public class SessionView extends AbstractSessionView {
@Override
public void run() {
addMessage(msg.getFrom().getName(), msg.getTimeStamp(),
msg.getBody());
addMessage(msg);
}
});
}
@ -339,8 +339,7 @@ public class SessionView extends AbstractSessionView {
builder.append("type: ").append(user.getType())
.append("\n");
builder.append("-- Roles --");
for (RoleType type : RoleType.values()) {// user.getRoles(sessionId))
// {
for (RoleType type : user.getRoles()) {
// TODO fake XXX take this out
if (type == RoleType.UNKNOWN) {
continue;
@ -358,16 +357,21 @@ public class SessionView extends AbstractSessionView {
.getSession(sessionId);
List<CollaborationUser> users = new ArrayList<CollaborationUser>();
if (session != null) {
for (IVenueParticipant part : session.getVenue().getParticipants()) {
// CollaborationUser user = new
// CollaborationUser(part.getName());
CollaborationUser user = new CollaborationUser(part.getFQName());
for (IVenueParticipant participant : session.getVenue()
.getParticipants()) {
RoleType[] roles = user.getRoles(sessionId);
for (RoleType role : roles) {
user.addRole(role);
}
user.setText(part.getFQName());
CollaborationUser user = new CollaborationUser(
participant.getFQName());
user.setMode(Mode.AVAILABLE);
user.setType(Type.AVAILABLE);
// RoleType[] roles = user.getRoles(sessionId);
// for (RoleType role : roles) {
// user.addRole(role);
// }
user.addRole(RoleType.DATA_PROVIDER);
user.addRole(RoleType.LEADER);
user.setText(participant.getFQName());
// user.setMode(mode);
// user.setType(Type.AVAILABLE);
users.add(user);
@ -378,7 +382,7 @@ public class SessionView extends AbstractSessionView {
.getSystemColor(SWT.COLOR_DARK_GRAY));
comp.setEnabled(false);
}
usersTable.setInput(users.toArray(new CollaborationUser[users.size()]));
usersTable.setInput(users);
((GridData) usersComp.getLayoutData()).exclude = true;
}
@ -398,27 +402,33 @@ public class SessionView extends AbstractSessionView {
}
}
public void addUsers(java.util.List<CollaborationUser> users) {
for (CollaborationUser user : users) {
addUser(user);
}
}
// @SuppressWarnings("unchecked")
// public void addUser(CollaborationUser user) {
// List<CollaborationUser> list = (List<CollaborationUser>) usersTable
// .getInput();
// list.add(user);
// }
//
// @SuppressWarnings("unchecked")
// public void clearUsers() {
// List<CollaborationUser> list = (List<CollaborationUser>) usersTable
// .getInput();
// list.clear();
// ;
// }
//
// @SuppressWarnings("unchecked")
// public void removeUser(CollaborationUser user) {
// List<CollaborationUser> list = (List<CollaborationUser>) usersTable
// .getInput();
// list.remove(user);
// }
public void addUser(CollaborationUser user) {
usersTable.add(user);
}
public void clearUsers() {
usersTable.getTable().removeAll();
}
public void removeUser(CollaborationUser user) {
usersTable.remove(user);
}
public void addMessage(String user, long timestamp, String message) {
public void addMessage(IMessage message) {
String name = message.getFrom().getFQName();
String user = message.getFrom().getName();
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timestamp);
cal.setTimeInMillis(message.getTimeStamp());
String time = String.format("%1$tI:%1$tM:%1$tS %1$Tp", cal);
StringBuilder sb = new StringBuilder();
if (messagesText.getCharCount() != 0) {
@ -428,7 +438,7 @@ public class SessionView extends AbstractSessionView {
sb.append("(").append(time).append(") ");
offset = sb.length();
sb.append(user).append(": ").append(message);
sb.append(user).append(": ").append(message.getBody());
// here is the place to put the font and color changes for keywords
// read in localization file once and then don't read in again, per
@ -448,11 +458,17 @@ public class SessionView extends AbstractSessionView {
}
}
// XXX determine from the user data
// get self
List<RoleType> type = new ArrayList<RoleType>();
type.add(RoleType.LEADER);
Color color = SessionColorAdvisor.getColor(type, false);
RoleType[] type = null;
for (CollaborationUser u : (List<CollaborationUser>) usersTable
.getInput()) {
if (name.equals(u.getId())) {
type = u.getRoles();
break;
}
}
Color color = SessionColorAdvisor.getColor(type, name
.equals(CollaborationDataManager.getInstance().getLoginId()));
StyleRange range = new StyleRange(messagesText.getCharCount() + offset,
user.length() + 1, color, null, SWT.BOLD);
messagesText.append(sb.toString());
@ -645,9 +661,11 @@ public class SessionView extends AbstractSessionView {
});
}
@SuppressWarnings("unchecked")
private void participantArrived(IVenueParticipant participant) {
CollaborationUser[] users = (CollaborationUser[]) usersTable.getInput();
String name = participant.getName();
List<CollaborationUser> users = (List<CollaborationUser>) usersTable
.getInput();
String name = participant.getFQName();
for (CollaborationUser user : users) {
if (name.equals(user.getId())) {
return;
@ -655,57 +673,47 @@ public class SessionView extends AbstractSessionView {
}
CollaborationUser user = new CollaborationUser(name);
user.setText(name);
CollaborationUser[] usersNew = Arrays.copyOf(users, users.length + 1);
usersNew[users.length] = user;
usersTable.setInput(usersNew);
users.add(user);
usersTable.refresh();
}
@SuppressWarnings("unchecked")
private void participantDeparted(IVenueParticipant participant) {
System.out.println("++++ handle departed here: "
+ participant.getName() + ", " + participant.getFQName());
int index = -1;
CollaborationUser[] users = (CollaborationUser[]) usersTable.getInput();
String name = participant.getName();
for (int i = 0; i < users.length; ++i) {
if (name.equals(users[i].getId())) {
index = i;
List<CollaborationUser> users = (List<CollaborationUser>) usersTable
.getInput();
String name = participant.getFQName();
for (int i = 0; i < users.size(); ++i) {
if (name.equals(users.get(i).getId())) {
users.remove(i);
usersTable.refresh();
break;
}
}
if (index >= 0) {
CollaborationUser[] usersNew = new CollaborationUser[users.length - 1];
for (int i = 0; i < index; ++i) {
usersNew[i] = users[i];
}
for (int i = index + 1; i < users.length; ++i) {
usersNew[i - 1] = users[i];
}
usersTable.setInput(usersNew);
}
}
@SuppressWarnings("unchecked")
private void participantPresenceUpdated(IVenueParticipant participant,
IPresence presence) {
List<CollaborationUser> users = (List<CollaborationUser>) usersTable
.getInput();
System.out.println("++++ handle presence updated here: "
+ presence.getMode() + "/" + presence.getType() + ": "
+ participant.getName() + ", " + participant.getFQName());
CollaborationUser[] users = (CollaborationUser[]) usersTable.getInput();
String name = participant.getFQName();
int index = -1;
for (int i = 0; i < users.length; ++i) {
if (name.equals(users[i].getId())) {
index = i;
break;
for (CollaborationUser user : users) {
if (name.equals(user.getId())) {
user.setMode(presence.getMode());
user.setType(presence.getType());
usersTable.refresh();
return;
}
}
CollaborationUser user = null;
if (index >= 0) {
user = users[index];
} else {
user = new CollaborationUser(name);
}
CollaborationUser user = new CollaborationUser(name);
user.setMode(presence.getMode());
user.setType(presence.getType());
// usersTable.refresh();
}
}