Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2005-05-20 05:57:02 +0000
committerslewis2005-05-20 05:57:02 +0000
commit5596d4208bfdd390b5f55b03484df429cb40c8e6 (patch)
treee20ebb5be164dabdd6533d8db3f2061ddadb8df2
parentb748eff7a1bd35947daeb2b6a5eda45771ec689c (diff)
downloadorg.eclipse.ecf-5596d4208bfdd390b5f55b03484df429cb40c8e6.tar.gz
org.eclipse.ecf-5596d4208bfdd390b5f55b03484df429cb40c8e6.tar.xz
org.eclipse.ecf-5596d4208bfdd390b5f55b03484df429cb40c8e6.zip
Allow types to be added to Discovery view list
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java11
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/DiscoveryView.java66
2 files changed, 57 insertions, 20 deletions
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 e65d5a9fd..9df01661b 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
@@ -570,13 +570,10 @@ public class Client {
});
if (discoveryView != null) {
dc.addServiceTypeListener(new IServiceTypeListener() {
-
public void serviceTypeAdded(IServiceEvent event) {
- System.out.println("Client.serviceTypeAdded("+event+")");
+ discoveryView.addServiceTypeInfo(event.getServiceInfo().getServiceID().getServiceType());
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);
@@ -585,20 +582,14 @@ public class Client {
}
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) {
diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/DiscoveryView.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/DiscoveryView.java
index f46e5b5e0..165013b12 100644
--- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/DiscoveryView.java
+++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/DiscoveryView.java
@@ -35,7 +35,7 @@ import org.eclipse.ui.part.ViewPart;
public class DiscoveryView extends ViewPart {
- protected static final int TREE_EXPANSION_LEVELS = 2;
+ protected static final int TREE_EXPANSION_LEVELS = 3;
private TreeViewer viewer;
private Action requestServiceInfoAction;
@@ -132,27 +132,55 @@ public class DiscoveryView extends ViewPart {
root = new TreeParent(null,"Network Services");
invisibleRoot.addChild(root);
}
- void replaceOrAdd(TreeParent newEntry) {
- TreeObject [] childs = root.getChildren();
+ void replaceOrAdd(TreeParent top, TreeParent newEntry) {
+ TreeObject [] childs = top.getChildren();
for(int i=0; i < childs.length; i++) {
if (childs[i] instanceof TreeParent) {
ServiceID childID = ((TreeParent) childs[i]).getID();
if (childID.equals(newEntry.getID())) {
// It's already there...replace
- root.removeChild(childs[i]);
+ top.removeChild(childs[i]);
}
}
}
// Now add
- root.addChild(newEntry);
+ top.addChild(newEntry);
+ }
+ void addServiceTypeInfo(String type) {
+ TreeParent typenode = findServiceTypeNode(type);
+ if (typenode == null) {
+ root.addChild(new TreeParent(null,type));
+ }
+ }
+ TreeParent findServiceTypeNode(String typename) {
+ TreeObject[] types = root.getChildren();
+ for(int i=0; i < types.length; i++) {
+ if (types[i] instanceof TreeParent) {
+ String type = types[i].getName();
+ if (type.equals(typename)) {
+ return (TreeParent) types[i];
+ }
+ }
+ }
+ return null;
}
void addServiceInfo(ServiceID id) {
+ TreeParent typenode = findServiceTypeNode(id.getServiceType());
+ if (typenode == null) {
+ typenode = new TreeParent(null,id.getServiceType());
+ root.addChild(typenode);
+ }
TreeParent newEntry = new TreeParent(id,id.getServiceName());
- replaceOrAdd(newEntry);
+ replaceOrAdd(typenode,newEntry);
}
void addServiceInfo(IServiceInfo serviceInfo) {
if (serviceInfo == null) return;
ServiceID svcID = serviceInfo.getServiceID();
+ TreeParent typenode = findServiceTypeNode(svcID.getServiceType());
+ if (typenode == null) {
+ typenode = new TreeParent(null,svcID.getServiceType());
+ root.addChild(typenode);
+ }
TreeParent newEntry = new TreeParent(svcID,svcID.getServiceName());
InetAddress addr = serviceInfo.getAddress();
if (addr != null) {
@@ -181,18 +209,22 @@ public class DiscoveryView extends ViewPart {
}
}
}
- replaceOrAdd(newEntry);
+ replaceOrAdd(typenode,newEntry);
}
void removeServiceInfo(IServiceInfo serviceInfo) {
if (serviceInfo == null) return;
ServiceID svcID = serviceInfo.getServiceID();
- TreeObject [] childs = (TreeObject []) root.getChildren();
+ TreeParent typenode = findServiceTypeNode(svcID.getServiceType());
+ if (typenode == null) {
+ return;
+ }
+ TreeObject [] childs = (TreeObject []) typenode.getChildren();
for(int i=0; i < childs.length; i++) {
if (childs[i] instanceof TreeParent) {
TreeParent parent = (TreeParent) childs[i];
ServiceID existingID = parent.getID();
if (existingID.equals(svcID)) {
- root.removeChild(parent);
+ typenode.removeChild(parent);
}
}
}
@@ -220,7 +252,21 @@ public class DiscoveryView extends ViewPart {
*/
public DiscoveryView() {
}
-
+ public void addServiceTypeInfo(final String type) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ try {
+ ViewContentProvider vcp = (ViewContentProvider) viewer
+ .getContentProvider();
+ if (vcp != null) {
+ vcp.addServiceTypeInfo(type);
+ refreshView();
+ }
+ } catch (Exception e) {
+ }
+ }
+ });
+ }
public void addServiceInfo(final IServiceInfo serviceInfo) {
Display.getDefault().asyncExec(new Runnable() {
public void run() {

Back to the top