Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2005-06-25 07:34:18 +0000
committerslewis2005-06-25 07:34:18 +0000
commite1a14e12d8407c8649d23c503f63776bcce63884 (patch)
tree565a30f017a33234a1b5896727926341db170486
parente6c338ebe071097e0d5e91caebc9c58f7c52fafe (diff)
downloadorg.eclipse.ecf-e1a14e12d8407c8649d23c503f63776bcce63884.tar.gz
org.eclipse.ecf-e1a14e12d8407c8649d23c503f63776bcce63884.tar.xz
org.eclipse.ecf-e1a14e12d8407c8649d23c503f63776bcce63884.zip
Changed IServiceConnectListener to IDiscoveryControlListener. Changes/additions to DiscoveryView user interface
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/DiscoveryView.java101
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/IDiscoveryControlListener.java9
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/IServiceConnectListener.java7
3 files changed, 87 insertions, 30 deletions
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 0e3b78343..7a36722f1 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
@@ -18,6 +18,7 @@ import java.util.Iterator;
import java.util.Map;
import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.ecf.core.ISharedObjectContainer;
import org.eclipse.ecf.core.identity.ServiceID;
import org.eclipse.ecf.discovery.IDiscoveryContainer;
import org.eclipse.ecf.discovery.IServiceInfo;
@@ -52,9 +53,12 @@ public class DiscoveryView extends ViewPart {
private Action requestServiceInfoAction;
private Action registerServiceTypeAction;
private Action connectToAction;
+ private Action disconnectContainerAction;
+ private Action connectContainerAction;
IDiscoveryContainer container = null;
- IServiceConnectListener serviceConnectListener = null;
+ ISharedObjectContainer socontainer = null;
+ IDiscoveryControlListener serviceConnectListener = null;
protected boolean showTypeDetails = false;
@@ -62,8 +66,15 @@ public class DiscoveryView extends ViewPart {
showTypeDetails = val;
refreshView();
}
- public void setDiscoveryContainer(IDiscoveryContainer container) {
+ public synchronized void setDiscoveryContainer(IDiscoveryContainer container, ISharedObjectContainer socontainer) {
this.container = container;
+ this.socontainer = socontainer;
+ }
+ public synchronized boolean isConnected() {
+ if (socontainer == null) return false;
+ else {
+ return true;
+ }
}
class TreeObject implements IAdaptable {
private String name;
@@ -155,9 +166,13 @@ public class DiscoveryView extends ViewPart {
}
private void initialize() {
invisibleRoot = new TreeParent(null,"",null);
- root = new TreeParent(null,"Services",null);
+ root = new TreeParent(null,"Network Services",null);
invisibleRoot.addChild(root);
}
+ public boolean isRoot(TreeParent tp) {
+ if (tp != null && tp == root) return true;
+ else return false;
+ }
void replaceOrAdd(TreeParent top, TreeParent newEntry) {
TreeObject [] childs = top.getChildren();
for(int i=0; i < childs.length; i++) {
@@ -308,7 +323,7 @@ public class DiscoveryView extends ViewPart {
public DiscoveryView() {
}
- public void setServiceConnectListener(IServiceConnectListener l) {
+ public void setServiceConnectListener(IDiscoveryControlListener l) {
this.serviceConnectListener = l;
}
public void addServiceTypeInfo(final String type) {
@@ -430,30 +445,63 @@ public class DiscoveryView extends ViewPart {
connectToAction.setText("Connect to service...");
connectToAction.setToolTipText("Connect to this service");
connectToAction.setEnabled(true);
-}
+
+ disconnectContainerAction = new Action() {
+ public void run() {
+ ViewContentProvider vcp = (ViewContentProvider) viewer.getContentProvider();
+ if (vcp != null) {
+ if (isConnected()) {
+ if (serviceConnectListener != null) serviceConnectListener.disposeDiscoveryContainer(DiscoveryView.this);
+ }
+ }
+ }
+ };
+ disconnectContainerAction.setText("Stop discovery");
+ disconnectContainerAction.setToolTipText("Stop discovery");
+ disconnectContainerAction.setEnabled(true);
+
+ connectContainerAction = new Action() {
+ public void run() {
+ ViewContentProvider vcp = (ViewContentProvider) viewer.getContentProvider();
+ if (vcp != null) {
+ if (!isConnected()) {
+ if (serviceConnectListener != null) serviceConnectListener.setupDiscoveryContainer(DiscoveryView.this);
+ }
+ }
+ }
+ };
+ connectContainerAction.setText("Start discovery");
+ connectContainerAction.setToolTipText("Start discovery");
+ connectContainerAction.setEnabled(true);
+ }
private void fillContextMenu(IMenuManager manager) {
final TreeObject treeObject = getSelectedTreeObject();
if (treeObject != null && treeObject instanceof TreeParent) {
TreeParent tp = (TreeParent) treeObject;
- if (tp.getID() != null) {
- requestServiceInfoAction.setText("Request info about "+tp.getName());
- manager.add(requestServiceInfoAction);
- IServiceInfo si = tp.getServiceInfo();
- if (si != null) {
- try {
- URI uri = si.getServiceURI();
- if (uri != null) {
- connectToAction.setText("Connect to this service");
- manager.add(connectToAction);
- }
- } catch (URISyntaxException e) {
-
- }
+ ViewContentProvider vcp = (ViewContentProvider) viewer.getContentProvider();
+ if (vcp != null && vcp.isRoot(tp)) {
+ // It's the root so let's setup the appropriate action and
+ if (isConnected()) {
+ if (serviceConnectListener != null) manager.add(disconnectContainerAction);
+ } else {
+ if (serviceConnectListener != null) manager.add(connectContainerAction);
}
} else {
- if (!tp.equals(((ViewContentProvider) viewer.getContentProvider()).root)) {
- registerServiceTypeAction.setText("Register type "+tp.getName());
- manager.add(registerServiceTypeAction);
+ ServiceID svcID = tp.getID();
+ if (svcID != null) {
+ IServiceInfo svcInfo = tp.getServiceInfo();
+ if (svcInfo != null && svcInfo.isResolved()) {
+ try {
+ URI uri = svcInfo.getServiceURI();
+ if (uri != null) {
+ connectToAction.setText("Connect to service '"+svcID.getServiceName()+"'");
+ manager.add(connectToAction);
+ }
+ } catch (URISyntaxException e) {}
+ } else {
+ requestServiceInfoAction.setText("Request info about '"+svcID.getServiceName()+"'");
+ manager.add(requestServiceInfoAction);
+ }
}
}
}
@@ -506,7 +554,14 @@ public class DiscoveryView extends ViewPart {
if (treeObject != null && treeObject instanceof TreeParent) {
TreeParent tp = (TreeParent) treeObject;
if (tp.getID() != null) {
- requestServiceInfoAction.run();
+ IServiceInfo info = tp.getServiceInfo();
+ if (info != null) {
+ if (!info.isResolved()) {
+ requestServiceInfoAction.run();
+ } else {
+ connectToAction.run();
+ }
+ }
}
}
}
diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/IDiscoveryControlListener.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/IDiscoveryControlListener.java
new file mode 100644
index 000000000..cdb6cff3b
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/IDiscoveryControlListener.java
@@ -0,0 +1,9 @@
+package org.eclipse.ecf.ui.views;
+
+import org.eclipse.ecf.discovery.IServiceInfo;
+
+public interface IDiscoveryControlListener {
+ public void connectToService(IServiceInfo service);
+ public void setupDiscoveryContainer(DiscoveryView view);
+ public void disposeDiscoveryContainer(DiscoveryView view);
+}
diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/IServiceConnectListener.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/IServiceConnectListener.java
deleted file mode 100644
index e865cadcf..000000000
--- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/IServiceConnectListener.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.eclipse.ecf.ui.views;
-
-import org.eclipse.ecf.discovery.IServiceInfo;
-
-public interface IServiceConnectListener {
- public void connectToService(IServiceInfo service);
-}

Back to the top