diff options
| author | slewis | 2005-05-17 05:50:16 +0000 |
|---|---|---|
| committer | slewis | 2005-05-17 05:50:16 +0000 |
| commit | 54f25dc9578e4e8d0bbf7ced560df04a87875f4e (patch) | |
| tree | 994d57da5cefa2f10b980cfeb7625bc679bcfcea | |
| parent | 5394f72d31d3ad6ca7dd9181b5998a6487505566 (diff) | |
| download | org.eclipse.ecf-54f25dc9578e4e8d0bbf7ced560df04a87875f4e.tar.gz org.eclipse.ecf-54f25dc9578e4e8d0bbf7ced560df04a87875f4e.tar.xz org.eclipse.ecf-54f25dc9578e4e8d0bbf7ced560df04a87875f4e.zip | |
Added support for discovery container and presentation of discovery view
| -rw-r--r-- | examples/bundles/org.eclipse.ecf.example.collab/META-INF/MANIFEST.MF | 3 | ||||
| -rw-r--r-- | examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java | 61 |
2 files changed, 63 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 700065ace..d8aa27eec 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 @@ -14,7 +14,8 @@ Require-Bundle: org.eclipse.ui, org.eclipse.help.base, org.eclipse.jface.text, org.eclipse.ecf.presence, - org.eclipse.ecf.ui + org.eclipse.ecf.ui, + org.eclipse.ecf.discovery 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 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 8be44deda..e65d5a9fd 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 @@ -43,6 +43,11 @@ import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.identity.IDFactory; import org.eclipse.ecf.core.security.IJoinContext; import org.eclipse.ecf.core.security.ObjectCallback; +import org.eclipse.ecf.discovery.IDiscoveryContainer; +import org.eclipse.ecf.discovery.IServiceEvent; +import org.eclipse.ecf.discovery.IServiceInfo; +import org.eclipse.ecf.discovery.IServiceListener; +import org.eclipse.ecf.discovery.IServiceTypeListener; import org.eclipse.ecf.example.collab.share.EclipseCollabSharedObject; import org.eclipse.ecf.example.collab.share.SharedObjectEventListener; import org.eclipse.ecf.example.collab.share.TreeItem; @@ -59,6 +64,7 @@ import org.eclipse.ecf.presence.ISubscribeListener; import org.eclipse.ecf.presence.impl.Presence; import org.eclipse.ecf.ui.dialogs.AddBuddyDialog; import org.eclipse.ecf.ui.dialogs.ReceiveAuthorizeRequestDialog; +import org.eclipse.ecf.ui.views.DiscoveryView; import org.eclipse.ecf.ui.views.ILocalInputHandler; import org.eclipse.ecf.ui.views.RosterView; import org.eclipse.jface.window.Window; @@ -329,6 +335,9 @@ public class Client { // Check for IPresenceContainer....if it is, setup IPresenceContainer pc = (IPresenceContainer) client.getAdapter(IPresenceContainer.class); if (pc != null) setupPresenceContainer(client,pc,groupID,username); + // Check for discoverycontainer...if it is, setup + IDiscoveryContainer dc = (IDiscoveryContainer) client.getAdapter(IDiscoveryContainer.class); + if (dc != null) setupDiscoveryContainer(dc); try { client.joinGroup(groupID, getJoinContext(username,data)); @@ -540,6 +549,58 @@ public class Client { } }); } + + protected DiscoveryView discoveryView = null; + + protected void setupDiscoveryContainer(final IDiscoveryContainer dc) { + 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.discoveryview"); + discoveryView = (DiscoveryView) view; + discoveryView.setDiscoveryContainer(dc); + } catch (Exception e) { + IStatus status = new Status(IStatus.ERROR,ClientPlugin.PLUGIN_ID,IStatus.OK,"Exception showing presence view",e); + ClientPlugin.getDefault().getLog().log(status); + } + } + }); + if (discoveryView != null) { + dc.addServiceTypeListener(new IServiceTypeListener() { + + public void serviceTypeAdded(IServiceEvent event) { + System.out.println("Client.serviceTypeAdded("+event+")"); + dc.addServiceListener(event.getServiceInfo().getServiceID(), new IServiceListener() { + + public void serviceAdded(IServiceEvent event) { + System.out.println("Client.serviceAdded("+event+")"); + IServiceInfo info = dc.getServiceInfo(event.getServiceInfo().getServiceID(),3000); + if (info != null) { + discoveryView.addServiceInfo(info); + } else { + discoveryView.addServiceInfo(event.getServiceInfo().getServiceID()); + } + dc.requestServiceInfo(event.getServiceInfo().getServiceID(),3000); + } + + public void serviceRemoved(IServiceEvent event) { + System.out.println("Client.serviceRemoved("+event+")"); + discoveryView.removeServiceInfo(event.getServiceInfo()); + } + + public void serviceResolved(IServiceEvent event) { + System.out.println("Client.serviceResolved("+event+")"); + discoveryView.addServiceInfo(event.getServiceInfo()); + }}); + }}); + } + + + } + public synchronized void disposeClient(IResource proj, ClientEntry entry) { entry.dispose(); removeClientEntry(proj,entry.getType()); |
