Revision: 3361
http://vexi.svn.sourceforge.net/vexi/?rev=3361&view=rev
Author: clrg
Date: 2009-01-19 12:36:07 +0000 (Mon, 19 Jan 2009)
Log Message:
-----------
Begin move to using object property on surface
Modified Paths:
--------------
trunk/widgets/org.vexi.guide/src/org/vexi/guide/board.t
trunk/widgets/org.vexi.guide/src/org/vexi/guide/insert/item.t
trunk/widgets/org.vexi.guide/src/org/vexi/guide/insert/pane.t
trunk/widgets/org.vexi.guide/src/org/vexi/guide/main.t
trunk/widgets/org.vexi.guide/src/org/vexi/guide/script/pane.t
trunk/widgets/org.vexi.guide/src/org/vexi/guide/script/trap.t
Modified: trunk/widgets/org.vexi.guide/src/org/vexi/guide/board.t
===================================================================
--- trunk/widgets/org.vexi.guide/src/org/vexi/guide/board.t 2009-01-19
03:44:41 UTC (rev 3360)
+++ trunk/widgets/org.vexi.guide/src/org/vexi/guide/board.t 2009-01-19
12:36:07 UTC (rev 3361)
@@ -26,13 +26,19 @@
</scrollpane>
<ui:box id="nodice" display="false" />
- // efficient reference to surface.insert
- var insert;
+ //////////
+ // Surface interaction
- thisbox.active;
- thisbox.insertinto;
- thisbox.selected;
+ var model = {};
+ var modelRead = function() { return model; }
+ surface ++= function(v) {
+ var s = surface;
+ if (s) s.guidemodel --= modelRead;
+ cascade = v;
+ if (v) v.guidemodel ++= modelRead;
+ }
+
thisbox.enabled = true;
thisbox.viewactual ++= function(v) { cascade = v; $canvas.viewactual =
v; }
@@ -55,60 +61,60 @@
var trackInsert = function(v) {
cascade = v;
- if (!insertinto or !insert) return;
- if (!insertinto.uiwidget.redirect) return;
- var o = insert.object;
- var n = insertinto.overlay.numchildren;
+ if (!model.insertinto or !model.insert) return;
+ if (!model.insertinto.uiwidget.redirect) return;
+ var i = model.insertinto;
+ var n = i.overlay.numchildren;
+ var o = model.insert.object;
// no children, place directly at 0 index
- if (n==0) { insertinto[0] = o; return; }
+ if (n==0) { i[0] = o; return; }
// single child that is already insert object
- if (n==1 and insertinto[0] == o) return;
+ if (n==1 and i[0] == o) return;
// begin placing heuristics
- var h = insertinto.uiwidget.orient == "horizontal";
+ var h = i.uiwidget.orient == "horizontal";
var pos = h ? 'x' : 'y';
var dim = h ? 'width' : 'height';
// use the overlay when assessing; actual objects are most
// probably altered in size by the insert object by now
- var mpos = insertinto.overlay.mouse[pos];
+ var mpos = i.overlay.mouse[pos];
var ioff = 0;
for (var i=0; n>i; i++) {
// don't count insert.object when assessing insertion position
- if (insertinto[i] == insert.object) { ioff++; continue; }
+ if (i[i] == o) { ioff++; continue; }
// use the overlay when assessing; actual objects are most
// probably altered in size by the insert object by now
- var d = insertinto.overlay.distanceto(insertinto[i].overlay);
+ var d = i.overlay.distanceto(i[i].overlay);
if (d[pos]+10>=mpos) {
- insertinto[i-ioff] = insert.object;
+ i[i-ioff] = o;
return;
}
}
- insertinto[n] = insert.object;
+ i[n] = o;
}
var placeInsert = function(v) {
- surface.insert = null;
+ model.insert = null;
trapee[trapname] --= callee;
return;
}
- thisbox.active ++= function(v) {
- if (active) active.active = false;
+ model.active ++= function(v) {
+ if (model.active) model.active.active = false;
cascade = v;
- if (active) active.active = true;
+ if (model.active) model.active.active = true;
}
- thisbox.insertinto ++= function(v) {
- var i = insertinto;
+ model.insertinto ++= function(v) {
+ var i = model.insertinto;
cascade = v;
- if (!v and i and insert) {
- var ind = i.indexof(insert.object);
+ if (!v and i and model.insert) {
+ var ind = i.indexof(model.insert.object);
if (ind>=0) i[ind] = null;
}
}
- var surfaceInsertWrite = function(v) {
- cascade = v;
- if (v == insert) return;
+ model.insert ++= function(v) {
+ if (v == model.insert) return;
if (v) {
$select.cursor = "hand";
$select.Leave ++= trackInsert;
@@ -117,9 +123,9 @@
$select._Release1 ++= placeInsert;
v.object.insert = true;
}
- var i = insert;
- insert = v;
- if (i and !insert) {
+ var i = model.insert;
+ cascade = v;
+ if (i and !v) {
$select.cursor = null;
$select.Leave --= trackInsert;
$select._Move --= trackInsert;
@@ -130,7 +136,7 @@
if (i.object.visible) {
i.object.overlay.display = true;
i.object.active = false;
- selected = i.object;
+ model.selected = i.object;
} else {
if (i.object.overlay)
i.object.overlay.thisbox = null;
@@ -141,27 +147,13 @@
}
/** set selected state on selected uiobject */
- var surfaceSelectWrite = function(v) {
- if (v == selected) return;
- var s = surface;
- if (s and s.selected) s.selected.selected = false;
+ model.selected ++= function(v) {
+ if (v == model.selected) return;
+ if (model.selected) model.selected.selected = false;
cascade = v;
- if (s and s.selected) s.selected.selected = true;
+ if (model.selected) model.selected.selected = true;
}
- thisbox.visible ++= function(v) {
- var s = surface;
- if (!v and s) {
- s.insert --= surfaceInsertWrite;
- s.selected --= surfaceSelectWrite;
- }
- cascade = v;
- if (v and s) {
- s.insert ++= surfaceInsertWrite;
- s.selected ++= surfaceSelectWrite;
- }
- }
-
////////
// normal selection logic
@@ -176,7 +168,7 @@
/** assigned to uiobject._Press1 to request selection */
var pressWrite = function(v) {
cascade = v;
- if (!insert) selectreq = trapee;
+ if (!model.insert) selectreq = trapee;
}
var dragObject = function(v) {
@@ -186,14 +178,14 @@
trapee.object.display = false;
$canvas.forcereflow();
var i = { object: trapee.object };
- surface.insert = i;
+ model.insert = i;
trapee.Leave --= callee;
trapee.object.display = true;
}
var selectObject = function(v) {
cascade = v;
- if (selectreq == trapee) selected = trapee.object;
+ if (selectreq == trapee) model.selected = trapee.object;
trapee.Leave --= dragObject;
trapee.Release1 --= callee;
}
@@ -210,8 +202,8 @@
/** deselect if clicking on the background */
Press1 ++= function(v) {
- if (insert) surface.insert = null;
- else selected = null;
+ if (model.insert) model.insert = null;
+ else model.selected = null;
return;
}
@@ -223,7 +215,7 @@
var activateWrite = function(v) {
if (v) activestack.push(trapee.object);
else activestack.remove(trapee.object);
- active = activestack.last;
+ model.active = activestack.last;
return;
}
@@ -235,11 +227,11 @@
var insertintoWrite = function(v) {
if (v) insertstack.push(trapee.object);
else insertstack.remove(trapee.object);
- insertinto = insertstack.last;
+ model.insertinto = insertstack.last;
return;
}
- var insertmodeRead = function() { return insert!=null; }
+ var insertmodeRead = function() { return model.insert!=null; }
/////////
// general canvas tree handling
@@ -282,7 +274,7 @@
child.overlay = s;
}
// do not yet display overlay for the insert object
- s.display = insert == null or insert.object != child;
+ s.display = model.insert == null or model.insert.object != child;
parent.overlay[index] = s;
// in case we've added a new tree of uiobjects
var n = child.numchildren;
@@ -309,18 +301,18 @@
switch (v) {
// remove selected object, protecting canvas[0]
case "delete":
- var s = selected;
+ var s = model.selected;
if (s and s != $canvas[0]) {
s.overlay.thisbox = null;
s.thisbox = null;
s = null;
}
- selected = null;
+ model.selected = null;
break;
// cancel an insert request, otherwise deselect
case "escape":
- if (insert) surface.insert = null;
- else selected = null;
+ if (model.insert) model.insert = null;
+ else model.selected = null;
break;
}
}
Modified: trunk/widgets/org.vexi.guide/src/org/vexi/guide/insert/item.t
===================================================================
--- trunk/widgets/org.vexi.guide/src/org/vexi/guide/insert/item.t
2009-01-19 03:44:41 UTC (rev 3360)
+++ trunk/widgets/org.vexi.guide/src/org/vexi/guide/insert/item.t
2009-01-19 12:36:07 UTC (rev 3361)
@@ -125,7 +125,7 @@
thisbox.active ++= function(v) { $bevel.form = "down"; return; }
thisbox.hover ++= function(v) { $bevel.form = selected ? "thindown"
: "flat"; return; }
thisbox.normal ++= function(v) { $bevel.form = selected ? "thindown"
: null; return; }
- thisbox.action ++= function(v) { surface.insertreq = thisbox;
return; }
+ thisbox.action ++= function(v) { surface.guidemodel.insertreq =
thisbox; return; }
rdt..addRedirect(thisbox, $content, "layout", "orient", "padding");
Modified: trunk/widgets/org.vexi.guide/src/org/vexi/guide/insert/pane.t
===================================================================
--- trunk/widgets/org.vexi.guide/src/org/vexi/guide/insert/pane.t
2009-01-19 03:44:41 UTC (rev 3360)
+++ trunk/widgets/org.vexi.guide/src/org/vexi/guide/insert/pane.t
2009-01-19 12:36:07 UTC (rev 3361)
@@ -22,14 +22,15 @@
/** do this on Leave as that's when we likely want the widget */
thisbox.getInsertObject = function() {
- var s = surface.insertreq;
+ var s = surface;
+ var r = s.guidemodel.insertreq;
// already have a relevant insert
- var i = surface.insert;
- if (i and (!i.creator or (i.creator == s))) return i;
+ var i = s.guidemodel.insert;
+ if (i and (!i.creator or (i.creator == r))) return i;
// need to create new insert object
- var o = s.getObject ? s.getObject() : null;
+ var o = r.getObject ? r.getObject() : null;
if (o == null) { return null; }
- return { object: o, creator: s };
+ return { object: o, creator: r };
}
////////
Modified: trunk/widgets/org.vexi.guide/src/org/vexi/guide/main.t
===================================================================
--- trunk/widgets/org.vexi.guide/src/org/vexi/guide/main.t 2009-01-19
03:44:41 UTC (rev 3360)
+++ trunk/widgets/org.vexi.guide/src/org/vexi/guide/main.t 2009-01-19
12:36:07 UTC (rev 3361)
@@ -61,17 +61,21 @@
// insert request
/** maintain the state of the insert requesting objects */
- surface.insertreq ++= function(v) {
- if (surface.insertreq) surface.insertreq.selected = false;
+ surface.guidemodel.insertreq ++= function(v) {
+ var s = surface;
+ var m = s ? s.guidemodel : null;
+ if (m.insertreq) m.insertreq.selected = false;
cascade = v;
- if (surface.insertreq) surface.insertreq.selected = true;
+ if (m.insertreq) m.insertreq.selected = true;
}
/** insert request for select mode */
- $selectmode.Press1 ++= function(v) { surface.insertreq = $selectmode;
cascade = v; }
+ $selectmode.Press1 ++= function(v) { surface.guidemodel.insertreq =
$selectmode; cascade = v; }
// initialize
- surface.insertreq = $selectmode;
+ vexi.thread = function() {
+ surface.guidemodel.insertreq = $selectmode;
+ }
////////
// inter-operation for guide panes
@@ -95,18 +99,18 @@
}
/** assign active ui object to properties view */
- $board.selected ++= function(v) {
+ surface.guidemodel.selected ++= function(v) {
cascade = v;
- surface.current = v;
+ surface.guidemodel.current = v;
$propset.current = v;
$propadd.current = v;
}
/** insert object and board interaction */
- surface.insert ++= function(v) { cascade = v; if (!v)
surface.insertreq = $selectmode; }
+ surface.guidemodel.insert ++= function(v) { cascade = v; if (!v)
surface.guidemodel.insertreq = $selectmode; }
/** pass insertion request onto the board */
- $board.Enter ++= function(v) { cascade = v; surface.insert =
$insert.getInsertObject(); }
+ $board.Enter ++= function(v) { cascade = v; surface.guidemodel.insert
= $insert.getInsertObject(); }
////////
// form loading
@@ -167,8 +171,8 @@
vexi.ui.frame = thisbox;
// work around asynchronous frame sizing issues
vexi.thread = function(v) {
- surface.RefreshScripts = true;
- surface.RefreshScriptIds = true;
+ surface.guidemodel.RefreshScripts = true;
+ surface.guidemodel.RefreshScriptIds = true;
}
}; // end constructor
@@ -197,7 +201,7 @@
$delform_cancel.action ++= function(v) {
surface.dialog.closeDialog($delform); return; }
// used to remove a form from the server and clean up
- var delform = function() {
surface.getServerObj("Client").removeForm(form.id); }
+ var delform = function() {
surface.rpc.getServerObj("Client").removeForm(form.id); }
var delform_end = function() {
global.form[form.id] = null;
Modified: trunk/widgets/org.vexi.guide/src/org/vexi/guide/script/pane.t
===================================================================
--- trunk/widgets/org.vexi.guide/src/org/vexi/guide/script/pane.t
2009-01-19 03:44:41 UTC (rev 3360)
+++ trunk/widgets/org.vexi.guide/src/org/vexi/guide/script/pane.t
2009-01-19 12:36:07 UTC (rev 3361)
@@ -20,7 +20,7 @@
thisbox.scriptobj ++= function(v) {
cascade = v;
$scripts.scripts = scriptobj;
- if (surface) surface.scripts = scriptobj;
+ if (surface) surface.guidemodel.scripts = scriptobj;
}
var editors = {};
Modified: trunk/widgets/org.vexi.guide/src/org/vexi/guide/script/trap.t
===================================================================
--- trunk/widgets/org.vexi.guide/src/org/vexi/guide/script/trap.t
2009-01-19 03:44:41 UTC (rev 3360)
+++ trunk/widgets/org.vexi.guide/src/org/vexi/guide/script/trap.t
2009-01-19 12:36:07 UTC (rev 3361)
@@ -105,7 +105,7 @@
try {
var a = script.type=="write" ? "v" : "";
var s = "return function("+a+") { "+$code.text+" };";
- var scope = { obj:surface.scriptids, vexi:vexi, fun:{} };
+ var scope = { obj:surface.guidemodel.scriptids, vexi:vexi,
fun:{} };
vexi.log.info(s);
var f = vexi.js.eval(s, scope);
if (script.type=="write") {
@@ -138,7 +138,7 @@
s.scripts[s.scripts.length] = script;
}
// update any script references
- surface.RefreshScripts = true;
+ surface.guidemodel.RefreshScripts = true;
// no longer new
newscript = false;
// resets this editor
@@ -194,14 +194,14 @@
$deltrap_cancel.action ++= function(v) {
surface.dialog.closeDialog($deltrap); return; }
$deltrap_apply.action ++= function(v) {
- var s = surface.scripts;
+ var s = surface.guidemodel.scripts;
for (var i=0; s.length>i; i++) {
if (s[i] == script) {
s.splice(i, 1);
break;
}
}
- surface.RefreshScripts = true;
+ surface.guidemodel.RefreshScripts = true;
surface.dialog.closeDialog($deltrap);
thisbox = null;
return;
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:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn