aboutsummaryrefslogtreecommitdiff
path: root/js/document
diff options
context:
space:
mode:
Diffstat (limited to 'js/document')
-rwxr-xr-xjs/document/html-document.js231
-rwxr-xr-xjs/document/text-document.js26
2 files changed, 125 insertions, 132 deletions
diff --git a/js/document/html-document.js b/js/document/html-document.js
index 77cc711d..01d042d6 100755
--- a/js/document/html-document.js
+++ b/js/document/html-document.js
@@ -290,15 +290,6 @@ exports.HTMLDocument = Montage.create(TextDocument, {
290 } 290 }
291 }, 291 },
292 292
293
294
295 AppendElement: {
296 value: function(element, parent) {
297 this.dirtyFlag = true;
298 }
299 },
300
301
302 /** 293 /**
303 * Return the specified inline attribute from the element. 294 * Return the specified inline attribute from the element.
304 */ 295 */
@@ -358,22 +349,40 @@ exports.HTMLDocument = Montage.create(TextDocument, {
358 349
359 350
360 351
361 352
353
354
355 /*
356 DOM Mutation Events:
357
358 DOMActivate, DOMFocusIn, DOMFocusOut, DOMAttrModified,
359 DOMCharacterDataModified, DOMNodeInserted, DOMNodeInsertedIntoDocument,
360 DOMNodeRemoved, DOMNodeRemovedFromDocument, DOMSubtreeModified, DOMContentLoaded
361
362 */
363
364
365
366 /*
367//TODO: Remove and clean up event listener (DOMSubtreeModified)
368 _hackCount: {
369 value: 0
370 },
371*/
372
373
362 //////////////////////////////////////////////////////////////////// 374 ////////////////////////////////////////////////////////////////////
363 // 375 //
364 handleEvent: { 376 handleEvent: {
365 value: function(event){ 377 value: function(event){
366 //TODO: Remove
367 window.hackPreview = this.livePreview.bind(this);
368
369 this.application.ninja.documentController._hackRootFlag = true;
370 //console.log(this._userDocument.root, this);
371 //TODO: Clean up, using for prototyping save 378 //TODO: Clean up, using for prototyping save
372 this._templateDocument = {}; 379 this._templateDocument = {};
373 this._templateDocument.head = this.iframe.contentWindow.document.getElementById("userHead");; 380 this._templateDocument.head = this.iframe.contentWindow.document.getElementById("userHead");
374 this._templateDocument.body = this.iframe.contentWindow.document.getElementById("UserContent");; 381 this._templateDocument.body = this.documentRoot = this.iframe.contentWindow.document.getElementById("UserContent");
382 //TODO: Remove, also for prototyping
383 this.application.ninja.documentController._hackRootFlag = true;
375 // 384 //
376 this.documentRoot = this.iframe.contentWindow.document.getElementById("UserContent"); 385 //this.documentRoot = this.iframe.contentWindow.document.getElementById("UserContent");
377 this.stageBG = this.iframe.contentWindow.document.getElementById("stageBG"); 386 this.stageBG = this.iframe.contentWindow.document.getElementById("stageBG");
378 this.stageBG.onclick = null; 387 this.stageBG.onclick = null;
379 this._document = this.iframe.contentWindow.document; 388 this._document = this.iframe.contentWindow.document;
@@ -381,82 +390,93 @@ exports.HTMLDocument = Montage.create(TextDocument, {
381 // 390 //
382 if(!this.documentRoot.Ninja) this.documentRoot.Ninja = {}; 391 if(!this.documentRoot.Ninja) this.documentRoot.Ninja = {};
383 // 392 //
393 this._templateDocument.head.innerHTML = this._userDocument.content.head;
394 this._templateDocument.body.innerHTML = this._userDocument.content.body;
395
396
397
398
399 /* this.iframe.contentWindow.document.addEventListener('DOMSubtreeModified', function (e) { */ //TODO: Remove events upon loading once
384 400
385 this.documentRoot.innerHTML = this._userDocument.content.body; 401 //TODO: When written, the best way to initialize the document is to listen for the DOM tree being modified
386 this.iframe.contentWindow.document.getElementById("userHead").innerHTML = this._userDocument.content.head; 402 setTimeout(function () {
387 403
388
389 //TODO: Look at code below and clean up
390 404
391 405
406 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
407 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
408 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
409 if(this._document.styleSheets.length > 1) {
410 this._styles = this._document.styleSheets[this._document.styleSheets.length - 1];
411 this._stylesheets = this._document.styleSheets; // Entire stlyesheets array
412
413 //TODO Finish this implementation once we start caching Core Elements
414 // Assign a model to the UserContent and add the ViewPort reference to it.
415 NJUtils.makeElementModel(this.documentRoot, "Stage", "stage");
416 //this.documentRoot.elementModel.viewPort = this.iframe.contentWindow.document.getElementById("Viewport");
417 NJUtils.makeElementModel(this.stageBG, "Stage", "stage");
418 NJUtils.makeElementModel(this.iframe.contentWindow.document.getElementById("Viewport"), "Stage", "stage");
419
420 for(i = 0; i < this._stylesheets.length; i++) {
421 if(this._stylesheets[i].ownerNode.id === this._stageStyleSheetId) {
422 this.documentRoot.elementModel.defaultRule = this._stylesheets[i];
423 break;
424 }
425 }
426
427 //Temporary create properties for each rule we need to save the index of the rule
428 var len = this.documentRoot.elementModel.defaultRule.cssRules.length;
429 for(var j = 0; j < len; j++) {
430 //console.log(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText);
431 if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === "*") {
432
433 this.documentRoot.elementModel.transitionStopRule = this.documentRoot.elementModel.defaultRule.cssRules[j];
434
435 } else if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === "body") {
436
437 this.documentRoot.elementModel.body = this.documentRoot.elementModel.defaultRule.cssRules[j];
438
439 } else if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === "#Viewport") {
440
441 this.documentRoot.elementModel.viewPort = this.documentRoot.elementModel.defaultRule.cssRules[j];
442
443 } else if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === ".stageDimension") {
444
445 this.documentRoot.elementModel.stageDimension = this.documentRoot.elementModel.defaultRule.cssRules[j];
446
447 } else if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === ".stageView") {
448
449 this.documentRoot.elementModel.stageView = this.documentRoot.elementModel.defaultRule.cssRules[j];
450
451 } else if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === "#stageBG") {
452
453 this.documentRoot.elementModel.stageBackground = this.documentRoot.elementModel.defaultRule.cssRules[j];
454 }
455 }
456
457 this.callback(this);
458
459 }
460 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
461 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
462 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
463
464
465
466
467
468 }.bind(this), 1000);
469
470
392 471
393
394 this.cssLoadInterval = setInterval(function() {
395 if(this._document.styleSheets.length > 1) {
396 clearInterval(this.cssLoadInterval);
397 this._styles = this._document.styleSheets[this._document.styleSheets.length - 1];
398 this._stylesheets = this._document.styleSheets; // Entire stlyesheets array
399
400 this.callback(this);
401
402 //console.log('file content end');
403 }
404 }.bind(this), 50);
405 472
406 this._styles = this._document.styleSheets[this._document.styleSheets.length - 1]; 473 }
407 this._stylesheets = this._document.styleSheets; // Entire stlyesheets array
408
409 /* TODO Finish this implementation once we start caching Core Elements */
410 // Assign a model to the UserContent and add the ViewPort reference to it.
411 NJUtils.makeElementModel(this.documentRoot, "Stage", "stage");
412 //this.documentRoot.elementModel.viewPort = this.iframe.contentWindow.document.getElementById("Viewport");
413 NJUtils.makeElementModel(this.stageBG, "Stage", "stage");
414 NJUtils.makeElementModel(this.iframe.contentWindow.document.getElementById("Viewport"), "Stage", "stage");
415
416 for(i = 0; i < this._stylesheets.length; i++) {
417 if(this._stylesheets[i].ownerNode.id === this._stageStyleSheetId) {
418 this.documentRoot.elementModel.defaultRule = this._stylesheets[i];
419 break;
420 }
421 }
422
423 // Temporary create properties for each rule we need to save the index of the rule.
424 var len = this.documentRoot.elementModel.defaultRule.cssRules.length;
425 for(var j = 0; j < len; j++) {
426// console.log(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText);
427 if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === "*") {
428
429 this.documentRoot.elementModel.transitionStopRule = this.documentRoot.elementModel.defaultRule.cssRules[j];
430
431 } else if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === "body") {
432
433 this.documentRoot.elementModel.body = this.documentRoot.elementModel.defaultRule.cssRules[j];
434
435 } else if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === "#Viewport") {
436
437 this.documentRoot.elementModel.viewPort = this.documentRoot.elementModel.defaultRule.cssRules[j];
438
439 } else if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === ".stageDimension") {
440
441 this.documentRoot.elementModel.stageDimension = this.documentRoot.elementModel.defaultRule.cssRules[j];
442
443 } else if(this.documentRoot.elementModel.defaultRule.cssRules[j].selectorText === ".stageView") {
444
445 this.documentRoot.elementModel.stageView = this.documentRoot.elementModel.defaultRule.cssRules[j];