aboutsummaryrefslogtreecommitdiff
path: root/js/stage/stage-view.reel/stage-view.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/stage/stage-view.reel/stage-view.js')
-rwxr-xr-xjs/stage/stage-view.reel/stage-view.js171
1 files changed, 65 insertions, 106 deletions
diff --git a/js/stage/stage-view.reel/stage-view.js b/js/stage/stage-view.reel/stage-view.js
index 1f471431..53c6125b 100755
--- a/js/stage/stage-view.reel/stage-view.js
+++ b/js/stage/stage-view.reel/stage-view.js
@@ -52,12 +52,11 @@ exports.StageView = Montage.create(Component, {
52 }, 52 },
53 53
54 /** 54 /**
55 * Creates a text area which will contain the content of the opened text document. 55 * Public method
56 * Creates a textarea element which will contain the content of the opened text document.
56 */ 57 */
57 createTextAreaElement: { 58 createTextAreaElement: {
58 value: function(uuid) { 59 value: function(uuid) {
59
60
61 var codeMirrorDiv = document.createElement("div"); 60 var codeMirrorDiv = document.createElement("div");
62 codeMirrorDiv.id = "codeMirror_" + uuid; 61 codeMirrorDiv.id = "codeMirror_" + uuid;
63 codeMirrorDiv.style.display = "block"; 62 codeMirrorDiv.style.display = "block";
@@ -66,19 +65,22 @@ exports.StageView = Montage.create(Component, {
66 var textArea = document.createElement("textarea"); 65 var textArea = document.createElement("textarea");
67 textArea.id = "code"; 66 textArea.id = "code";
68 textArea.name = "code"; 67 textArea.name = "code";
69
70 codeMirrorDiv.appendChild(textArea); 68 codeMirrorDiv.appendChild(textArea);
71 69
72 return textArea; 70 return textArea;
73 } 71 }
74 }, 72 },
75 73
76 // Temporary function to create a Codemirror text view 74 /**
75 * Public method
76 * Creates a new instance of a code editor
77 */
77 createTextView: { 78 createTextView: {
78 value: function(doc) { 79 value: function(doc) {
80 var type;
79 this.application.ninja.documentController._hideCurrentDocument(); 81 this.application.ninja.documentController._hideCurrentDocument();
80 this.hideOtherDocuments(doc.uuid); 82 this.hideOtherDocuments(doc.uuid);
81 var type; 83
82 switch(doc.documentType) { 84 switch(doc.documentType) {
83 case "css" : 85 case "css" :
84 type = "css"; 86 type = "css";
@@ -87,42 +89,29 @@ exports.StageView = Montage.create(Component, {
87 type = "javascript"; 89 type = "javascript";
88 break; 90 break;
89 } 91 }
90
91 //fix hack
92 document.getElementById("codeMirror_"+doc.uuid).style.display="block"; 92 document.getElementById("codeMirror_"+doc.uuid).style.display="block";
93 93
94 var documentController = this.application.ninja.documentController; 94 doc.editor = this.application.ninja.codeEditorController.createEditor(doc, type);
95 doc.editor = CodeMirror.fromTextArea(doc.textArea, { 95 doc.editor.hline = doc.editor.setLineClass(0, "activeline");
96 lineNumbers: true, 96
97 mode: type,
98 onChange: function(){
99 var historySize = doc.editor.historySize();
100 if(historySize.undo>0){
101 doc.needsSave = true;
102 }else if(historySize.undo===0 && historySize.redo>0){
103 doc.needsSave = false;
104 }
105 },
106 onCursorActivity: function() {
107 //documentController._codeEditor.editor.setLineClass(documentController._codeEditor.hline, null);
108 //documentController._codeEditor.hline = documentController._codeEditor.editor.setLineClass(documentController._codeEditor.editor.getCursor().line, "activeline");
109 }
110 });
111
112 //this.application.ninja.documentController._codeEditor.hline = this.application.ninja.documentController._codeEditor.editor.setLineClass(0, "activeline");
113 this.application.ninja.stage._scrollFlag = false; // TODO HACK to prevent type error on Hide/Show Iframe 97 this.application.ninja.stage._scrollFlag = false; // TODO HACK to prevent type error on Hide/Show Iframe
114 this.application.ninja.documentController.activeDocument = doc; 98 this.application.ninja.documentController.activeDocument = doc;
115 this.application.ninja.stage.hideCanvas(true); 99 this.application.ninja.stage.hideCanvas(true);
116
117 document.getElementById("iframeContainer").style.display="none";//hide the iframe when switching to code view 100 document.getElementById("iframeContainer").style.display="none";//hide the iframe when switching to code view
101
102 this.showCodeViewBar(true);
103 this.application.ninja.codeEditorController.applySettings();
104 this.collapseAllPanels();
118 } 105 }
119 }, 106 },
120 107
121 //called for switching between html documents 108 /**
109 * Public method
110 * Switches between documents. Document state data is saved and restored whereever applicable
111 */
122 switchDocument:{ 112 switchDocument:{
123 value: function(doc){ 113 value: function(doc){
124 this.application.ninja.documentController._hideCurrentDocument(); 114 this.application.ninja.documentController._hideCurrentDocument();
125
126 this.application.ninja.documentController.activeDocument = doc; 115 this.application.ninja.documentController.activeDocument = doc;
127 116
128 if(this.application.ninja.documentController.activeDocument.currentView === "design") { 117 if(this.application.ninja.documentController.activeDocument.currentView === "design") {
@@ -131,62 +120,37 @@ exports.StageView = Montage.create(Component, {
131 120
132 this.application.ninja.stage._scrollFlag = false; // TODO HACK to prevent type error on Hide/Show Iframe 121 this.application.ninja.stage._scrollFlag = false; // TODO HACK to prevent type error on Hide/Show Iframe
133 this.application.ninja.documentController._showCurrentDocument(); 122 this.application.ninja.documentController._showCurrentDocument();
134 123 //focus editor
135 //focus current document
136 if(!!this.application.ninja.documentController.activeDocument && !!this.application.ninja.documentController.activeDocument.editor){ 124 if(!!this.application.ninja.documentController.activeDocument && !!this.application.ninja.documentController.activeDocument.editor){
137 document.getElementById("codeMirror_"+this.application.ninja.documentController.activeDocument.uuid).getElementsByClassName("CodeMirror")[0].focus(); 125 this.application.ninja.documentController.activeDocument.editor.focus();
126
127 this.showCodeViewBar(true);
128 this.application.ninja.codeEditorController.applySettings();
129 this.collapseAllPanels();
138 } 130 }
139 131
140 if(this.application.ninja.documentController.activeDocument.currentView === "design") { 132 if(this.application.ninja.documentController.activeDocument.currentView === "design") {
141 this.application.ninja.stage._scrollFlag = true; // TODO HACK to prevent type error on Hide/Show Iframe 133 this.application.ninja.stage._scrollFlag = true; // TODO HACK to prevent type error on Hide/Show Iframe
134 this.application.ninja.stage.stageDeps.reinitializeForSwitchDocument();//reinitialize draw-util, snapmanager and view-util
142 135
143 //reinitialize draw-util, snapmanager and view-util 136 this.showCodeViewBar(false);
144 this.application.ninja.stage.stageDeps.reinitializeForSwitchDocument(); 137 this.restoreAllPanels();
145
146 //this.application.ninja.stage.layout.reinitializeForSwitchDocument();
147
148 // TODO dispatch event here
149 // appDelegateModule.MyAppDelegate.onSetActiveDocument();
150 } 138 }
151 139
152 NJevent("switchDocument"); 140 NJevent("switchDocument");
153
154 } 141 }
155 }, 142 },
156 143
157 refreshCodeDocument:{ 144 /**
158 value:function(doc){ 145 * Public method
159 146 * Switches between different views of a design document, like HTML design view, HTML code view
160 } 147 */
161 }, 148 switchDesignDocViews: {
162 addCodeDocument:{ 149 value: function() {
163 value:function(doc){ 150 //TODO
164 var type;
165 switch(doc.documentType) {
166 case "css" :
167 type = "css";
168 break;
169 case "js" :
170 type = "javascript";
171 break;
172 }
173
174 var codeM = CodeMirror.fromTextArea(doc.textArea, {
175 lineNumbers: true,
176 mode: type,
177 onCursorActivity: function() {
178 //documentController._codeEditor.editor.setLineClass(documentController._codeEditor.hline, null);
179 //documentController._codeEditor.hline = documentController._codeEditor.editor.setLineClass(documentController._codeEditor.editor.getCursor().line, "activeline");
180 }
181 });
182 } 151 }
183 }, 152 },
184 hideCodeDocument:{
185 value:function(docUuid){
186 //hide the previous Codemirror div
187 153
188 }
189 },
190 hideOtherDocuments:{ 154 hideOtherDocuments:{
191 value:function(docUuid){ 155 value:function(docUuid){
192 this.application.ninja.documentController._documents.forEach(function(aDoc){ 156 this.application.ninja.documentController._documents.forEach(function(aDoc){
@@ -202,51 +166,46 @@ exports.StageView = Montage.create(Component, {
202 value:function(){ 166 value:function(){
203 this.application.ninja.rulerTop.style.display = "block"; 167 this.application.ninja.rulerTop.style.display = "block";
204 this.application.ninja.rulerLeft.style.display = "block"; 168 this.application.ninja.rulerLeft.style.display = "block";
205// this.application.ninja.rulerTop.style.background = "url('../images/temp/ruler-top.png')";
206// this.application.ninja.rulerLeft.style.background = "url('../images/temp/ruler-left.png')";
207 } 169 }
208 }, 170 },
209 hideRulers:{ 171 hideRulers:{
210 value:function(){ 172 value:function(){
211 this.application.ninja.rulerTop.style.display = "none"; 173 this.application.ninja.rulerTop.style.display = "none";
212 this.application.ninja.rulerLeft.style.display = "none"; 174 this.application.ninja.rulerLeft.style.display = "none";
213// this.application.ninja.rulerTop.style.background = "rgb(128,128,128)"; 175 }
214// this.application.ninja.rulerLeft.style.background = "rgb(128,128,128)"; 176 },
177 showCodeViewBar:{