trying to implement bind

This commit is contained in:
Danny Yoo 2011-08-26 22:30:08 -04:00
parent 69c60aac07
commit 1dee54a11a
2 changed files with 32 additions and 9 deletions

View File

@ -213,7 +213,7 @@ will be:
---------------------------------------------------------------------- ----------------------------------------------------------------------
Example 3 Example 3 "field"
We want to make it easy to query from the view. That's why each We want to make it easy to query from the view. That's why each

View File

@ -11,6 +11,14 @@
var isString = plt.baselib.strings.isString; var isString = plt.baselib.strings.isString;
// FIXME: as soon as we get real parameters, use parameters
// instead. Global: defines the currently running big bang.
// Parameterized around the call to bigBang.
var currentBigBangRecord = undefined;
var resourceStructType = var resourceStructType =
MACHINE.modules['whalesong/resource/structs.rkt'].namespace['struct:resource']; MACHINE.modules['whalesong/resource/structs.rkt'].namespace['struct:resource'];
@ -206,18 +214,25 @@
}; };
MockView.prototype.bind = function(name, worldF) { MockView.prototype.bind = function(name, worldF) {
// return new EventHandler('on-tick',
// new TickEventSource(delay),
// onTick);
return this.act( return this.act(
function(cursor) { function(cursor) {
return cursor; var newCursor = cursor.replaceNode($(cursor.node).clone(true).get(0));
//return cursor.replaceNode($(cursor.node).clone(true).bind(name, var handler = new EventHandler('on-tick',
new DomEventSource(name,
newCursor.node),
worldF);
currentBigBangRecord.startEventHandler(handler);
return newCursor;
}, },
function(view) { function(view) {
return view; var handler = new EventHandler('on-tick',
//view.focus.bind... new DomEventSource(
name,
view.focus.get(0)),
worldF);
view.addEventHandler(handler);
currentBigBangRecord.startEventHandler(handler);
}); });
}; };
@ -557,6 +572,7 @@
// bigBang. // bigBang.
var bigBang = function(MACHINE, world, handlers) { var bigBang = function(MACHINE, world, handlers) {
var oldArgcount = MACHINE.argcount; var oldArgcount = MACHINE.argcount;
var oldCurrentBigBangRecord = currentBigBangRecord;
var running = true; var running = true;
var dispatchingEvents = false; var dispatchingEvents = false;
@ -580,6 +596,7 @@
stopEventHandlers(); stopEventHandlers();
restart(function(MACHINE) { restart(function(MACHINE) {
MACHINE.argcount = oldArgcount; MACHINE.argcount = oldArgcount;
currentBigBangRecord = oldCurrentBigBangRecord;
finalizeClosureCall(MACHINE, world); finalizeClosureCall(MACHINE, world);
}); });
}; };
@ -588,6 +605,7 @@
running = false; running = false;
stopEventHandlers(); stopEventHandlers();
restart(function(MACHINE) { restart(function(MACHINE) {
currentBigBangRecord = oldCurrentBigBangRecord;
plt.baselib.exceptions.raise(MACHINE, exn); plt.baselib.exceptions.raise(MACHINE, exn);
}); });
}; };
@ -701,6 +719,11 @@
}) })
}; };
currentBigBangRecord = { stop : onCleanRestart,
stopWithExn : onMessyRestart,
startEventHandler : startEventHandler,
stopEventHandler : stopEventHandler };
view.initialRender(top); view.initialRender(top);
startEventHandlers(); startEventHandlers();
}); });