You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2011/02/08 09:10:18 UTC

svn commit: r1068288 - in /tuscany/sca-cpp/trunk/modules/edit: apps/myprofile/ dashboards/ htdocs/ htdocs/app/ htdocs/dash/ htdocs/graph/ htdocs/page/ palettes/control/ palettes/events/ palettes/lists/ palettes/math/ palettes/operators/ palettes/social...

Author: jsdelfino
Date: Tue Feb  8 08:10:17 2011
New Revision: 1068288

URL: http://svn.apache.org/viewvc?rev=1068288&view=rev
Log:
Refactor groups of reusable components and improve layout a bit. Fix bug preventing saving empty composites.

Added:
    tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/
    tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/app.composite
    tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/app.html
    tuscany/sca-cpp/trunk/modules/edit/palettes/events/
    tuscany/sca-cpp/trunk/modules/edit/palettes/events/palette.composite
    tuscany/sca-cpp/trunk/modules/edit/palettes/lists/
    tuscany/sca-cpp/trunk/modules/edit/palettes/lists/palette.composite
      - copied, changed from r1067564, tuscany/sca-cpp/trunk/modules/edit/palettes/values/palette.composite
    tuscany/sca-cpp/trunk/modules/edit/palettes/math/
    tuscany/sca-cpp/trunk/modules/edit/palettes/math/palette.composite
    tuscany/sca-cpp/trunk/modules/edit/palettes/url/
    tuscany/sca-cpp/trunk/modules/edit/palettes/url/palette.composite
Removed:
    tuscany/sca-cpp/trunk/modules/edit/palettes/control/
Modified:
    tuscany/sca-cpp/trunk/modules/edit/dashboards/joe@localhost
    tuscany/sca-cpp/trunk/modules/edit/htdocs/app/app.html
    tuscany/sca-cpp/trunk/modules/edit/htdocs/app/index.html
    tuscany/sca-cpp/trunk/modules/edit/htdocs/dash/dashboard.html
    tuscany/sca-cpp/trunk/modules/edit/htdocs/graph/graph.html
    tuscany/sca-cpp/trunk/modules/edit/htdocs/graph/graph.js
    tuscany/sca-cpp/trunk/modules/edit/htdocs/main.html
    tuscany/sca-cpp/trunk/modules/edit/htdocs/menu.html
    tuscany/sca-cpp/trunk/modules/edit/htdocs/page/page.html
    tuscany/sca-cpp/trunk/modules/edit/htdocs/page/page.js
    tuscany/sca-cpp/trunk/modules/edit/palettes/operators/palette.composite
    tuscany/sca-cpp/trunk/modules/edit/palettes/social/palette.composite
    tuscany/sca-cpp/trunk/modules/edit/palettes/values/palette.composite

Added: tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/app.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/app.composite?rev=1068288&view=auto
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/app.composite (added)
+++ tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/app.composite Tue Feb  8 08:10:17 2011
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://myprofile" name="myprofile"><component t:x="425" t:y="244" name="fbprofile" t:color="blue1"><documentation>facebook profile</documentation><t:implementation.python script="fbprofile.py"/><service name="fbprofile"/><reference target="first" name="id"/></component><component t:x="425" t:y="287" name="twprofile" t:color="blue1"><documentation>twitter profile</documentation><t:implementation.python script="twprofile.py"/><service name="twprofile"/><reference target="first2" name="id"/></component><component t:x="549" t:y="243" name="first" t:color="yellow1"><documentation>first</documentation><t:implementation.python script="first.py"/><service name="first"/><reference target="rest" name="value"/></component><component t:x="679" t:y="251" name="rest" t:color="yellow1"><documentation>rest</documentation><t:implementation.python script="rest
 .py"/><service name="rest"/><reference target="path" name="value"/></component><component t:x="726" t:y="253" name="path" t:color="orange1"><documentation>path</documentation><t:implementation.python script="path.py"/><service name="path"/><property name="path" t:visible="false"/></component><component t:x="625" t:y="323" name="path2" t:color="orange1"><documentation>path</documentation><t:implementation.python script="path.py"/><service name="path"/><property name="path" t:visible="false"/></component><component t:x="575" t:y="325" name="rest2" t:color="yellow1"><documentation>rest</documentation><t:implementation.python script="rest.py"/><service name="rest"/><reference target="path2" name="value"/></component><service name="page" promote="page"/><component t:x="25" t:y="25" name="page" t:color="green1"><documentation>page</documentation><t:implementation.python script="page.py"/><service name="page" t:visible="false"/><property>/mypage.html</property><reference target="li
 st" name="value"/></component><component t:x="389" t:y="158" name="first2" t:color="yellow1"><documentation>first</documentation><t:implementation.python script="first.py"/><service name="first"/><reference target="rest2" name="value"/></component><component t:x="436" t:y="123" name="text" t:color="orange1"><t:implementation.python script="text.py"/><service name="text"/><property>This is my combined social profile</property></component><component t:x="128" t:y="25" name="list" t:color="yellow1"><documentation>list</documentation><t:implementation.python script="list_.py"/><service name="list"/><reference target="append" name="rest"/><property>This is my combined social profile</property></component><component t:x="352" t:y="26" name="append" t:color="yellow1"><documentation>append</documentation><t:implementation.python script="list_.py"/><service name="append"/><reference target="fbprofile" name="first"/><reference target="twprofile" name="second"/></component></composite>

Added: tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/app.html
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/app.html?rev=1068288&view=auto
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/app.html (added)
+++ tuscany/sca-cpp/trunk/modules/edit/apps/myprofile/app.html Tue Feb  8 08:10:17 2011
@@ -0,0 +1,32 @@
+<!--
+    * Licensed to the Apache Software Foundation (ASF) under one
+    * or more contributor license agreements.  See the NOTICE file
+    * distributed with this work for additional information
+    * regarding copyright ownership.  The ASF licenses this file
+    * to you under the Apache License, Version 2.0 (the
+    * "License"); you may not use this file except in compliance
+    * with the License.  You may obtain a copy of the License at
+    * 
+    *   http://www.apache.org/licenses/LICENSE-2.0
+    * 
+    * Unless required by applicable law or agreed to in writing,
+    * software distributed under the License is distributed on an
+    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    * KIND, either express or implied.  See the License for the
+    * specific language governing permissions and limitations
+    * under the License.    
+-->
+<div id="page">
+
+<span id="storeh1" class="h1" style="position:absolute; left: 0px; top: 0px"><h1>Store</h1></span>
+<span id="catalogh2" class="h2" style="position:absolute; left: 0px; top: 40px"><h2>Catalog</h2></span>
+<span id="addToCart" class="button" style="position:absolute; left: 0px; top: 160px"><input type="button" value="Add to Cart"/></span>
+  
+<span id="carth2" class="h2" style="position:absolute; left: 0px; top: 200px"><h2>Your Shopping Cart</h2></span>
+<span id="total" class="text" style="position:absolute; left: 0px; top: 300px"><span>total</span></span>
+
+<span id="checkout" class="button" style="position:absolute; left: 0px; top: 340px"><input type="button" value="Checkout"/></span>
+<span id="empty" class="button" style="position:absolute; left: 120px; top: 340px"><input type="button" value="Empty"/></span>
+<span id="feed" class="link" style="position:absolute; left: 240px; top: 340px"><a href="shoppingCart/"><span>(feed)</span></a></span>
+
+</div>

Modified: tuscany/sca-cpp/trunk/modules/edit/dashboards/joe@localhost
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/dashboards/joe%40localhost?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/dashboards/joe@localhost (original)
+++ tuscany/sca-cpp/trunk/modules/edit/dashboards/joe@localhost Tue Feb  8 08:10:17 2011
@@ -1 +1 @@
-(("Sample Online Store App" "store" ()) ("Layout Variation of the Online Store App" "store2" ()) ("Another Variation of the Online Store App" "store3" ()) ("Sample HTTP Relay App" "relay" ()) ("Travel Tutorial App" "travel" ()))
+(("Sample Online Store App" "store" ()) ("Layout Variation of the Online Store App" "store2" ()) ("Another Variation of the Online Store App" "store3" ()) ("Sample HTTP Relay App" "relay" ()) ("Travel Tutorial App" "travel" ()) ("My Aggregated Profile" "myprofile" ()) ("An Empty Test App" "test" ()))
\ No newline at end of file

