Author: jsdelfino
Date: Wed Apr 16 18:03:38 2008
New Revision: 648914

URL: http://svn.apache.org/viewvc?rev=648914&view=rev
Log:
UI improvements to the admin app. Added popup lists to avoid having to type 
namespaces, composite names and contribution URIs.

Modified:
    
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite
    
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html
    
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/composite.html
    
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/utils.js
    
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/workspace.html

Modified: 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite?rev=648914&r1=648913&r2=648914&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite
 (original)
+++ 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite
 Wed Apr 16 18:03:38 2008
@@ -57,6 +57,9 @@
                 <reference name="domainComposite" 
target="DomainCompositeCollectionComponent/ItemCollection">
                        <t:binding.atom/>
                 </reference>
+                <reference name="workspace" 
target="ContributionCollectionComponent/ItemCollection">
+                       <t:binding.atom/>
+                </reference>
     </component>
 
     <component name="CloudUI">
@@ -65,6 +68,9 @@
                <t:binding.http uri="http://localhost:9990/ui/cloud"/>
         </service>
                 <reference name="cloudComposite" 
target="CloudCollectionComponent/ItemCollection">
+                       <t:binding.atom/>
+                </reference>
+                <reference name="domainComposite" 
target="DomainCompositeCollectionComponent/ItemCollection">
                        <t:binding.atom/>
                 </reference>
                 <reference name="processCollection" 
target="NodeProcessCollectionFacadeComponent/ItemCollection">

Modified: 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html?rev=648914&r1=648913&r2=648914&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html
 (original)
+++ 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/cloud.html
 Wed Apr 16 18:03:38 2008
@@ -29,10 +29,13 @@
        var cloudComposite = new Reference("cloudComposite");
        
        //@Reference
+       var domainComposite = new Reference("domainComposite");
+       
+       //@Reference
        var processCollection = new Reference("processCollection");
        
-       function getComposites() {
-               cloudComposite.get("", getCompositesResponse);
+       function getNodes() {
+               cloudComposite.get("", getNodesResponse);
        }
        
        function contributionURI(id) {
@@ -53,7 +56,7 @@
        
        var nodeNames;
        
-       function getCompositesResponse(feed) {
+       function getNodesResponse(feed) {
                nodeNames = new Array();      
                if (feed != null) {
                        var entries = feed.getElementsByTagName("entry");
@@ -112,26 +115,26 @@
                }
        }
 
-       function deleteComposite() {
+       function deleteNode() {
                var composites  = array(document.cloudCompositeForm.composites);
                for (var i = 0; i < composites.length; i++) {
                        if (composites[i].checked) {
                            var id = composites[i].value;
-                               cloudComposite.del(id, deleteCompositeResponse);
+                               cloudComposite.del(id, deleteNodeResponse);
                        }
                }
        }
 
-       function deleteCompositeResponse() {
-           getComposites();
+       function deleteNodeResponse() {
+           getNodes();
        }       
 
-       function addComposite() {
-               var nodeName = document.newCompositeForm.nodeName.value;
-               var nodeURI = document.newCompositeForm.nodeURI.value;          
        
-               var compositeNamespace = 
document.newCompositeForm.compositeNamespace.value;
-               var compositeName = 
document.newCompositeForm.compositeName.value;
-               var contributionURI = 
document.newCompositeForm.contributionURI.value;
+       function addNode() {
+               var nodeName = document.newNodeForm.nodeName.value;
+               var nodeURI = document.newNodeForm.nodeURI.value;               
        
+               var compositeNamespace = 
document.newNodeForm.compositeNamespace.value;
+               var compositeName = document.newNodeForm.compositeName.value;
+               var contributionURI = 
document.newNodeForm.contributionURI.value;
                var id  = 'composite:' +
                        'http://tuscany.apache.org/cloud' + ';' +
                        'http://tuscany.apache.org/cloud' + ';' +
@@ -158,19 +161,19 @@
                                '</composite>' +
                '</content>' +
                        '</entry>';
-               cloudComposite.post(entry, addCompositeResponse);
+               cloudComposite.post(entry, addNodeResponse);
        }
 
-       function addCompositeResponse() {
-               document.newCompositeForm.nodeName.value = "";
-               document.newCompositeForm.nodeURI.value = "";
-               document.newCompositeForm.compositeNamespace.value = "";
-               document.newCompositeForm.compositeName.value = "";
-               document.newCompositeForm.contributionURI.value = "";
-           getComposites();
+       function addNodeResponse() {
+               document.newNodeForm.nodeName.value = "";
+               document.newNodeForm.nodeURI.value = "";
+               document.newNodeForm.compositeNamespace.value = "";
+               document.newNodeForm.compositeName.value = "";
+               document.newNodeForm.contributionURI.value = "";
+           getNodes();
        }       
 
-       function startComposite() {
+       function startNode() {
                var composites  = array(document.cloudCompositeForm.composites);
                for (var i = 0; i < composites.length; i++) {
                        if (composites[i].checked) {
@@ -179,12 +182,12 @@
                                var entry = '<entry 
xmlns="http://www.w3.org/2005/Atom";>' +
                '<id>' + id + '</id>' +
                        '</entry>';
-                               processCollection.post(entry, 
startCompositeResponse);
+                               processCollection.post(entry, 
startNodeResponse);
                        }
                }
        }
 
-       function startCompositeResponse() {
+       function startNodeResponse() {
                for (var i = 0; i < composites.length; i++) {
                        if (composites[i].checked) {
                          composites[i].checked = false;
@@ -192,17 +195,17 @@
                }
        }       
 
-       function stopComposite() {
+       function stopNode() {
                var composites  = array(document.cloudCompositeForm.composites);
                for (var i = 0; i < composites.length; i++) {
                        if (composites[i].checked) {
                            var id = nodeNames[i];
-                               processCollection.del(id, 
stopCompositeResponse);
+                               processCollection.del(id, stopNodeResponse);
                        }
                }
        }
 
-       function stopCompositeResponse() {
+       function stopNodeResponse() {
                for (var i = 0; i < composites.length; i++) {
                        if (composites[i].checked) {
                          composites[i].checked = false;
@@ -210,9 +213,71 @@
                }
        }       
 
+       var deployedComposites = new Array();
+       
+       function getComposites() {
+               domainComposite.get("", getCompositesResponse);
+       }
+       
+       function getCompositesResponse(feed) {
+               if (feed != null) {
+                       var entries = feed.getElementsByTagName("entry");       
       
+                       for (var i=0; i<entries.length; i++) {
+                               var id = 
entries[i].getElementsByTagName("id")[0].firstChild.nodeValue;
+                               deployedComposites[id] = id;
+                       }
+               }
+       }
+
+       function suggestCompositeNamespaces() {
+               var namespaces = new Array();
+               for (var uri in deployedComposites) {
+                       var qname = compositeName(uri);
+                       var ns = qname.substring(0, qname.indexOf(';'));
+                       namespaces[ns] = ns;
+               }
+               return array(namespaces);
+       }       
+
+       function suggestCompositeNames() {
+               var inputns = document.newNodeForm.compositeNamespace.value;
+               var names = new Array();
+               for (var uri in deployedComposites) {
+                       var qname = compositeName(uri);
+                       var sc = qname.indexOf(';');
+                       var ns = qname.substring(0, sc);
+                       var name = qname.substring(sc + 1);
+                       if (ns == inputns || inputns == "") {
+                               names[name] = name;
+                       }
+               }
+               return array(names);
+       }       
+
+       function suggestContributionURIs() {
+               var inputns = document.newNodeForm.compositeNamespace.value;
+               var inputname = document.newNodeForm.compositeName.value;
+               var uris = new Array();
+               for (var uri in deployedComposites) {
+                       var qname = compositeName(uri);
+                       var sc = qname.indexOf(';');
+                       var ns = qname.substring(0, sc);
+                       var name = qname.substring(sc + 1);
+                       if ((ns == inputns || inputns == "") && (name == 
inputname || inputname == "")) {
+                               var curi = contributionURI(uri);
+                               uris[curi] = curi;
+                       }
+               }
+               return array(uris);
+       }
+
        function init() {
                toolbar();
+               getNodes();
                getComposites();
+               suggest(document.newNodeForm.compositeNamespace, 
suggestCompositeNamespaces);
+               suggest(document.newNodeForm.compositeName, 
suggestCompositeNames);
+               suggest(document.newNodeForm.contributionURI, 
suggestContributionURIs);
        }
 
 </script>
@@ -236,28 +301,28 @@
   <form name="cloudCompositeForm">
     <div id="composites" ></div>
     <br>
-    <input type="button" onClick="startComposite()"  value="Start" />
-    <input type="button" onClick="stopComposite()"  value="Stop" />
+    <input type="button" onClick="startNode()"  value="Start" />
+    <input type="button" onClick="stopNode()"  value="Stop" />
     &nbsp;&nbsp;
-    <input type="button" onClick="deleteComposite()"  value="Delete" />
+    <input type="button" onClick="deleteNode()"  value="Delete" />
   </form>
 
   <br><br>
   
-  <form name="newCompositeForm">
+  <form name="newNodeForm">
     <table width="100%">
     <tr><th>Add a Node</th></tr>
     <tr><td>Add a node to the cloud. The node will run the SCA components 
declared in the specified composite.</td></tr>
     </table>
     <br>
     <table>
-    <tr><td>Node name:</td><td><input type="text" name="nodeName" 
size="50"/></td><td>e.g. MyNode</td></tr>
-    <tr><td>Node URI:</td><td><input type="text" name="nodeURI" 
size="50"/></td></td><td>e.g. http://host:8080</td></tr>
-    <tr><td>Composite namespace:</td><td><input type="text" 
name="compositeNamespace" size="50"/></td></td><td>e.g. 
http://my/namespace</td></tr>
-    <tr><td>Composite name:</td><td><input type="text" name="compositeName" 
size="50"/></td></td><td>e.g. mycomposite</td></tr>
-    <tr><td>Contribution URI:</td><td><input type="text" 
name="contributionURI" size="50"/></td></td><td>e.g. mycontrib, 
http://mycontrib</td></tr>
+    <tr><td>Node name:</td><td><input type="text" name="nodeName" 
size="50"/></td><td>e.g. YourNode</td></tr>
+    <tr><td>Node URI:</td><td><input type="text" name="nodeURI" 
size="50"/></td></td><td>e.g. http://yourhost:8080</td></tr>
+    <tr><td>Composite namespace:</td><td><input type="text" 
name="compositeNamespace" size="50"/></td></td><td>e.g. 
http://your/namespace</td></tr>
+    <tr><td>Composite name:</td><td><input type="text" name="compositeName" 
size="50"/></td></td><td>e.g. yourcomposite</td></tr>
+    <tr><td>Contribution URI:</td><td><input type="text" 
name="contributionURI" size="50"/></td></td><td>e.g. yourcontrib, 
http://yourcontrib</td></tr>
     </table>
-    <input type="button" onClick="addComposite()" value="Add" />
+    <input type="button" onClick="addNode()" value="Add" />
   </form>
   
   </div>

Modified: 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/composite.html
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/composite.html?rev=648914&r1=648913&r2=648914&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/composite.html
 (original)
+++ 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/composite.html
 Wed Apr 16 18:03:38 2008
@@ -28,6 +28,9 @@
        //@Reference
        var domainComposite = new Reference("domainComposite");
        
+       //@Reference
+       var workspace = new Reference("workspace");
+       
        function getComposites() {
                domainComposite.get("", getCompositesResponse);
        }
@@ -120,11 +123,93 @@
                document.newCompositeForm.compositeName.value = "";
                document.newCompositeForm.contributionURI.value = "";
            getComposites();
+       }
+       
+       var contributedComposites = new Array();
+       
+       function getContributions() {
+               workspace.get("", getContributionsResponse);
+       }
+       
+       function getContributionsResponse(feed) {
+               if (feed != null) {
+                       contributedComposites = new Array();
+                       var entries = feed.getElementsByTagName("entry");       
       
+                       for (var i=0; i<entries.length; i++) {
+                               if 
(entries[i].getElementsByTagName("content")[0].firstChild != null) {
+                                       var content = 
entries[i].getElementsByTagName("content")[0].firstChild.nodeValue;
+                                       var bs = content.indexOf('<span 
id="deployables">');
+                                       if (bs != -1) {
+                                               var es = 
content.indexOf('</span>', bs); 
+                                               content = content.substring(bs, 
es + 7);
+                                               for (;;) {
+                                                       var bc = 
content.indexOf('composite:');
+                                                       if (bc == -1) {
+                                                               break;
+                                                       }
+                                                       var ec = 
content.indexOf('">', bc);
+                                                       if (ec == -1) {
+                                                               break;
+                                                       }
+                                                       var uri = 
content.substring(bc, ec);
+                                                       
contributedComposites[uri] = uri;
+                                                       content = 
content.substring(ec +1);
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+       
+       function suggestCompositeNamespaces() {
+               var namespaces = new Array();
+               for (var uri in contributedComposites) {
+                       var qname = compositeName(uri);
+                       var ns = qname.substring(0, qname.indexOf(';'));
+                       namespaces[ns] = ns;
+               }
+               return array(namespaces);
        }       
 
+       function suggestCompositeNames() {
+               var inputns = 
document.newCompositeForm.compositeNamespace.value;
+               var names = new Array();
+               for (var uri in contributedComposites) {
+                       var qname = compositeName(uri);
+                       var sc = qname.indexOf(';');
+                       var ns = qname.substring(0, sc);
+                       var name = qname.substring(sc + 1);
+                       if (ns == inputns || inputns == "") {
+                               names[name] = name;
+                       }
+               }
+               return array(names);
+       }       
+
+       function suggestContributionURIs() {
+               var inputns = 
document.newCompositeForm.compositeNamespace.value;
+               var inputname = document.newCompositeForm.compositeName.value;
+               var uris = new Array();
+               for (var uri in contributedComposites) {
+                       var qname = compositeName(uri);
+                       var sc = qname.indexOf(';');
+                       var ns = qname.substring(0, sc);
+                       var name = qname.substring(sc + 1);
+                       if ((ns == inputns || inputns == "") && (name == 
inputname || inputname == "")) {
+                               var curi = contributionURI(uri);
+                               uris[curi] = curi;
+                       }
+               }
+               return array(uris);
+       }
+
        function init() {
                toolbar();
                getComposites();
+               getContributions();
+               suggest(document.newCompositeForm.compositeNamespace, 
suggestCompositeNamespaces);
+               suggest(document.newCompositeForm.compositeName, 
suggestCompositeNames);
+               suggest(document.newCompositeForm.contributionURI, 
suggestContributionURIs);
        }
                
 </script>
@@ -160,9 +245,9 @@
     </table>
     <br>
        <table>    
-    <tr><td>Composite namespace:</td><td><input type="text" 
name="compositeNamespace" size="50"/></td><td>e.g. 
http://my/namespace</td></tr> 
-    <tr><td>Composite name:</td><td><input type="text" name="compositeName" 
size="50"/></td><td>e.g. mycomposite</td></tr>
-    <tr><td>Contribution URI:</td><td><input type="text" 
name="contributionURI" size="50"/></td><td>e.g. mycontrib, 
http://mycontrib</td></tr>
+    <tr><td>Composite namespace:</td><td><input type="text" 
name="compositeNamespace" size="50"/></td><td>e.g. 
http://your/namespace</td></tr> 
+    <tr><td>Composite name:</td><td><input type="text" name="compositeName" 
size="50"/></td><td>e.g. yourcomposite</td></tr>
+    <tr><td>Contribution URI:</td><td><input type="text" 
name="contributionURI" size="50"/></td><td>e.g. yourcontrib, 
http://yourcontrib</td></tr>
     </table>
     <input type="button" onClick="addComposite()" value="Add" />
   </form>

Modified: 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/utils.js
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/utils.js?rev=648914&r1=648913&r2=648914&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/utils.js 
(original)
+++ 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/utils.js 
Wed Apr 16 18:03:38 2008
@@ -167,7 +167,7 @@
 }
 
 /**
- * Utility function returning an array from an array or an object. 
+ * Utility function returning an non-sparse array from an array or an object. 
  */ 
 function array(obj) {
     if (obj.length == undefined) {
@@ -176,7 +176,12 @@
                return a;
        }
        else {
-               return obj;
+               var a = new Array();
+               var n = 0;
+               for (var i in obj) {
+                       a[n++] = obj[i];
+               }
+               return a;
        }
 }
 

Modified: 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/workspace.html
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/workspace.html?rev=648914&r1=648913&r2=648914&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/workspace.html
 (original)
+++ 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/workspace.html
 Wed Apr 16 18:03:38 2008
@@ -114,14 +114,9 @@
            getContributions();
        }
        
-       //function suggestContributionIDs() {
-       //      return new Array('abc', 'def', 'ghi');
-       //}
-
        function init() {
                toolbar();
                getContributions();
-               //suggest(document.newContributionForm.contributionID, 
suggestContributionIDs);
        }
        
 </script>
@@ -156,8 +151,8 @@
     </table>
     <br>
     <table>
-    <tr><td>Contribution URI:</td><td><input type="text" name="contributionID" 
size="50"/></td></td><td>e.g. mycontrib, http://mycontrib</td></tr> 
-    <tr><td>Location:</td><td><input type="text" name="contributionLocation" 
size="50"/></td></td><td>e.g. http://host/myjar.jar, file:/mydir, 
file:/myjar.jar</td></tr>
+    <tr><td>Contribution URI:</td><td><input type="text" name="contributionID" 
size="50"/></td></td><td>e.g. yourcontrib, http://yourcontrib</td></tr> 
+    <tr><td>Location:</td><td><input type="text" name="contributionLocation" 
size="50"/></td></td><td>e.g. http://host/yourjar.jar, file:/yourdir, 
file:/yourjar.jar</td></tr>
     </table>
     <input type="button" onClick="addContribution()" value="Add" />
   </form>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to