Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2005-03-28 07:11:47 +0000
committerslewis2005-03-28 07:11:47 +0000
commit24f16cdd8a2d7f5e92c85eef41332b2e8d41a3c6 (patch)
treec3ee5ce3a2ea1ce3cdf1dd86dfe92bb3ed3a6db1
parentf7d8cbca8fb7358436ae8f532b252386db226d4a (diff)
downloadorg.eclipse.ecf-24f16cdd8a2d7f5e92c85eef41332b2e8d41a3c6.tar.gz
org.eclipse.ecf-24f16cdd8a2d7f5e92c85eef41332b2e8d41a3c6.tar.xz
org.eclipse.ecf-24f16cdd8a2d7f5e92c85eef41332b2e8d41a3c6.zip
Made change to correspond with addition of org.eclipse.ecf.presence plugin.
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/META-INF/MANIFEST.MF5
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java106
2 files changed, 110 insertions, 1 deletions
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.example.collab/META-INF/MANIFEST.MF
index 60b5387a2..faffd29ed 100644
--- a/examples/bundles/org.eclipse.ecf.example.collab/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.example.collab/META-INF/MANIFEST.MF
@@ -12,7 +12,10 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.core.resources,
org.eclipse.ecf,
org.eclipse.help.base,
- org.eclipse.jface.text
+ org.eclipse.jface.text,
+ org.eclipse.ecf.presence,
+ org.eclipse.ecf.ui
Export-Package: org.eclipse.ecf.example.collab.share, org.eclipse.ecf.example.collab.share.url, org.eclipse.ecf.example.collab.share.io
Eclipse-AutoStart: true
Provide-Package: org.eclipse.ecf.example.collab
+DynamicImport-Package: org.eclipse.ecf.presence, org.eclipse.ecf.presence.impl \ No newline at end of file
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java
index e2e14e878..66833e6de 100644
--- a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java
+++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java
@@ -34,6 +34,17 @@ import org.eclipse.ecf.example.collab.share.EclipseCollabSharedObject;
import org.eclipse.ecf.example.collab.share.SharedObjectEventListener;
import org.eclipse.ecf.example.collab.share.TreeItem;
import org.eclipse.ecf.example.collab.share.User;
+import org.eclipse.ecf.presence.IMessageListener;
+import org.eclipse.ecf.presence.IMessageSender;
+import org.eclipse.ecf.presence.IPresence;
+import org.eclipse.ecf.presence.IPresenceContainer;
+import org.eclipse.ecf.presence.IPresenceListener;
+import org.eclipse.ecf.presence.IRosterEntry;
+import org.eclipse.ecf.ui.views.ITextInputHandler;
+import org.eclipse.ecf.ui.views.RosterView;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
@@ -274,6 +285,11 @@ public class Client {
},"");
}
+
+ // Check for IPresenceContainer....if it is, setup
+ IPresenceContainer pc = (IPresenceContainer) client.getAdapter(IPresenceContainer.class);
+ if (pc != null) setupPresenceContainer(pc,groupID,username);
+
try {
client.joinGroup(groupID, data);
} catch (SharedObjectContainerJoinException e) {
@@ -289,6 +305,96 @@ public class Client {
addClientEntry(proj,newClient);
}
+ protected RosterView rosterView = null;
+ protected IMessageSender messageSender = null;
+
+ protected void setupPresenceContainer(IPresenceContainer pc, final ID localUser, final String nick) {
+
+ messageSender = pc.getMessageSender();
+
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ try {
+ IWorkbenchWindow ww = PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow();
+ IWorkbenchPage wp = ww.getActivePage();
+ IViewPart view = wp.showView("org.eclipse.ecf.ui.view.rosterview");
+ rosterView = (RosterView) view;
+ String nickname = null;
+ if (nick != null) {
+ nickname = nick;
+ } else {
+ String name = localUser.getName();
+ nickname = name.substring(0,name.indexOf("@"));
+ }
+ rosterView.setLocalUser(new org.eclipse.ecf.core.user.User(localUser,nickname),new ITextInputHandler() {
+
+ public void handleTextLine(ID userID, String text) {
+ messageSender.sendMessage(localUser,userID,null,null,text);
+ }
+
+ public void handleStartTyping(ID userID) {
+ //System.out.println("handleStartTyping("+userID+")");
+ }
+
+ public void disconnect() {
+ System.out.println("disconnect()");
+ }
+
+ });
+ } catch (Exception e) {
+ System.err.println("Exception showing view");
+ e.printStackTrace(System.err);
+ }
+ }
+ });
+
+ pc.addMessageListener(new IMessageListener() {
+ public void handleMessage(final ID fromID, final ID toID, final Type type, final String subject, final String message) {
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ rosterView.handleMessage(fromID,toID,type,subject,message);
+ }
+ });
+ }
+ });
+ pc.addPresenceListener(new IPresenceListener() {
+
+ public void handleContainerJoined(final ID joinedContainer) {
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ rosterView.setGroup(joinedContainer);
+ }
+ });
+ }
+
+ public void handleRosterEntry(final IRosterEntry entry) {
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ rosterView.handleRosterEntry(entry);
+ }
+ });
+ }
+
+ public void handlePresence(final ID fromID, final IPresence presence) {
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ rosterView.handlePresence(fromID,presence);
+ }
+ });
+ }
+
+ public void handleContainerDeparted(final ID departedContainer) {
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ rosterView.memberDeparted(departedContainer);
+ }
+ });
+ messageSender = null;
+ }
+
+ });
+ }
public synchronized void disposeClient(IResource proj, ClientEntry entry) {
entry.dispose();
removeClientEntry(proj,entry.getType());

Back to the top