Modified: tuscany/sca-cpp/trunk/modules/edit/htdocs/app/app.html
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/htdocs/app/app.html?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/htdocs/app/app.html (original)
+++ tuscany/sca-cpp/trunk/modules/edit/htdocs/app/app.html Tue Feb  8 08:10:17 2011
@@ -33,7 +33,7 @@
 
 <table style="width: 100%;">
 <tr>
-<th class="thl thr">Properties</th>
+<th class="thl thr">Settings</th>
 
 <th class="thl thr" style="padding-top: 0px; padding-bottom: 0px; padding-right: 0px; text-align: right;">
 <span id="source" style="font-weight: normal;">[atom]</span>
@@ -49,11 +49,11 @@
 <tr><tr><td><b>App Title:</b></td></tr>
 <tr><td><input type="text" id="appTitle" size="30"/></td></tr>
 <tr><tr><td><b>Category:</b></td></tr>
-<tr><td><input type="text" id="appCategory" size="15" value="Cool Apps"/></td></tr>
+<tr><td><input type="text" id="appCategory" size="15"/></td></tr>
 <tr><tr><td><b>Updated:</b></td></tr>
-<tr><td><span id="appUpdated">Feb 4, 2011</span></td></tr>
+<tr><td><span id="appUpdated"></span></td></tr>
 <tr><tr><td><b>Description:</b></td></tr>
-<tr><td><textarea id="appDescription" cols="30" rows="5">Enter a short description of your app here</textarea></td></tr>
+<tr><td><textarea id="appDescription" cols="30" rows="5"></textarea></td></tr>
 </table>
 </form>
 </div>
@@ -74,12 +74,23 @@ var appname = ui.queryParams()['app'];
 $('source').innerHTML = '[<a href="/apps/' + appname + '">atom</a>]';
 
 /**
+ * Default field values.
+ */
+var deftitle = 'Enter the title of your app here';
+var defcategory = 'Cool Apps';
+var defdate = 'Feb 4, 2011';
+var defdesc = 'Enter a short description of your app here';
+
+/**
  * Get and display an app.
  */
 function getapp(name) {
     dashboard.get(name, function(doc) {
-        var entry = atom.readATOMEntryDocument(doc);
-        $('appTitle').value = car(entry);
+        var entry = doc != null? atom.readATOMEntryDocument(doc) : mklist('', name);
+        $('appTitle').value = car(entry) != ''? car(entry) : deftitle;
+        $('appCategory').value = defcategory;
+        $('appUpdated').innerHTML = defdate;
+        $('appDescription').innerHTML = defdesc;
     });
 }
 
