aboutsummaryrefslogtreecommitdiff
path: root/js/controllers
diff options
context:
space:
mode:
authorValerio Virgillito2012-07-24 16:56:52 -0700
committerValerio Virgillito2012-07-24 16:56:52 -0700
commit8f4a3e260622cd51dfa93b8dfd765f764c80fa6b (patch)
tree7f5004c61a3486cc0f547cf1e2d3d11183a1e36e /js/controllers
parent5454cc462903c83a8c3651065b03cc1855db125e (diff)
downloadninja-8f4a3e260622cd51dfa93b8dfd765f764c80fa6b.tar.gz
adding a viewIdentifier to the model to enable design/code switch
Todo: - Cleanup and remove listeners - Finish stage reload - Add remaining bindings. Signed-off-by: Valerio Virgillito <valerio@motorola.com>
Diffstat (limited to 'js/controllers')
-rwxr-xr-xjs/controllers/document-controller.js18
-rwxr-xr-xjs/controllers/styles-controller.js34
2 files changed, 52 insertions, 0 deletions
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js
index ee7ca82c..83c1f58c 100755
--- a/js/controllers/document-controller.js
+++ b/js/controllers/document-controller.js
@@ -80,6 +80,7 @@ exports.DocumentController = Montage.create(Component, {
80 } else if(this._currentDocument.currentView === "design") { 80 } else if(this._currentDocument.currentView === "design") {
81 document.getElementById("codeViewContainer").style.display = "none"; 81 document.getElementById("codeViewContainer").style.display = "none";
82 document.getElementById("iframeContainer").style.display = "block"; 82 document.getElementById("iframeContainer").style.display = "block";
83 this._currentDocument.addPropertyChangeListener("model.currentViewIdentifier", this, false);
83 if (this._currentDocument.model.currentView) this._currentDocument.model.currentView.show(); 84 if (this._currentDocument.model.currentView) this._currentDocument.model.currentView.show();
84 this._currentDocument.model.views.design._liveNodeList = this._currentDocument.model.documentRoot.getElementsByTagName('*'); 85 this._currentDocument.model.views.design._liveNodeList = this._currentDocument.model.documentRoot.getElementsByTagName('*');
85 } else { 86 } else {
@@ -91,6 +92,23 @@ exports.DocumentController = Montage.create(Component, {
91 } 92 }
92 }, 93 },
93 94
95 handleChange: {
96 value: function(notification) {
97 if(notification.currentPropertyPath === "model.currentViewIdentifier") {
98 if(this.currentDocument.model.currentView.identifier === "design-code") {
99// document.getElementById("iframeContainer").style.display = "none";
100// this._currentDocument.model.parentContainer.style["display"] = "block";
101// if (this._currentDocument.model.currentView) this._currentDocument.model.currentView.show();
102 } else {
103 document.getElementById("codeViewContainer").style.display = "none";
104 document.getElementById("iframeContainer").style.display = "block";
105 if (this._currentDocument.model.currentView) this._currentDocument.model.currentView.show();
106 this._currentDocument.model.views.design._liveNodeList = this._currentDocument.model.documentRoot.getElementsByTagName('*');
107 }
108 }
109 }
110 },
111
94 deserializedFromTemplate: { 112 deserializedFromTemplate: {
95 value: function() { //TODO: Add event naming consistency (save, fileOpen and newFile should be consistent, all file events should be executeFile[operation name]) 113 value: function() { //TODO: Add event naming consistency (save, fileOpen and newFile should be consistent, all file events should be executeFile[operation name])
96 this.eventManager.addEventListener("appLoaded", this, false); 114 this.eventManager.addEventListener("appLoaded", this, false);
diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js
index 21321f6d..0e1df1e9 100755
--- a/js/controllers/styles-controller.js
+++ b/js/controllers/styles-controller.js
@@ -99,6 +99,8 @@ var stylesController = exports.StylesController = Montage.create(Component, {
99 ///// setting document via binding 99 ///// setting document via binding
100 this._currentDocument = document; 100 this._currentDocument = document;
101 101
102 this._currentDocument.addPropertyChangeListener("model.currentViewIdentifier", this, false);
103
102 ///// Stage stylesheet should always be found 104 ///// Stage stylesheet should always be found
103 this._stageStylesheet = this.getSheetFromElement(this.CONST.STAGE_SHEET_ID); 105 this._stageStylesheet = this.getSheetFromElement(this.CONST.STAGE_SHEET_ID);
104 // Returns null if sheet not found (as in non-ninja projects) 106 // Returns null if sheet not found (as in non-ninja projects)
@@ -126,6 +128,38 @@ var stylesController = exports.StylesController = Montage.create(Component, {
126 enumerable : false 128 enumerable : false
127 }, 129 },
128 130
131 handleChange: {
132 value: function(notification) {
133 if(notification.currentPropertyPath === "model.currentViewIdentifier") {
134 if(this.currentDocument.model.currentView.identifier === "design") {
135 ///// Stage stylesheet should always be found
136 this._stageStylesheet = this.getSheetFromElement(this.CONST.STAGE_SHEET_ID);
137 // Returns null if sheet not found (as in non-ninja projects)
138 // Setter will handle null case
139 this.defaultStylesheet = this.getSheetFromElement(this.CONST.DEFAULT_SHEET_ID);
140
141 this.userStyleSheets = nj.toArray(this.currentDocument.model.views.design.document.styleSheets).filter(function(sheet) {
142 if(sheet === this._stageStylesheet) { return false; }
143
144 var media = sheet.ownerNode.getAttribute('media');
145
146 ///// If the media attribute contains a query, we'll watch for changes in media
147 if(/\([0-9A-Za-z-: ]+\)/.test(media)) {
148 this.watchMedia(media);
149 }
150
151 return true;
152
153 }, this);
154
155 this.initializeRootStyles();
156
157 NJevent('styleSheetsReady', this);
158 }
159 }
160 }
161 },
162
129 _mediaList : { 163 _mediaList : {
130 value: [] 164 value: []
131 }, 165 },