diff options
-rwxr-xr-x | js/controllers/document-controller.js | 6 | ||||
-rwxr-xr-x | js/controllers/elements/element-controller.js | 6 | ||||
-rwxr-xr-x | js/controllers/selection-controller.js | 9 | ||||
-rwxr-xr-x | js/document/html-document.js | 57 | ||||
-rwxr-xr-x | js/helper-classes/3D/draw-utils.js | 20 | ||||
-rwxr-xr-x | js/stage/stage-deps.js | 38 | ||||
-rwxr-xr-x | js/stage/stage-view.reel/stage-view.js | 14 | ||||
-rwxr-xr-x | js/stage/stage.reel/stage.js | 4 |
8 files changed, 124 insertions, 30 deletions
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js index 3a77ed5f..6f7d098f 100755 --- a/js/controllers/document-controller.js +++ b/js/controllers/document-controller.js | |||
@@ -335,7 +335,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
335 | // Event Detail: Contains the current ActiveDocument | 335 | // Event Detail: Contains the current ActiveDocument |
336 | _onOpenDocument: { | 336 | _onOpenDocument: { |
337 | value: function(doc){ | 337 | value: function(doc){ |
338 | //var data = DocumentManager.activeDocument; | 338 | this.application.ninja.currentDocument = doc; |
339 | this._hideCurrentDocument(); | 339 | this._hideCurrentDocument(); |
340 | this.application.ninja.stage.stageView.hideOtherDocuments(doc.uuid); | 340 | this.application.ninja.stage.stageView.hideOtherDocuments(doc.uuid); |
341 | 341 | ||
@@ -419,7 +419,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
419 | value: function() { | 419 | value: function() { |
420 | if(this.activeDocument) { | 420 | if(this.activeDocument) { |
421 | if(this.activeDocument.currentView === "design"){ | 421 | if(this.activeDocument.currentView === "design"){ |
422 | this.application.ninja.stage.saveScroll(); | 422 | this.activeDocument.saveAppState(); |
423 | this.activeDocument.container.parentNode.style["display"] = "none"; | 423 | this.activeDocument.container.parentNode.style["display"] = "none"; |
424 | this.application.ninja.stage.hideCanvas(true); | 424 | this.application.ninja.stage.hideCanvas(true); |
425 | this.application.ninja.stage.stageView.hideRulers(); | 425 | this.application.ninja.stage.stageView.hideRulers(); |
@@ -436,7 +436,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
436 | this.activeDocument.container.style["display"] = "block"; | 436 | this.activeDocument.container.style["display"] = "block"; |
437 | if(this.activeDocument.currentView === "design"){ | 437 | if(this.activeDocument.currentView === "design"){ |
438 | this.activeDocument.container.parentNode.style["display"] = "block"; | 438 | this.activeDocument.container.parentNode.style["display"] = "block"; |
439 | this.application.ninja.stage.restoreScroll(); | 439 | this.activeDocument.restoreAppState(); |
440 | this.application.ninja.stage.hideCanvas(false); | 440 | this.application.ninja.stage.hideCanvas(false); |
441 | this.application.ninja.stage.stageView.showRulers(); | 441 | this.application.ninja.stage.stageView.showRulers(); |
442 | }else{ | 442 | }else{ |
diff --git a/js/controllers/elements/element-controller.js b/js/controllers/elements/element-controller.js index 46e82ace..ec0335b4 100755 --- a/js/controllers/elements/element-controller.js +++ b/js/controllers/elements/element-controller.js | |||
@@ -27,7 +27,11 @@ var ElementController = exports.ElementController = Montage.create(NJComponent, | |||
27 | 27 | ||
28 | getProperty: { | 28 | getProperty: { |
29 | value: function(el, prop, fallbackOnComputed, isStageElement) { | 29 | value: function(el, prop, fallbackOnComputed, isStageElement) { |
30 | return this.application.ninja.stylesController.getElementStyle(el, prop, fallbackOnComputed, isStageElement); | 30 | if(el.nodeType !== 3){ |
31 | return this.application.ninja.stylesController.getElementStyle(el, prop, fallbackOnComputed, isStageElement); | ||
32 | }else{ | ||
33 | return null; | ||
34 | } | ||
31 | } | 35 | } |
32 | }, | 36 | }, |
33 | 37 | ||
diff --git a/js/controllers/selection-controller.js b/js/controllers/selection-controller.js index d69b53e0..f50762f3 100755 --- a/js/controllers/selection-controller.js +++ b/js/controllers/selection-controller.js | |||
@@ -58,6 +58,7 @@ exports.SelectionController = Montage.create(Component, { | |||
58 | handleOpenDocument: { | 58 | handleOpenDocument: { |
59 | value: function() { | 59 | value: function() { |
60 | // Handle initializing the selection array here. | 60 | // Handle initializing the selection array here. |
61 | this.initWithDocument([]); | ||
61 | } | 62 | } |
62 | }, | 63 | }, |
63 | 64 | ||
@@ -70,6 +71,14 @@ exports.SelectionController = Montage.create(Component, { | |||
70 | if(currentSelectionArray.length >= 1) { | 71 | if(currentSelectionArray.length >= 1) { |
71 | this._selectedItems = currentSelectionArray; | 72 | this._selectedItems = currentSelectionArray; |
72 | this._isDocument = false; | 73 | this._isDocument = false; |
74 | |||
75 | |||
76 | |||
77 | this.application.ninja.selectedElements = currentSelectionArray; | ||
78 | NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} ); | ||
79 | |||
80 | |||
81 | |||
73 | } | 82 | } |
74 | } | 83 | } |
75 | 84 | ||
diff --git a/js/document/html-document.js b/js/document/html-document.js index eaf56146..d38709e3 100755 --- a/js/document/html-document.js +++ b/js/document/html-document.js | |||
@@ -54,6 +54,11 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
54 | }, | 54 | }, |
55 | 55 | ||
56 | 56 | ||
57 | //drawUtils state | ||
58 | _gridHorizontalSpacing: {value:0}, | ||
59 | _gridVerticalSpacing: {value:0}, | ||
60 | //end - drawUtils state | ||
61 | |||
57 | 62 | ||
58 | // GETTERS / SETTERS | 63 | // GETTERS / SETTERS |
59 | 64 | ||
@@ -72,6 +77,16 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
72 | set: function(value) { this._savedTopScroll = value} | 77 | set: function(value) { this._savedTopScroll = value} |
73 | }, | 78 | }, |
74 | 79 | ||
80 | gridHorizontalSpacing:{ | ||
81 | get: function() { return this._gridHorizontalSpacing; }, | ||
82 | set: function(value) { this._gridHorizontalSpacing = value} | ||
83 | }, | ||
84 | |||
85 | gridVerticalSpacing:{ | ||
86 | get: function() { return this._gridVerticalSpacing; }, | ||
87 | set: function(value) { this._gridVerticalSpacing = value} | ||
88 | }, | ||
89 | |||
75 | selectionExclude: { | 90 | selectionExclude: { |
76 | get: function() { return this._selectionExclude; }, | 91 | get: function() { return this._selectionExclude; }, |
77 | set: function(value) { this._selectionExclude = value; } | 92 | set: function(value) { this._selectionExclude = value; } |
@@ -618,7 +633,47 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
618 | //Error | 633 | //Error |
619 | } | 634 | } |
620 | } | 635 | } |
621 | } | 636 | }, |
622 | //////////////////////////////////////////////////////////////////// | 637 | //////////////////////////////////////////////////////////////////// |
638 | saveAppState:{ | ||
639 | enumerable: false, | ||
640 | value: function () { | ||
641 | |||
642 | this.savedLeftScroll = this.application.ninja.stage._iframeContainer.scrollLeft; | ||
643 | this.savedTopScroll = this.application.ninja.stage._iframeContainer.scrollTop; | ||
644 | |||
645 | this.gridHorizontalSpacing = this.application.ninja.stage.drawUtils.gridHorizontalSpacing; | ||
646 | this.gridVerticalSpacing = this.application.ninja.stage.drawUtils.gridVerticalSpacing; | ||
647 | |||
648 | //TODO:selection should be saved as an element state data, to avoid duplicate dom elements store in memory | ||
649 | if(typeof this.application.ninja.selectedElements !== 'undefined'){ | ||
650 | this.selectionModel = this.application.ninja.selectedElements; | ||
651 | } | ||
652 | } | ||
653 | }, | ||
654 | |||
655 | //////////////////////////////////////////////////////////////////// | ||
656 | restoreAppState:{ | ||
657 | enumerable: false, | ||
658 | value: function () { | ||
659 | if((this.savedLeftScroll!== null) && (this.savedTopScroll !== null)){ | ||
660 | this.application.ninja.stage._iframeContainer.scrollLeft = this.savedLeftScroll; | ||
661 | this.application.ninja.stage._scrollLeft = this.savedLeftScroll; | ||
662 | this.application.ninja.stage._iframeContainer.scrollTop = this.savedTopScroll; | ||
663 | this.application.ninja.stage._scrollTop = this.savedTopScroll; | ||
664 | } | ||
665 | |||
666 | this.application.ninja.stage.drawUtils.gridHorizontalSpacing = this.gridHorizontalSpacing; | ||
667 | this.application.ninja.stage.drawUtils.gridVerticalSpacing = this.gridVerticalSpacing; | ||
668 | |||
669 | //TODO:selectionController.initWithDocument should loop over elements in documentRoot to repopulate | ||
670 | if((typeof this.selectionModel !== 'undefined') && (this.selectionModel !== null) && (this.selectionModel.length > 0)){ | ||
671 | this.application.ninja.selectionController.initWithDocument(this.selectionModel); | ||
672 | } | ||
673 | |||
674 | |||
675 | } | ||
676 | } | ||
677 | |||
623 | //////////////////////////////////////////////////////////////////// | 678 | //////////////////////////////////////////////////////////////////// |
624 | }); \ No newline at end of file | 679 | }); \ No newline at end of file |
diff --git a/js/helper-classes/3D/draw-utils.js b/js/helper-classes/3D/draw-utils.js index c07391db..37fc1cfc 100755 --- a/js/helper-classes/3D/draw-utils.js +++ b/js/helper-classes/3D/draw-utils.js | |||
@@ -115,6 +115,26 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, { | |||
115 | } | 115 | } |
116 | }, | 116 | }, |
117 | 117 | ||
118 | initializeFromDocument:{ | ||
119 | value:function(){ | ||
120 | var documentRootChildren = null, i; | ||
121 | //initialize with current document | ||
122 | this._eltArray = []; | ||
123 | this._planesArray = []; | ||
124 | this.setDrawingSurfaceElement(this.application.ninja.stage.canvas); | ||
125 | this.setSourceSpaceElement( this.application.ninja.stage.stageDeps.currentStage ); | ||
126 | this.setWorkingPlane( Vector.create( [0,0,1,0] ) ); | ||
127 | |||
128 | //Loop through all the top-level children of the current document and call drawUtils.addElement on them | ||
129 | if(this.application.ninja.currentDocument.documentRoot.hasChildNodes()){ | ||
130 | documentRootChildren = this.application.ninja.currentDocument.documentRoot.childNodes; | ||
131 | for(i=0;i<documentRootChildren.length;i++){ | ||
132 | this.addElement(documentRootChildren[i]); | ||
133 | } | ||
134 | } | ||
135 | } | ||
136 | }, | ||
137 | |||
118 | handleElementAdded: { | 138 | handleElementAdded: { |
119 | value: function(event) { | 139 | value: function(event) { |
120 | this.addElement(event.detail); | 140 | this.addElement(event.detail); |
diff --git a/js/stage/stage-deps.js b/js/stage/stage-deps.js index d46e2b81..316a5bb0 100755 --- a/js/stage/stage-deps.js +++ b/js/stage/stage-deps.js | |||
@@ -23,6 +23,10 @@ exports.StageDeps = Montage.create(Component, { | |||
23 | value: snapManager | 23 | value: snapManager |
24 | }, | 24 | }, |
25 | 25 | ||
26 | drawUtils: { | ||
27 | value: drawUtils | ||
28 | }, | ||
29 | |||
26 | currentStage: { | 30 | currentStage: { |
27 | value: null | 31 | value: null |
28 | }, | 32 | }, |
@@ -119,29 +123,31 @@ exports.StageDeps = Montage.create(Component, { | |||
119 |