@@ -88,9 +99,8 @@ function getapp(name) {
  */
 $('saveButton').onclick = function() {
     var title = $('appTitle').value;
-    var app = mklist(title, appname, mklist());
+    var app = mklist(title != deftitle && title != ''? title : appname, appname, mklist());
     var entry = atom.writeATOMEntry(app);
-
     dashboard.put(appname, car(entry));
     return false;
 };

Modified: tuscany/sca-cpp/trunk/modules/edit/htdocs/app/index.html
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/htdocs/app/index.html?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/htdocs/app/index.html (original)
+++ tuscany/sca-cpp/trunk/modules/edit/htdocs/app/index.html Tue Feb  8 08:10:17 2011
@@ -18,7 +18,7 @@
 -->
 <html>
 <head>
-<title>App Editor</title>
+<title>App Settings</title>
 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"/> 
 <meta name="apple-mobile-web-app-capable" content="yes"/>
 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>

Modified: tuscany/sca-cpp/trunk/modules/edit/htdocs/dash/dashboard.html
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/htdocs/dash/dashboard.html?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/htdocs/dash/dashboard.html (original)
+++ tuscany/sca-cpp/trunk/modules/edit/htdocs/dash/dashboard.html Tue Feb  8 08:10:17 2011
@@ -49,6 +49,10 @@
 <tr><td><input type="text" id="appName" size="10"/></td></tr>
 <tr><tr><td><b>App Title:</b></td></tr>
 <tr><td><input type="text" id="appTitle" size="30"/></td></tr>
+<tr><tr><td><b>Category:</b></td></tr>
+<tr><td><input type="text" id="appCategory" size="15" value="Cool Apps"/></td></tr>
+<tr><tr><td><b>Description:</b></td></tr>
+<tr><td><textarea id="appDescription" cols="30" rows="5">Enter a short description of your app here</textarea></td></tr>
 <tr><td>
 <input id="createAppOKButton" type="button" style="font-weight: bold;" value="Create"/>
 <input id="createAppCancelButton" type="button" value="Cancel"/>
@@ -89,8 +93,7 @@ function getapps(sync) {
             title = car(entry);
 
             apps += '<tr>';
-            //apps += '<td><input name="apps" type="checkbox" value="' + name + '">' + '<a href=\"' + '/app/?app=' + name + '\">' + name + '</a></td>';
-            apps += '<td><a href=\"' + '/app/?app=' + name + '\" target=\"_parent\">' + name + '</a></td>';
+            apps += '<td><a href=\"' + '/graph/?app=' + name + '\" target=\"_parent\">' + name + '</a></td>';
             apps += '<td class="tdw" colspan="2">' + title + '</td>';
             apps += '</tr>';
         }
@@ -108,9 +111,21 @@ function getapps(sync) {
 }
 
 /**
+ * Default field values.
+ */
+var deftitle = 'Enter the title of your app here';
+var defcategory = 'Cool Apps';
+var defdate = 'Feb 4, 2011';
+var defdesc = 'Enter a short description of your app here';
+
+/**
  * Display create app form.
  */
 $('createAppButton').onclick = function() {
+    $('appName').value = '';
+    $('appTitle').value = deftitle;
+    $('appCategory').value = defcategory;
+    $('appDescription').value = defdesc;
     $('newApp').style.visibility = 'visible';
     $('appName').focus();
     return false;
@@ -121,14 +136,14 @@ $('createAppButton').onclick = function(
  */
 $('createAppOKButton').onclick = function() {
     var name = $('appName').value;
+    if (name == '')
+        return false;
     var title = $('appTitle').value;
-    var app = mklist(title, name, mklist());
+    var app = mklist(title != deftitle && title != ''? title : name, name, mklist());
     var entry = atom.writeATOMEntry(app);
     dashboard.put(name, car(entry));
-    $('appName').value = '';
-    $('appTitle').title = '';
     getapps();
-    div.style.visibility = 'visible';
+    div.style.visibility = 'hidden';
     return false;
 };
 
@@ -137,8 +152,6 @@ $('createAppOKButton').onclick = functio
  */
 $('createAppCancelButton').onclick = function() {
     $('newApp').style.visibility = 'hidden';
-    $('appName').value = '';
-    $('appTitle').title = '';
     return false;
 };
 

Modified: tuscany/sca-cpp/trunk/modules/edit/htdocs/graph/graph.html
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/htdocs/graph/graph.html?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/htdocs/graph/graph.html (original)
+++ tuscany/sca-cpp/trunk/modules/edit/htdocs/graph/graph.html Tue Feb  8 08:10:17 2011
@@ -34,7 +34,7 @@
 
 <table style="width: 100%;">
 <tr>
-<th class="thl" style="width: 330px; min-width: 330px;">Palette</th><th class="ths" style="width: 3px; min-width: 3px;"></th>
+<th class="thl" style="width: 230px; min-width: 230px;">Palette</th><th class="ths" style="width: 3px; min-width: 3px;"></th>
 
 <th class="thr" style="padding-top: 0px; padding-bottom: 0px;">
 <input id="compName" type="text" value="component name" style="position: relative; width: 200px;"/>
@@ -90,7 +90,16 @@ function getapp(name, g) {
         return;
     apps.get(name, function(doc) {
         composite = atomcomposite(doc);
-        graph.edit(composite, graph.composite(composite, graph.mkpath().move(350,0)), g);
+        if (isNil(composite)) {
+
+            // Create a default empty composite if necessary
+            var x = '<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"' +
+                'targetNamespace="http://' + name + '" ' +
+                'name="' + name + '">' +
+                '</composite>';
+            composite = readXML(mklist(x));
+        }
+        graph.edit(composite, graph.composite(composite, graph.mkpath().move(palcx,0)), g);
     });
 }
 
@@ -101,7 +110,7 @@ function getpalette(name, g, bg, palette
     if (isNil(name))
         return;
     palettes.get(name, function(doc) {
-        gpalettes[name] = graph.composite(atomcomposite(doc), graph.mkpath().move(150,0));
+        gpalettes[name] = graph.composite(atomcomposite(doc), graph.mkpath().move(85,0));
         graph.display(gpalettes[name], name == spalette? g : bg);
     });
 }
@@ -143,12 +152,16 @@ var bg = graph.mkgroup(graph.mkpath());
 
 // Install the palettes
 var gpalettes = new Array();
-var spalette = 'values';
-installpalette('values', graph.mkpath().move(0,10), g, bg, spalette, gpalettes);
-installpalette('control', graph.mkpath().move(0,60), g, bg, spalette, gpalettes);
-installpalette('operators', graph.mkpath().move(0,110), g, bg, spalette, gpalettes);
-installpalette('social', graph.mkpath().move(0,160), g, bg, spalette, gpalettes);
-installpalette('sensors', graph.mkpath().move(0,210), g, bg, spalette, gpalettes);
+var spalette = 'events';
+var pos = graph.mkpath();
+installpalette('events', pos.rmove(0,10), g, bg, spalette, gpalettes);
+installpalette('values', pos.rmove(0,50), g, bg, spalette, gpalettes);
+installpalette('url', pos.rmove(0, 50), g, bg, spalette, gpalettes);
+installpalette('lists', pos.rmove(0, 50), g, bg, spalette, gpalettes);
+installpalette('operators', pos.rmove(0, 50), g, bg, spalette, gpalettes);
+installpalette('math', pos.rmove(0, 50), g, bg, spalette, gpalettes);
+installpalette('social', pos.rmove(0, 50), g, bg, spalette, gpalettes);
+installpalette('sensors', pos.rmove(0, 50), g, bg, spalette, gpalettes);
 
 // Get and display the current app
 getapp(appname, g);

Modified: tuscany/sca-cpp/trunk/modules/edit/htdocs/graph/graph.js
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/htdocs/graph/graph.js?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/htdocs/graph/graph.js (original)
+++ tuscany/sca-cpp/trunk/modules/edit/htdocs/graph/graph.js Tue Feb  8 08:10:17 2011
@@ -49,6 +49,18 @@ graph.colors.yellow1 = '#fcee21';
 graph.colors.magenta1 = '#c0688a';
 
 /**
+ * Default positions and sizes.
+ */
+var palcx = 250;
+var trashcx = 230;
+var proxcx = 20;
+var proxcy = 20;
+var buttoncx = 80;
+var buttoncy = 40;
+var curvsz = 5;
+var tabsz = 3;
+
+/**
  * Base path class.
  */
 graph.BasePath = function() {
@@ -185,11 +197,11 @@ if (ui.isIE()) {
 
             if (graph.dragging.parentNode == vmlg && graph.dragging.id.substring(0, 8) != 'palette:') {
                 var gpos = graph.relpos(graph.dragging);
-                if (gpos.xpos() >= 330) {
+                if (gpos.xpos() >= trashcx) {
 
                     // If component close enough to editing area, move it there
-                    if (gpos.xpos() < 350)
-                        graph.move(graph.dragging, graph.mkpath().move(350, gpos.ypos()));
+                    if (gpos.xpos() < palcx)
+                        graph.move(graph.dragging, graph.mkpath().move(palcx, gpos.ypos()));
 
                     // Add new dragged component to the composite
                     if (isNil(graph.dragging.compos)) {
@@ -282,6 +294,7 @@ if (ui.isIE()) {
 
             // Change the component property value
             graph.setproperty(graph.selected.comp, pvalue.value);
+            pvalue.value = graph.property(graph.selected.comp);
 
             // Refresh the composite
             graph.refresh(svg);
@@ -364,7 +377,7 @@ if (ui.isIE()) {
     graph.comptitle = function(comp) {
         var tsvcs = graph.tsvcs(comp);
         var lsvcs = graph.lsvcs(comp);
-        var pos = graph.mkpath().move(isNil(lsvcs)? 5 : 25, isNil(tsvcs)? 5 : 25);
+        var pos = graph.mkpath().move(isNil(lsvcs)? tabsz : (tabsz * 5), isNil(tsvcs)? tabsz : (tabsz * 5));
         return graph.mktitle(graph.title(comp), true, pos);
     };
 
@@ -385,7 +398,7 @@ if (ui.isIE()) {
     graph.proptitle = function(comp) {
         var tsvcs = graph.tsvcs(comp);
         var lsvcs = graph.lsvcs(comp);
-        var pos = graph.mkpath().move(isNil(lsvcs)? 5 : 25, isNil(tsvcs)? 20 : 40);
+        var pos = graph.mkpath().move(isNil(lsvcs)? tabsz : (tabsz * 5), isNil(tsvcs)? 15 + tabsz : 15 + (tabsz * 5));
         return graph.mktitle(graph.property(comp), false, pos);
     };
 
@@ -651,11 +664,11 @@ if (ui.isIE()) {
 
             if (graph.dragging.parentNode == svg && graph.dragging.id.substring(0, 8) != 'palette:') {
                 var gpos = graph.relpos(graph.dragging);
-                if (gpos.xpos() >= 330) {
+                if (gpos.xpos() >= trashcx) {
 
                     // If component close enough to editing area, move it there
-                    if (gpos.xpos() < 350)
-                        graph.move(graph.dragging, graph.mkpath().move(350, gpos.ypos()));
+                    if (gpos.xpos() < palcx)
+                        graph.move(graph.dragging, graph.mkpath().move(palcx, gpos.ypos()));
 
                     // Add new dragged component to the composite
                     if (isNil(graph.dragging.compos)) {
@@ -766,6 +779,7 @@ if (ui.isIE()) {
 
             // Change the component property value
             graph.setproperty(graph.selected.comp, pvalue.value);
+            pvalue.value = graph.property(graph.selected.comp);
 
             // Refresh the composite
             graph.refresh(svg);
@@ -1034,6 +1048,8 @@ graph.property = function(e) {
     var p = scdl.properties(e);
     if (isNil(p))
         return '';
+    if (scdl.visible(car(p)) == 'false')
+        return '';
     return scdl.propertyValue(car(p));
 };
 
@@ -1044,7 +1060,10 @@ graph.setproperty = function(e, value) {
     var p = scdl.properties(e);
     if (isNil(p))
         return '';
-    setElement(car(p), mklist(element, "'property", mklist(attribute, "'name", "property"), value));
+    if (scdl.visible(car(p)) == 'false')
+        return '';
+    var name = scdl.name(car(p));
+    setElement(car(p), mklist(element, "'property", mklist(attribute, "'name", name != null? name : "property"), value));
     return value;
 };
 
@@ -1117,7 +1136,7 @@ graph.rrefheight = function(ref, cassoc)
     return memo(ref, 'rheight', function() {
         var target = assoc(scdl.target(ref), cassoc);
         if (isNil(target))
-            return 60;
+            return tabsz * 10;
         return graph.compclosureheight(cadr(target), cassoc);
     });
 };
@@ -1158,9 +1177,9 @@ graph.brefsheight = function(refs, casso
 graph.compheight = function(comp, cassoc) {
     return memo(comp, 'height', function() {
         var lsvcs = graph.lsvcs(comp);
-        var lsvcsh = Math.max(1, length(lsvcs)) * 60 + 20;
+        var lsvcsh = Math.max(1, length(lsvcs)) * (tabsz * 10) + (tabsz * 4);
         var rrefs = graph.rrefs(comp);
-        var rrefsh = graph.rrefsheight(rrefs, cassoc) + 20;
+        var rrefsh = graph.rrefsheight(rrefs, cassoc) + (tabsz * 4);
         var height = Math.max(lsvcsh, rrefsh);
         return height;
     });
@@ -1184,7 +1203,7 @@ graph.brefwidth = function(ref, cassoc) 
     return memo(ref, 'width', function() {
         var target = assoc(scdl.target(ref), cassoc);
         if (isNil(target))
-            return 60;
+            return tabsz * 10;
         return graph.compclosurewidth(cadr(target), cassoc);
     });
 };
@@ -1212,11 +1231,11 @@ graph.rrefswidth = function(refs, cassoc
  */
 graph.compwidth = function(comp, cassoc) {
     return memo(comp, 'width', function() {
-        var twidth = Math.max(graph.comptitlewidth(comp), graph.proptitlewidth(comp)) + 20;
+        var twidth = Math.max(graph.comptitlewidth(comp), graph.proptitlewidth(comp)) + (tabsz * 8);
         var tsvcs = graph.tsvcs(comp);
-        var tsvcsw = Math.max(1, length(tsvcs)) * 60 + 20;
+        var tsvcsw = Math.max(1, length(tsvcs)) * (tabsz * 10) + (tabsz * 4);
         var brefs = graph.brefs(comp);
-        var brefsw = graph.brefswidth(brefs, cassoc) + 20;
+        var brefsw = graph.brefswidth(brefs, cassoc) + (tabsz * 4);
         var width = Math.max(twidth, Math.max(tsvcsw, brefsw));
         return width;
     });
@@ -1242,10 +1261,11 @@ graph.rrefpath = function(ref, cassoc, p
     // Record reference position in the path
     var xpos = path.xpos();
     var ypos = path.ypos();
-    path.refpos = cons(mklist(ref, graph.mkpath().move(xpos, ypos + 30)), path.refpos);
+    //path.refpos = cons(mklist(ref, graph.mkpath().move(xpos, ypos + (tabsz * 6))), path.refpos);
+    path.refpos = cons(mklist(ref, graph.mkpath().move(xpos, ypos + (tabsz * 5))), path.refpos);
 
     // Compute the reference path
-    return path.rline(0,10).rline(0,10).rcurve(0,5,-5,0).rcurve(-5,0,0,-5).rcurve(0,-5,-5,0).rcurve(-5,0,0,5).rline(0,20).rcurve(0,5,5,0).rcurve(5,0,0,-5).rcurve(0,-5,5,0).rcurve(5,0,0,5).line(path.xpos(),ypos + height);
+    return path.rline(0,tabsz).rline(0,tabsz * 2).rcurve(0,tabsz,-tabsz,0).rcurve(-tabsz,0,0,-tabsz).rcurve(0,-tabsz,-tabsz,0).rcurve(-tabsz,0,0,tabsz).rline(0,tabsz * 4).rcurve(0,tabsz,tabsz,0).rcurve(tabsz,0,0,-tabsz).rcurve(0,-tabsz,tabsz,0).rcurve(tabsz,0,0,tabsz).line(path.xpos(),ypos + height);
 };
 
 /**
@@ -1257,40 +1277,40 @@ graph.brefpath = function(ref, cassoc, p
     // Record reference position in the path
     var xpos = path.xpos();
     var ypos = path.ypos();
-    path.refpos = cons(mklist(ref, graph.mkpath().move(xpos - width + 30, ypos)), path.refpos);
+    path.refpos = cons(mklist(ref, graph.mkpath().move(xpos - width + tabsz * 5, ypos)), path.refpos);
 
     // Compute the reference path
-    return path.line(xpos - width + 60,path.ypos()).rline(-10,0).rline(-10,0).rcurve(-5,0,0,-5).rcurve(0,-5,5,0).rcurve(5,0,0,-5).rcurve(0,-5,-5,0).rline(-20,0).rcurve(-5,0,0,5).rcurve(0,5,5,0).rcurve(5,0,0,5).rcurve(0,5,-5,0).line(xpos - width,path.ypos());
+    return path.line(xpos - width + (tabsz * 10),path.ypos()).rline(-tabsz,0).rline(-(tabsz *2),0).rcurve(-tabsz,0,0,-tabsz).rcurve(0,-tabsz,tabsz,0).rcurve(tabsz,0,0,-tabsz).rcurve(0,-tabsz,-tabsz,0).rline(-(tabsz * 4),0).rcurve(-tabsz,0,0,tabsz).rcurve(0,tabsz,tabsz,0).rcurve(tabsz,0,0,tabsz).rcurve(0,tabsz,-tabsz,0).line(xpos - width,path.ypos());
 };
 
 /**
  * Return a path representing a service positioned to the left of a component.
  */
 graph.lsvcpath = function(svc, cassoc, path) {
-    var height = 60;
+    var height = tabsz * 10;
 
     // Record service position in the path
     var xpos = path.xpos();
     var ypos = path.ypos();
-    path.svcpos = cons(mklist(svc, graph.mkpath().move(xpos, ypos - 30)), path.svcpos);
+    path.svcpos = cons(mklist(svc, graph.mkpath().move(xpos, ypos - (tabsz * 6))), path.svcpos);
 
     // Compute the service path
-    return path.rline(0,-10).rline(0, -10).rcurve(0,-5,-5,0).rcurve(-5,0,0,5).rcurve(0,5,-5,0).rcurve(-5,0,0,-5).rline(0,-20).rcurve(0,-5,5,0).rcurve(5,0,0,5).rcurve(0,5,5,0).rcurve(5,0,0,-5).line(path.xpos(), ypos - height);
+    return path.rline(0,-tabsz).rline(0, -(tabsz * 2)).rcurve(0,-tabsz,-tabsz,0).rcurve(-tabsz,0,0,tabsz).rcurve(0,tabsz,-tabsz,0).rcurve(-tabsz,0,0,-tabsz).rline(0,-(tabsz * 4)).rcurve(0,-tabsz,tabsz,0).rcurve(tabsz,0,0,tabsz).rcurve(0,tabsz,tabsz,0).rcurve(tabsz,0,0,-tabsz).line(path.xpos(), ypos - height);
 };
 
 /**
  * Return a path representing a service positioned at the top of a component.
  */
 graph.tsvcpath = function(svc, cassoc, path) {
-    var width = 60;
+    var width = tabsz * 10;
 
     // Record service position in the path
     var xpos = path.xpos();
     var ypos = path.ypos();
-    path.svcpos = cons(mklist(svc, graph.mkpath().move(xpos + 30, ypos)), path.svcpos);
+    path.svcpos = cons(mklist(svc, graph.mkpath().move(xpos + (tabsz * 5), ypos)), path.svcpos);
 
     // Compute the service path
-    return path.rline(10,0).rline(10,0).rcurve(5,0,0,-5).rcurve(0,-5,-5,0).rcurve(-5,0,0,-5).rcurve(0,-5,5,0).rline(20,0).rcurve(5,0,0,5).rcurve(0,5,-5,0).rcurve(-5,0,0,5).rcurve(0,5,5,0).line(xpos + width,path.ypos());
+    return path.rline(tabsz,0).rline(tabsz * 2,0).rcurve(tabsz,0,0,-tabsz).rcurve(0,-tabsz,-tabsz,0).rcurve(-tabsz,0,0,-tabsz).rcurve(0,-tabsz,tabsz,0).rline(tabsz * 4,0).rcurve(tabsz,0,0,tabsz).rcurve(0,tabsz,-tabsz,0).rcurve(-tabsz,0,0,tabsz).rcurve(0,tabsz,tabsz,0).line(xpos + width,path.ypos());
 };
 
 /**
@@ -1311,7 +1331,7 @@ graph.comppath = function(comp, cassoc) 
         return renderpath(cdr(x), f, cassoc, f(car(x), cassoc, path));
     }
 
-    var path = graph.mkpath().move(10,0);
+    var path = graph.mkpath().move(curvsz,0);
 
     // Store the positions of services and references in the path
     path.refpos = mklist();
@@ -1323,23 +1343,23 @@ graph.comppath = function(comp, cassoc) 
 
     // Render the references on the right side of the component
     var rrefs = graph.rrefs(comp);
-    path = path.line(width - 10,path.ypos()).rcurve(10,0,0,10);
+    path = path.line(width - curvsz,path.ypos()).rcurve(curvsz,0,0,curvsz);
     path = renderpath(rrefs, graph.rrefpath, cassoc, path);
 
     // Render the references on the bottom side of the component
     var brefs = reverse(graph.brefs(comp));
-    var boffset = 10 + graph.brefswidth(brefs, cassoc);
-    path = path.line(path.xpos(),height - 10).rcurve(0,10,-10,0).line(boffset, path.ypos());
+    var boffset = curvsz + graph.brefswidth(brefs, cassoc);
+    path = path.line(path.xpos(),height - curvsz).rcurve(0,curvsz,curvsz * -1,0).line(boffset, path.ypos());
     path = renderpath(brefs, graph.brefpath, cassoc, path);
 
     // Render the services on the left side of the component
     var lsvcs = graph.lsvcs(comp);
-    var loffset = 10 + (length(lsvcs) * 60);
-    path = path.line(10,path.ypos()).rcurve(-10,0,0,-10).line(path.xpos(), loffset);
+    var loffset = curvsz + (length(lsvcs) * (tabsz * 10));
+    path = path.line(curvsz,path.ypos()).rcurve(curvsz * -1,0,0,curvsz * -1).line(path.xpos(), loffset);
     path = renderpath(lsvcs, graph.lsvcpath, cassoc, path);
 
     // Close the component node path
-    path = path.line(0,10).rcurve(0,-10,10,0);
+    path = path.line(0,curvsz).rcurve(0,curvsz * -1,curvsz,0);
 
     return path.end();
 };
@@ -1348,13 +1368,11 @@ graph.comppath = function(comp, cassoc) 
  * Return a path representing a button node.
  */
 graph.buttonpath = function(t) {
-    var height = 40;
-    var width = 120;
-    var path = graph.mkpath().move(10,0);
-    path = path.line(width - 10,path.ypos()).rcurve(10,0,0,10);
-    path = path.line(path.xpos(),height - 10).rcurve(0,10,-10,0).line(10, path.ypos());
-    path = path.line(10,path.ypos()).rcurve(-10,0,0,-10).line(path.xpos(), 10);
-    path = path.line(0,10).rcurve(0,-10,10,0);
+    var path = graph.mkpath().move(curvsz,0);
+    path = path.line(buttoncx - curvsz,path.ypos()).rcurve(curvsz,0,0,curvsz);
+    path = path.line(path.xpos(),buttoncy - curvsz).rcurve(0,curvsz,-curvsz,0).line(curvsz, path.ypos());
+    path = path.line(curvsz,path.ypos()).rcurve(-curvsz,0,0,-curvsz).line(path.xpos(), curvsz);
+    path = path.line(0,curvsz).rcurve(0,-curvsz,curvsz,0);
     return path.end();
 };
 
@@ -1486,14 +1504,16 @@ graph.composite = function(compos, pos) 
         function comppos(comp, pos) {
             var x = scdl.x(comp);
             var y = scdl.y(comp);
-            return graph.mkpath().move(x != null? Number(x) + 350 : pos.xpos(), y != null? Number(y) : pos.ypos());
+            return graph.mkpath().move(
+                    x != null? Number(x) + palcx : pos.xpos(),
+                    y != null? Number(y) : (isNil(graph.tsvcs(comp))? pos.ypos() : pos.ypos() + (tabsz * 4)));
         }
 
         /**
          * Move the rendering cursor down below a component.
          */
         function rendermove(comp, cassoc, pos) {
-            return pos.clone().rmove(0, graph.compclosureheight(comp, cassoc) + 40);
+            return pos.clone().rmove(0, graph.compclosureheight(comp, cassoc) + (tabsz * 2));
         }
 
         if (isNil(svcs))
@@ -1570,7 +1590,7 @@ graph.clonepalette = function(e, compos)
  * Move a SCDL component to the given position.
  */
 graph.movecomp = function(comp, pos) {
-    return append(mklist(element, "'component", mklist(attribute, "'t:x", '' + (pos.xpos() - 350)), mklist(attribute, "'t:y", '' + pos.ypos())),
+    return append(mklist(element, "'component", mklist(attribute, "'t:x", '' + (pos.xpos() - palcx)), mklist(attribute, "'t:y", '' + pos.ypos())),
             filter(function(e) { return !(isAttribute(e) && (attributeName(e) == "'t:x" || attributeName(e) == "'t:y")); }, elementChildren(comp)));
 };
 
@@ -1608,7 +1628,9 @@ graph.renamecomp = function(comp, compos
             return refactorrefs(cdr(refs), oname, nname);
 
         // Change the reference's target attribute
-        setElement(ref, append(mklist(element, "'reference"), append(filter(function(e) { return !(isAttribute(e) && attributeName(e) == "'target"); }, elementChildren(ref)), mklist(mklist(attribute, "'target", nname)))));
+        setElement(ref, append(mklist(element, "'reference"),
+            append(filter(function(e) { return !(isAttribute(e) && attributeName(e) == "'target"); }, elementChildren(ref)),
+                mklist(mklist(attribute, "'target", nname)))));
 
         return refactorrefs(cdr(refs), oname, nname);
     }
@@ -1619,10 +1641,11 @@ graph.renamecomp = function(comp, compos
 
     // Rename the SCDL promoted service and component
     var proms = filter(function(s) { return scdl.name(s) == oname }, scdl.services(compos));
-    if (!isNil(proms)) {
+    if (!isNil(proms))
         setElement(car(proms), mklist(element, "'service", mklist(attribute, "'name", name), mklist(attribute, "'promote", name)));
-    }
-    setElement(comp, append(mklist(element, "'component"), cons(mklist(attribute, "'name", name), filter(function(e) { return !(isAttribute(e) && attributeName(e) == "'name"); }, elementChildren(comp)))));
+    setElement(comp, append(mklist(element, "'component"),
+        cons(mklist(attribute, "'name", name),
+            filter(function(e) { return !(isAttribute(e) && attributeName(e) == "'name"); }, elementChildren(comp)))));
 
     return append(mklist(element, "'composite"), elementChildren(compos));
 };
@@ -1642,7 +1665,9 @@ graph.cutwire = function(node, compos, g
         var ref = car(refs);
         if (caddr(ref) == node) {
             setlist(ref, mklist(car(ref), cadr(ref), null));
-            setElement(car(ref), append(mklist(element, "'reference"), filter(function(e) { return !(isAttribute(e) && attributeName(e) == "'target"); }, elementChildren(car(ref)))));
+            setElement(car(ref),
+                append(mklist(element, "'reference"),
+                    filter(function(e) { return !(isAttribute(e) && attributeName(e) == "'target"); }, elementChildren(car(ref)))));
         }
         return cutref(cdr(refs), node);
     }
@@ -1658,7 +1683,8 @@ graph.cutwire = function(node, compos, g
     var comp = node.comp;
     var name = scdl.name(comp);
     var prom = mklist(element, "'service", mklist(attribute, "'name", name), mklist(attribute, "'promote", name));
-    return append(mklist(element, "'composite"), append(filter(function(c) {return !(isElement(c) && scdl.name(c) == name); }, elementChildren(compos)), mklist(prom, comp)));
+    return append(mklist(element, "'composite"),
+            append(filter(function(c) { return !(isElement(c) && scdl.name(c) == name); }, elementChildren(compos)), mklist(prom, comp)));
 }
 
 /**
@@ -1695,8 +1721,8 @@ graph.wire = function(n, compos, g) {
             var dx = Math.pow(rpos.xpos() - spos.xpos(), 2);
             var dy = Math.pow(rpos.ypos() - spos.ypos(), 2);
 
-            // Proximity threshold is 40 x 40 pixels
-            var rdist = (dx < 400 && dy < 400)? Math.sqrt(dx + dy) : 25000000;
+            // Check for proximity threshold
+            var rdist = (dx < (proxcx * proxcx) && dy < (proxcy * proxcy))? Math.sqrt(dx + dy) : 25000000;
 
             // Go through all the references in the component
             return closerefs(npos, cdr(refs), spos, fdist < rdist? cref : mklist(car(ref), cadr(ref), caddr(ref), rdist));
@@ -1750,7 +1776,7 @@ graph.refresh = function(g) {
 
     // Remove nodes and redisplay the composite associated with the graph
     map(function(n) { if (!isNil(n.comp) && n.id.substr(0, 8) != 'palette:') { g.removeChild(n); } return n; }, nodeList(g.childNodes));
-    graph.display(graph.composite(g.compos, graph.mkpath().move(350,0)), g);
+    graph.display(graph.composite(g.compos, graph.mkpath().move(palcx,0)), g);
     return g;
 };
 

Modified: tuscany/sca-cpp/trunk/modules/edit/htdocs/main.html
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/htdocs/main.html?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/htdocs/main.html (original)
+++ tuscany/sca-cpp/trunk/modules/edit/htdocs/main.html Tue Feb  8 08:10:17 2011
@@ -33,15 +33,15 @@
 <h2>App Dashboard</h2>
 <p>Try the <a href="dash" target="_parent">App Dashboard</a> to manage your collection of apps.</p>
 
-<h2>App Editor</h2>
-<p>Try the <a href="app/?app=store" target="_parent">App Editor</a> to edit an app.</p>
-
 <h2>Composition Editor</h2>
 <p>Try the <a href="graph/?app=store" target="_parent">Composition Editor</a> to compose the logic of an app.</p>
 
 <h2>Page Editor</h2>
 <p>Try the <a href="page/?app=store" target="_parent">Page Editor</a> to draw an app page.</p>
 
+<h2>App Settings Editor</h2>
+<p>Try the <a href="app/?app=store" target="_parent">App Settings Editor</a> to edit the settings of app.</p>
+
 </div>
 
 <script type="text/javascript">

Modified: tuscany/sca-cpp/trunk/modules/edit/htdocs/menu.html
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/htdocs/menu.html?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/htdocs/menu.html (original)
+++ tuscany/sca-cpp/trunk/modules/edit/htdocs/menu.html Tue Feb  8 08:10:17 2011
@@ -40,7 +40,7 @@ var mdiv = $('menu'); 
 var name = appname();
 mdiv.innerHTML = ui.menubar(
     append(mklist(ui.menu('Home', '/'), ui.menu('Dashboard', '/dash')),
-            (isNil(name) || name == 'undefined')? mklist() : mklist(ui.menu('App', '/app/?app=' + name), ui.menu('Composition', '/graph/?app=' + name), ui.menu('Page', '/page/?app=' + name))),
+            (isNil(name) || name == 'undefined')? mklist() : mklist(ui.menu('Composition', '/graph/?app=' + name), ui.menu('Page', '/page/?app=' + name), ui.menu('Settings', '/app/?app=' + name))),
     mklist(ui.menu('Sign out', '/logout')));
 
 </script>

Modified: tuscany/sca-cpp/trunk/modules/edit/htdocs/page/page.html
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/htdocs/page/page.html?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/htdocs/page/page.html (original)
+++ tuscany/sca-cpp/trunk/modules/edit/htdocs/page/page.html Tue Feb  8 08:10:17 2011
@@ -34,7 +34,7 @@
 
 <table style="width: 100%;">
 <tr>
-<th class="thl thr" style="width: 330px; min-width: 330px;">Palette</th><th class="ths" style="width: 3px; min-width: 3px;"></th>
+<th class="thl thr" style="width: 230px; min-width: 230px;">Palette</th><th class="ths" style="width: 3px; min-width: 3px;"></th>
 
 <th class="thl thr" style="padding-top: 0px; padding-bottom: 0px;">
 <input id="widgetName" type="text" value="widget name" style="position: relative; width: 150px;"/>
@@ -99,16 +99,21 @@ function getpage(name, edit) {
         return;
     pages.get(name, function(doc) {
 
-        // Convert the page to XHTML
-        var xhtml = writeStrings(writeXML(atompage(doc), false));
-
-        // Prepare page DOM in hidden buffer
+        // Convert the page to XHTML and place it in a hidden buffer
         var buffer = $('buffer');
-        buffer.innerHTML = xhtml;
+        var el = atompage(doc);
+        if (isNil(el)) {
+
+            // Create a default empty page if necessary
+            buffer.innerHTML = '<div id="page"></div>';
+        } else {
+            var xhtml = writeStrings(writeXML(atompage(doc), false));
+            buffer.innerHTML = xhtml;
+        }
 
         // Append page nodes to editor
         map(function(e) {
-                e.style.left = ui.csspos(e.style.left) + 350;
+                e.style.left = ui.csspos(e.style.left) + 250;
                 edit.appendChild(e);
                 return page.cover(e);
             }, nodeList(buffer.childNodes[0].childNodes));
@@ -135,7 +140,7 @@ $('saveButton').onclick = function(e) {
                 div.removeChild(e);
                 return e;
             }
-            var x = ui.csspos(e.style.left) - 350;
+            var x = ui.csspos(e.style.left) - 250;
             if (x < 0 || ui.csspos(e.style.top) < 0) {
                 div.removeChild(e);
                 return e;

Modified: tuscany/sca-cpp/trunk/modules/edit/htdocs/page/page.js
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/htdocs/page/page.js?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/htdocs/page/page.js (original)
+++ tuscany/sca-cpp/trunk/modules/edit/htdocs/page/page.js Tue Feb  8 08:10:17 2011
@@ -22,6 +22,12 @@
  */
 var page = {};
 
+/**
+ * Default positions and sizes.
+ */
+var palcx = 250;
+var trashcx = 230;
+
 if (ui.isIE()) {
 
     /**
@@ -78,12 +84,12 @@ if (ui.isIE()) {
                 return false;
 
             // Discard element dragged out of page area
-            if (ui.csspos(page.dragging.style.left) < 350 && page.dragging.id.substring(0, 8) != 'palette:') {
-                if (ui.csspos(page.dragging.style.left) >= 330) {
+            if (ui.csspos(page.dragging.style.left) < palcx && page.dragging.id.substring(0, 8) != 'palette:') {
+                if (ui.csspos(page.dragging.style.left) >= trashcx) {
 
                     // Unless it's close enough to page area, then move it there
-                    page.dragging.style.left = 350;
-                    page.dragging.cover.style.left = 350;
+                    page.dragging.style.left = palcx;
+                    page.dragging.cover.style.left = palcx;
                 } else {
                     page.dragging.parentNode.removeChild(page.dragging);
 
@@ -215,12 +221,12 @@ if (ui.isIE()) {
                 return false;
 
             // Discard element dragged out of page area
-            if (ui.csspos(page.dragging.style.left) < 350 && page.dragging.id.substring(0, 8) != 'palette:') {
-                if (ui.csspos(page.dragging.style.left) >= 330) {
+            if (ui.csspos(page.dragging.style.left) < palcx && page.dragging.id.substring(0, 8) != 'palette:') {
+                if (ui.csspos(page.dragging.style.left) >= trashcx) {
 
                     // Unless it's close enough to page area, then move it there
-                    page.dragging.style.left = 350;
-                    page.dragging.cover.style.left = 350;
+                    page.dragging.style.left = palcx;
+                    page.dragging.cover.style.left = palcx;
                 } else {
                     page.dragging.parentNode.removeChild(page.dragging);
 

Added: tuscany/sca-cpp/trunk/modules/edit/palettes/events/palette.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/palettes/events/palette.composite?rev=1068288&view=auto
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/palettes/events/palette.composite (added)
+++ tuscany/sca-cpp/trunk/modules/edit/palettes/events/palette.composite Tue Feb  8 08:10:17 2011
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+  xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"
+  targetNamespace="http://events"
+  name="palette">
+        
+    <service name="page" promote="page"/>
+    <service name="every" promote="every"/>
+
+    <component name="page" t:color="green1">
+        <documentation>page</documentation>
+        <t:implementation.python script="page.py"/>
+        <service name="page" t:visible="false"/>
+        <property name="property">/mypage.html</property>
+        <reference name="value"/>
+    </component>
+    
+    <component name="every" t:color="green1">
+        <documentation>every</documentation>
+        <t:implementation.python script="every.py"/>
+        <service name="every" t:visible="false"/>
+        <property name="property">60</property>
+        <reference name="value"/>
+    </component>
+    
+</composite>

Copied: tuscany/sca-cpp/trunk/modules/edit/palettes/lists/palette.composite (from r1067564, tuscany/sca-cpp/trunk/modules/edit/palettes/values/palette.composite)
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/palettes/lists/palette.composite?p2=tuscany/sca-cpp/trunk/modules/edit/palettes/lists/palette.composite&p1=tuscany/sca-cpp/trunk/modules/edit/palettes/values/palette.composite&r1=1067564&r2=1068288&rev=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/palettes/values/palette.composite (original)
+++ tuscany/sca-cpp/trunk/modules/edit/palettes/lists/palette.composite Tue Feb  8 08:10:17 2011
@@ -19,35 +19,17 @@
 -->
 <composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
   xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"
-  targetNamespace="http://values"
+  targetNamespace="http://lists"
   name="palette">
         
-    <service name="number" promote="number"/>
-    <service name="text" promote="text"/>
-    <service name="nothing" promote="nothing"/>
     <service name="list" promote="list"/>
     <service name="first" promote="first"/>
     <service name="rest" promote="rest"/>
+    <service name="foreach" promote="foreach"/>
     <service name="append" promote="append"/>
+    <service name="reverse" promote="reverse"/>
 
-    <component name="number" t:color="orange1">
-        <t:implementation.python script="number.py"/>
-        <service name="number"/>
-        <property name="property">0</property>
-    </component>
-    
-    <component name="text" t:color="orange1">
-        <t:implementation.python script="text.py"/>
-        <service name="text"/>
-        <property name="property">abc</property>
-    </component>
-    
-    <component name="nothing" t:color="orange1">
-        <t:implementation.python script="text.py"/>
-        <service name="nothing"/>
-    </component>
-    
-    <component name="list" t:color="orange1">
+    <component name="list" t:color="yellow1">
         <documentation>list</documentation>
         <t:implementation.python script="list_.py"/>
         <service name="list"/>
@@ -55,22 +37,37 @@
         <property name="property">abc</property>
     </component>
     
-    <component name="first" t:color="orange1">
-        <documentation>first of list</documentation>
+    <component name="first" t:color="yellow1">
+        <documentation>first</documentation>
         <t:implementation.python script="first.py"/>
         <service name="first"/>
         <reference name="value"/>
     </component>
     
-    <component name="rest" t:color="orange1">
-        <documentation>rest of list</documentation>
+    <component name="rest" t:color="yellow1">
+        <documentation>rest</documentation>
         <t:implementation.python script="rest.py"/>
         <service name="rest"/>
         <reference name="value"/>
     </component>
     
-    <component name="append" t:color="orange1">
-        <documentation>append lists</documentation>
+    <component name="foreach" t:color="yellow1">
+        <documentation>foreach</documentation>
+        <t:implementation.python script="ifelse.py"/>
+        <service name="foreach"/>
+        <reference name="list"/>
+        <reference name="apply"/>
+    </component>
+    
+    <component name="reverse" t:color="yellow1">
+        <documentation>reverse</documentation>
+        <t:implementation.python script="reverse.py"/>
+        <service name="reverse"/>
+        <reference name="value"/>
+    </component>
+    
+    <component name="append" t:color="yellow1">
+        <documentation>append</documentation>
         <t:implementation.python script="list_.py"/>
         <service name="append"/>
         <reference name="first"/>

Added: tuscany/sca-cpp/trunk/modules/edit/palettes/math/palette.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/palettes/math/palette.composite?rev=1068288&view=auto
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/palettes/math/palette.composite (added)
+++ tuscany/sca-cpp/trunk/modules/edit/palettes/math/palette.composite Tue Feb  8 08:10:17 2011
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+  xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"
+  targetNamespace="http://math"
+  name="palette">
+        
+    <service name="multiply" promote="multiply"/>
+    <service name="divide" promote="divide"/>
+    <service name="add" promote="add"/>
+    <service name="subtract" promote="subtract"/>
+
+    <component name="multiply" t:color="green1">
+        <documentation>*</documentation>
+        <t:implementation.python script="multiply.py"/>
+        <service name="multiply">
+            <documentation>*</documentation>
+        </service>
+        <reference name="value1"/>
+        <reference name="value2"/>
+    </component>
+    
+    <component name="divide" t:color="green1">
+        <documentation>/</documentation>
+        <t:implementation.python script="divide.py"/>
+        <service name="divide">
+            <documentation>/</documentation>
+        </service>
+        <reference name="value1"/>
+        <reference name="value2"/>
+    </component>
+    
+    <component name="add" t:color="green1">
+        <documentation>+</documentation>
+        <t:implementation.python script="add.py"/>
+        <service name="add">
+            <documentation>+</documentation>
+        </service>
+        <reference name="value1"/>
+        <reference name="value2"/>
+    </component>
+    
+    <component name="subtract" t:color="green1">
+        <documentation>-</documentation>
+        <t:implementation.python script="subtract.py"/>
+        <service name="subtract">
+            <documentation>-</documentation>
+        </service>
+        <reference name="value1"/>
+        <reference name="value2"/>
+    </component>
+    
+</composite>

Modified: tuscany/sca-cpp/trunk/modules/edit/palettes/operators/palette.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/palettes/operators/palette.composite?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/palettes/operators/palette.composite (original)
+++ tuscany/sca-cpp/trunk/modules/edit/palettes/operators/palette.composite Tue Feb  8 08:10:17 2011
@@ -22,27 +22,20 @@
   targetNamespace="http://operators"
   name="palette">
         
-    <service name="true" promote="true"/>
-    <service name="false" promote="false"/>
+    <service name="if" promote="if"/>
     <service name="and" promote="and"/>
     <service name="or" promote="or"/>
     <service name="not" promote="not"/>
     <service name="equals" promote="equals"/>
     <service name="greater" promote="greater"/>
     <service name="lesser" promote="lesser"/>
-    <service name="multiply" promote="multiply"/>
-    <service name="divide" promote="divide"/>
-    <service name="add" promote="add"/>
-    <service name="subtract" promote="subtract"/>
 
-    <component name="true" t:color="green1">
-        <t:implementation.python script="true_.py"/>
-        <service name="true"/>
-    </component>
-    
-    <component name="false" t:color="green1">
-        <t:implementation.python script="false_.py"/>
-        <service name="false"/>
+    <component name="if" t:color="green1">
+        <t:implementation.python script="if_.py"/>
+        <service name="if"/>
+        <reference name="condition"/>
+        <reference name="then"/>
+        <reference name="else"/>
     </component>
     
     <component name="and" t:color="green1">
@@ -95,44 +88,4 @@
         <reference name="value2"/>
     </component>
     
-    <component name="multiply" t:color="green1">
-        <documentation>*</documentation>
-        <t:implementation.python script="multiply.py"/>
-        <service name="multiply">
-            <documentation>*</documentation>
-        </service>
-        <reference name="value1"/>
-        <reference name="value2"/>
-    </component>
-    
-    <component name="divide" t:color="green1">
-        <documentation>/</documentation>
-        <t:implementation.python script="divide.py"/>
-        <service name="divide">
-            <documentation>/</documentation>
-        </service>
-        <reference name="value1"/>
-        <reference name="value2"/>
-    </component>
-    
-    <component name="add" t:color="green1">
-        <documentation>+</documentation>
-        <t:implementation.python script="add.py"/>
-        <service name="add">
-            <documentation>+</documentation>
-        </service>
-        <reference name="value1"/>
-        <reference name="value2"/>
-    </component>
-    
-    <component name="subtract" t:color="green1">
-        <documentation>-</documentation>
-        <t:implementation.python script="subtract.py"/>
-        <service name="subtract">
-            <documentation>-</documentation>
-        </service>
-        <reference name="value1"/>
-        <reference name="value2"/>
-    </component>
-    
 </composite>

Modified: tuscany/sca-cpp/trunk/modules/edit/palettes/social/palette.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/palettes/social/palette.composite?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/palettes/social/palette.composite (original)
+++ tuscany/sca-cpp/trunk/modules/edit/palettes/social/palette.composite Tue Feb  8 08:10:17 2011
@@ -22,60 +22,69 @@
   targetNamespace="http://social"
   name="palette">
         
-    <service name="JSONTwit" promote="JSONTwit"/>
-    <service name="XMLTwit" promote="XMLTwit"/>
-    <service name="RSSTwit" promote="RSSTwit"/>
-    <service name="HTML" promote="HTML"/>
-    <service name="JSONFB" promote="JSONFB"/>
+    <service name="fbprofile" promote="fbprofile"/>
+    <service name="fbalbum" promote="fbalbum"/>
+    <service name="fbfriends" promote="fbfriends"/>
+    <service name="fbgroup" promote="fbgroup"/>
+    <service name="twprofile" promote="twprofile"/>
+    <service name="twfriends" promote="twfriends"/>
+    <service name="twstatus" promote="twstatus"/>
+    <service name="twtimeline" promote="twtimeline"/>
 
-    <component name="JSONTwit" t:color="blue1">
-        <t:implementation.python script="relay.py"/>
-        <service name="Relay">
-            <t:binding.http uri="jsontwit"/>
-        </service>        
-        <reference name="target">
-            <t:binding.http uri="http://api.twitter.com/1/statuses/user_timeline.json?screen_name=jsdelfino"/>
-        </reference>
-    </component>
-    
-    <component name="XMLTwit" t:color="blue1">
-        <t:implementation.python script="relay.py"/>
-        <service name="Relay">
-            <t:binding.http uri="xmltwit"/>
-        </service>        
-        <reference name="target">
-            <t:binding.http uri="http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=jsdelfino"/>
-        </reference>
-    </component>
-    
-    <component name="RSSTwit" t:color="blue1">
-        <t:implementation.python script="relay.py"/>
-        <service name="Relay">
-            <t:binding.http uri="rsstwit"/>
-        </service>        
-        <reference name="target">
-            <t:binding.http uri="http://api.twitter.com/1/statuses/user_timeline.rss?screen_name=jsdelfino"/>
-        </reference>
-    </component>
-    
-    <component name="HTML" t:color="blue1">
-        <t:implementation.python script="relay.py"/>
-        <service name="Relay">
-            <t:binding.http uri="html"/>
-        </service>        
-        <reference name="target">
-            <t:binding.http uri="http://people.apache.org/~jsdelfino/"/>
-        </reference>
-    </component>
-    
-    <component name="JSONFB" t:color="blue1">
-        <t:implementation.python script="relay.py"/>
-        <service name="Relay">
-            <t:binding.http uri="jsonfb"/>
-        </service>        
-        <reference name="target">
-            <t:binding.http uri="https://graph.facebook.com/100001053301307"/>
-        </reference>
+    <component name="fbprofile" t:color="blue1">
+        <documentation>facebook profile</documentation>
+        <t:implementation.python script="fbprofile.py"/>
+        <service name="fbprofile"/>
+        <reference name="id"/>
+    </component>
+    
+    <component name="fbalbum" t:color="blue1">
+        <documentation>facebook album</documentation>
+        <t:implementation.python script="fbalbum.py"/>
+        <service name="fbalbum"/>
+        <reference name="id"/>
+    </component>
+    
+    <component name="fbfriends" t:color="blue1">
+        <documentation>facebook friends</documentation>
+        <t:implementation.python script="fbfriends.py"/>
+        <service name="fbfriends"/>
+        <reference name="id"/>
+    </component>
+    
+    <component name="fbgroup" t:color="blue1">
+        <documentation>facebook group</documentation>
+        <t:implementation.python script="fbgroup.py"/>
+        <service name="fbgroup"/>
+        <reference name="id"/>
+    </component>
+    
+    <component name="twprofile" t:color="blue1">
+        <documentation>twitter profile</documentation>
+        <t:implementation.python script="twprofile.py"/>
+        <service name="twprofile"/>
+        <reference name="id"/>
+    </component>
+    
+    <component name="twfriends" t:color="blue1">
+        <documentation>twitter friends</documentation>
+        <t:implementation.python script="twfriends.py"/>
+        <service name="twfriends"/>
+        <reference name="id"/>
+    </component>
+    
+    <component name="twstatus" t:color="blue1">
+        <documentation>twitter status</documentation>
+        <t:implementation.python script="twstatus.py"/>
+        <service name="twstatus"/>
+        <reference name="id"/>
+    </component>
+    
+    <component name="twtimeline" t:color="blue1">
+        <documentation>twitter timeline</documentation>
+        <t:implementation.python script="twtimeline.py"/>
+        <service name="twtimeline"/>
+        <reference name="id"/>
     </component>
     
 </composite>

Added: tuscany/sca-cpp/trunk/modules/edit/palettes/url/palette.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/palettes/url/palette.composite?rev=1068288&view=auto
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/palettes/url/palette.composite (added)
+++ tuscany/sca-cpp/trunk/modules/edit/palettes/url/palette.composite Tue Feb  8 08:10:17 2011
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+  xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"
+  targetNamespace="http://url"
+  name="palette">
+        
+    <service name="host" promote="host"/>
+    <service name="path" promote="path"/>
+    <service name="params" promote="params"/>
+    <service name="user" promote="user"/>
+    <service name="realm" promote="realm"/>
+    <service name="email" promote="email"/>
+
+    <component name="host" t:color="orange1">
+        <documentation>host</documentation>
+        <t:implementation.python script="host.py"/>
+        <service name="host"/>
+        <property name="host" t:visible="false"></property>
+    </component>
+    
+    <component name="path" t:color="orange1">
+        <documentation>path</documentation>
+        <t:implementation.python script="path.py"/>
+        <service name="path"/>
+        <property name="path" t:visible="false"></property>
+    </component>
+    
+    <component name="params" t:color="orange1">
+        <documentation>?params</documentation>
+        <t:implementation.python script="params.py"/>
+        <service name="params"/>
+        <property name="params" t:visible="false"></property>
+    </component>
+    
+    <component name="user" t:color="orange1">
+        <documentation>user</documentation>
+        <t:implementation.python script="user.py"/>
+        <service name="user"/>
+        <property name="user" t:visible="false"></property>
+    </component>
+    
+    <component name="realm" t:color="orange1">
+        <documentation>realm</documentation>
+        <t:implementation.python script="realm.py"/>
+        <service name="realm"/>
+        <property name="realm" t:visible="false"></property>
+    </component>
+    
+    <component name="email" t:color="orange1">
+        <documentation>email</documentation>
+        <t:implementation.python script="email.py"/>
+        <service name="email"/>
+        <property name="email" t:visible="false"></property>
+    </component>
+    
+</composite>

Modified: tuscany/sca-cpp/trunk/modules/edit/palettes/values/palette.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-cpp/trunk/modules/edit/palettes/values/palette.composite?rev=1068288&r1=1068287&r2=1068288&view=diff
==============================================================================
--- tuscany/sca-cpp/trunk/modules/edit/palettes/values/palette.composite (original)
+++ tuscany/sca-cpp/trunk/modules/edit/palettes/values/palette.composite Tue Feb  8 08:10:17 2011
@@ -25,10 +25,8 @@
     <service name="number" promote="number"/>
     <service name="text" promote="text"/>
     <service name="nothing" promote="nothing"/>
-    <service name="list" promote="list"/>
-    <service name="first" promote="first"/>
-    <service name="rest" promote="rest"/>
-    <service name="append" promote="append"/>
+    <service name="true" promote="true"/>
+    <service name="false" promote="false"/>
 
     <component name="number" t:color="orange1">
         <t:implementation.python script="number.py"/>
@@ -47,34 +45,14 @@
         <service name="nothing"/>
     </component>
     
-    <component name="list" t:color="orange1">
-        <documentation>list</documentation>
-        <t:implementation.python script="list_.py"/>
-        <service name="list"/>
-        <reference name="rest"/>
-        <property name="property">abc</property>
-    </component>
-    
-    <component name="first" t:color="orange1">
-        <documentation>first of list</documentation>
-        <t:implementation.python script="first.py"/>
-        <service name="first"/>
-        <reference name="value"/>
-    </component>
-    
-    <component name="rest" t:color="orange1">
-        <documentation>rest of list</documentation>
-        <t:implementation.python script="rest.py"/>
-        <service name="rest"/>
-        <reference name="value"/>
+    <component name="true" t:color="orange1">
+        <t:implementation.python script="true_.py"/>
+        <service name="true"/>
     </component>
     
-    <component name="append" t:color="orange1">
-        <documentation>append lists</documentation>
-        <t:implementation.python script="list_.py"/>
-        <service name="append"/>
-        <reference name="first"/>
-        <reference name="second"/>
+    <component name="false" t:color="orange1">
+        <t:implementation.python script="false_.py"/>
+        <service name="false"/>
     </component>
     
 </composite>