Revision: 3188
          http://vexi.svn.sourceforge.net/vexi/?rev=3188&view=rev
Author:   clrg
Date:     2008-11-10 11:17:35 +0000 (Mon, 10 Nov 2008)

Log Message:
-----------
Improving integration capability:
 - revert to using board.selected instead of surface.selected to allow for 
multiple concurrent boards
 - uiobject registers fields against a designated fieldmanager instead of 
surface

Modified Paths:
--------------
    trunk/widgets/org.vexi.guide/src/org/vexi/guide/board.t
    trunk/widgets/org.vexi.guide/src/org/vexi/guide/uiobject.t

Modified: trunk/widgets/org.vexi.guide/src/org/vexi/guide/board.t
===================================================================
--- trunk/widgets/org.vexi.guide/src/org/vexi/guide/board.t     2008-11-09 
23:38:15 UTC (rev 3187)
+++ trunk/widgets/org.vexi.guide/src/org/vexi/guide/board.t     2008-11-10 
11:17:35 UTC (rev 3188)
@@ -29,12 +29,13 @@
         // efficient reference to surface.insert
         var insert;
         
+        thisbox.active;
+        thisbox.insertinto;
+        thisbox.selected;
+        
         thisbox.enabled = true;
         thisbox.viewactual ++= function(v) { cascade = v; $canvas.viewactual = 
v; }
         
-        thisbox.active;
-        thisbox.insertinto;
-        
         ////////
         // sync in background thread
         
@@ -129,7 +130,7 @@
                 if (i.object.visible) {
                     i.object.overlay.display = true;
                     i.object.active = false;
-                    surface.selected = i.object;
+                    selected = i.object;
                 } else {
                     if (i.object.overlay)
                         i.object.overlay.thisbox = null;
@@ -186,7 +187,7 @@
         
         var selectObject = function(v) {
             cascade = v;
-            if (selectreq == trapee) surface.selected = trapee.object;
+            if (selectreq == trapee) selected = trapee.object;
             trapee.Leave --= dragObject;
             trapee.Release1 --= callee;
         }
@@ -204,7 +205,7 @@
         /** deselect if clicking on the background */
         Press1 ++= function(v) {
             if (insert) surface.insert = null;
-            else surface.selected = null;
+            else selected = null;
             return;
         }
         
@@ -302,7 +303,7 @@
             switch (v) {
             // remove selected object, protecting canvas[0]
             case "delete":
-                var s = surface.selected;
+                var s = selected;
                 if (s and s != $canvas[0]) {
                     s.overlay.thisbox = null;
                     s.thisbox = null;
@@ -312,7 +313,7 @@
             // cancel an insert request, otherwise deselect
             case "escape":
                 if (insert) surface.insert = null;
-                else surface.selected = null;
+                else selected = null;
                 break;
             }
         }

Modified: trunk/widgets/org.vexi.guide/src/org/vexi/guide/uiobject.t
===================================================================
--- trunk/widgets/org.vexi.guide/src/org/vexi/guide/uiobject.t  2008-11-09 
23:38:15 UTC (rev 3187)
+++ trunk/widgets/org.vexi.guide/src/org/vexi/guide/uiobject.t  2008-11-10 
11:17:35 UTC (rev 3188)
@@ -19,6 +19,8 @@
         <margin id="content" layout="layer" margin="5" />
         <border id="border1" depth="1"><border id="border2" depth="1" 
/></border>
         
+        thisbox.fieldmanager;
+        
         thisbox.parent;
         thisbox.overlay;
         thisbox.uiwidget;
@@ -108,6 +110,25 @@
             return o;
         }
         
+        var surfaceWrite = function(v) {
+            cascade = v;
+            if (!surface and fieldmanager and fieldmanager.unregisterField)
+                fieldmanager.unregisterField(thisbox);
+        }
+        
+        fieldinfo ++= function(v) {
+            if (fieldinfo and fieldmanager and fieldmanager.unregisterField)
+                fieldmanager.unregisterField(thisbox);
+            cascade = v;
+            if (v) {
+                surface ++= surfaceWrite;
+                if (fieldmanager and fieldmanager.registerField)
+                    fieldmanager.registerField(thisbox);
+            } else {
+                surface --= surfaceWrite;
+            }
+        }
+        
         ////////
         // sets an appropriate border effect according to edit state of the ui 
object
         
@@ -156,27 +177,13 @@
         
         normal = true;
         
-        var surf;
-        var surfaceWrite = function(v) {
-            if (surf and fieldinfo and surf.unregisterField)
-                surf.unregisterField(thisbox);
-            cascade = v; surf = surface;
-            if (surf and fieldinfo and surf.registerField)
-                surf.registerField(thisbox);
-        }
-        
-        fieldinfo ++= function(v) {
-            cascade = v;
-            surface ++= surfaceWrite;
-        }
-        
     </ui:box>
     
     // scriptid references
     static.scriptids = {};
     
     /** recursive function to build a widget tree from our js objects */
-    static.unserialize = function(o) {
+    static.unserialize = function(o, fieldmanager) {
         if (o == null or (keysof(o)).size==0) return null;
         //for (var k in o) vexi.log.info(k+": "+o[k]);
         var c = guide.insert.item..components[o.namespace+"."+o.template];
@@ -186,6 +193,7 @@
             c.template = o.template;
         }
         c = c.getObject();
+        c.fieldmanager = fieldmanager;
         c.fieldinfo = o.fieldinfo;
         // set properties
         for (var k in o.properties)
@@ -196,7 +204,7 @@
         // iterate over children
         var l = o.children ? o.children.length : 0;
         for (var i=0; l>i; i++) {
-            c[i] = callee(o.children[i]);
+            c[i] = callee(o.children[i], fieldmanager);
             c[i].parent = c;
         }
         return c;


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to