aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorAnanya Sen2012-02-06 16:07:46 -0800
committerAnanya Sen2012-02-06 16:07:46 -0800
commit729bc48212d7244539c99ca206be673eed011115 (patch)
treeac5161b436e302de802cb3d6a152d233d30d7357 /js
parent17bda238bc6973832394c0ba8fb08da09557931e (diff)
downloadninja-729bc48212d7244539c99ca206be673eed011115.tar.gz
integrated save for the document tabs, detect codemirror history to show document dirty indicator.
Signed-off-by: Ananya Sen <Ananya.Sen@motorola.com>
Diffstat (limited to 'js')
-rwxr-xr-xjs/data/menu-data.js6
-rwxr-xr-xjs/io/document/document-controller.js19
-rwxr-xr-xjs/io/document/text-document.js1
-rwxr-xr-xjs/stage/stage-view.reel/stage-view.js29
-rwxr-xr-xjs/stage/stage.reel/stage.js15
5 files changed, 52 insertions, 18 deletions
diff --git a/js/data/menu-data.js b/js/data/menu-data.js
index bafc30da..07337fa0 100755
--- a/js/data/menu-data.js
+++ b/js/data/menu-data.js
@@ -37,7 +37,8 @@ exports.MenuData = Montage.create( Montage, {
37 { 37 {
38 "displayText" : "Save", 38 "displayText" : "Save",
39 "hasSubMenu" : false, 39 "hasSubMenu" : false,
40 "enabled": true 40 "enabled": true,
41 "action": "executeSave"
41 }, 42 },
42 { 43 {
43 "displayText" : "Save As", 44 "displayText" : "Save As",
@@ -48,7 +49,8 @@ exports.MenuData = Montage.create( Montage, {
48 { 49 {
49 "displayText" : "Save All", 50 "displayText" : "Save All",
50 "hasSubMenu" : false, 51 "hasSubMenu" : false,
51 "enabled": true 52 "enabled": true,
53 "action": "executeSaveAll"
52 }, 54 },
53 { 55 {
54 "displayText" : "", 56 "displayText" : "",
diff --git a/js/io/document/document-controller.js b/js/io/document/document-controller.js
index 51575a24..1a5d6058 100755
--- a/js/io/document/document-controller.js
+++ b/js/io/document/document-controller.js
@@ -72,6 +72,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
72 this.eventManager.addEventListener("appLoaded", this, false); 72 this.eventManager.addEventListener("appLoaded", this, false);
73 this.eventManager.addEventListener("executeFileOpen", this, false); 73 this.eventManager.addEventListener("executeFileOpen", this, false);
74 this.eventManager.addEventListener("executeNewFile", this, false); 74 this.eventManager.addEventListener("executeNewFile", this, false);
75 this.eventManager.addEventListener("executeSave", this, false);
75 } 76 }
76 }, 77 },
77 78
@@ -87,8 +88,6 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
87 pickerSettings.callback = this.openFileWithURI; 88 pickerSettings.callback = this.openFileWithURI;
88 pickerSettings.callbackScope = this; 89 pickerSettings.callbackScope = this;
89 this.application.ninja.filePickerController.showFilePicker(pickerSettings); 90 this.application.ninja.filePickerController.showFilePicker(pickerSettings);
90
91 //this.openDocument({"type": "js", "source": this.tmpSourceForTesting});
92 } 91 }
93 }, 92 },
94 93
@@ -101,6 +100,12 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
101 } 100 }
102 }, 101 },
103 102
103 handleExecuteSave: {
104 value: function(event) {
105 this.activeDocument.save();
106 }
107 },
108
104 createNewFile:{ 109 createNewFile:{
105 value:function(newFileObj){ 110 value:function(newFileObj){
106 //console.log(newFileObj);//contains the template uri and the new file uri 111 //console.log(newFileObj);//contains the template uri and the new file uri
@@ -240,7 +245,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
240 245
241 //if file dirty then save 246 //if file dirty then save
242 if(this.activeDocument.dirtyFlag === true){ 247 if(this.activeDocument.dirtyFlag === true){
243 this.activeDocument.save(true); 248 this.activeDocument.save(true /*remove the codemirror div after saving*/);
244 this.activeDocument.dirtyFlag=false; 249 this.activeDocument.dirtyFlag=false;
245 } 250 }
246 251
@@ -382,12 +387,13 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
382 _hideCurrentDocument: { 387 _hideCurrentDocument: {
383 value: function() { 388 value: function() {
384 if(this.activeDocument) { 389 if(this.activeDocument) {
385 this.activeDocument.container.style["display"] = "none"; 390 if(this.activeDocument.currentView === "design"){
386 if(this.activeDocument.currentView === "design" || this.activeDocument.currentView === "design"){ 391 this.application.ninja.stage.saveStageScroll();
387 this.activeDocument.container.parentNode.style["display"] = "none"; 392 this.activeDocument.container.parentNode.style["display"] = "none";
388 this.application.ninja.stage.hideCanvas(true); 393 this.application.ninja.stage.hideCanvas(true);
389 this.application.ninja.stage.stageView.hideRulers(); 394 this.application.ninja.stage.stageView.hideRulers();
390 } 395 }
396 this.activeDocument.container.style["display"] = "none";
391 } 397 }
392 } 398 }
393 }, 399 },
@@ -396,8 +402,9 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
396 value: function() { 402 value: function() {
397 if(this.activeDocument) { 403 if(this.activeDocument) {
398 this.activeDocument.container.style["display"] = "block"; 404 this.activeDocument.container.style["display"] = "block";
399 if(this.activeDocument.currentView === "design" || this.activeDocument.currentView === "design"){ 405 if(this.activeDocument.currentView === "design"){
400 this.activeDocument.container.parentNode.style["display"] = "block"; 406 this.activeDocument.container.parentNode.style["display"] = "block";
407 this.application.ninja.stage.applySavedScroll();
401 this.application.ninja.stage.hideCanvas(false); 408 this.application.ninja.stage.hideCanvas(false);
402 this.application.ninja.stage.stageView.showRulers(); 409 this.application.ninja.stage.stageView.showRulers();
403 } 410 }
diff --git a/js/io/document/text-document.js b/js/io/document/text-document.js
index 683c513c..7db8e91a 100755
--- a/js/io/document/text-document.js
+++ b/js/io/document/text-document.js
@@ -100,6 +100,7 @@ var TextDocument = exports.TextDocument = Montage.create(baseDocumentModule.Base
100 var codemirrorDiv = this.textArea.parentNode.querySelector(".CodeMirror"); 100 var codemirrorDiv = this.textArea.parentNode.querySelector(".CodeMirror");
101 if(!!codemirrorDiv){codemirrorDiv.parentNode.removeChild(codemirrorDiv);} 101 if(!!codemirrorDiv){codemirrorDiv.parentNode.removeChild(codemirrorDiv);}
102 } 102 }
103 //console.log("$$$saved : "+this.uri+" : "+this.textArea.value);
103 //persist to filesystem 104 //persist to filesystem
104 } 105 }
105 } 106 }
diff --git a/js/stage/stage-view.reel/stage-view.js b/js/stage/stage-view.reel/stage-view.js
index 6f20b87b..f8817b13 100755
--- a/js/stage/stage-view.reel/stage-view.js
+++ b/js/stage/stage-view.reel/stage-view.js
@@ -76,10 +76,7 @@ exports.StageView = Montage.create(Component, {
76 // Temporary function to create a Codemirror text view 76 // Temporary function to create a Codemirror text view
77 createTextView: { 77 createTextView: {
78 value: function(doc) { 78 value: function(doc) {
79 //save current document 79 this.application.ninja.documentController.activeDocument.save(true /*remove the codemirror div after saving*/);
80 if(this.application.ninja.documentController.activeDocument.currentView === "code"){
81 this.application.ninja.documentController.activeDocument.save(true);
82 }
83 this.application.ninja.documentController._hideCurrentDocument(); 80 this.application.ninja.documentController._hideCurrentDocument();
84 this.hideOtherDocuments(doc.uuid); 81 this.hideOtherDocuments(doc.uuid);
85 var type; 82 var type;
@@ -100,7 +97,14 @@ exports.StageView = Montage.create(Component, {
100 doc.editor = CodeMirror.fromTextArea(doc.textArea, { 97 doc.editor = CodeMirror.fromTextArea(doc.textArea, {
101 lineNumbers: true, 98 lineNumbers: true,
102 mode: type, 99 mode: type,
103 onChange: function(){doc.dirtyFlag=true;}, 100 onChange: function(){
101 var historySize = doc.editor.historySize();
102 if((historySize.undo===0 && historySize.redo===0) || (historySize.undo>0)){
103 doc.dirtyFlag=true;
104 }else if(historySize.undo===0 && historySize.redo>0){
105 doc.dirtyFlag=false;
106 }
107 },
104 onCursorActivity: function() { 108 onCursorActivity: function() {
105 //documentController._codeEditor.editor.setLineClass(documentController._codeEditor.hline, null); 109 //documentController._codeEditor.editor.setLineClass(documentController._codeEditor.hline, null);
106 //documentController._codeEditor.hline = documentController._codeEditor.editor.setLineClass(documentController._codeEditor.editor.getCursor().line, "activeline"); 110 //documentController._codeEditor.hline = documentController._codeEditor.editor.setLineClass(documentController._codeEditor.editor.getCursor().line, "activeline");
@@ -118,13 +122,16 @@ exports.StageView = Montage.create(Component, {
118 122
119 switchDocument:{ 123 switchDocument:{
120 value: function(doc){ 124 value: function(doc){
125 this.application.ninja.documentController.activeDocument.save(true /*remove the codemirror div after saving*/);
121 126
122 //if dirty SAVE codemirror into textarea 127 this.application.ninja.documentController._hideCurrentDocument();
123 if(this.application.ninja.documentController.activeDocument.currentView === "code"){ 128
124 this.application.ninja.documentController.activeDocument.save(true); 129
130 if(this.application.ninja.documentController.activeDocument.currentView === "design"){
131 console.log("scrollLeft: "+ this.application.ninja.stage._iframeContainer.scrollLeft);
132 console.log("scrollTop: "+ this.application.ninja.stage._iframeContainer.scrollTop);
125 } 133 }
126 134
127 this.application.ninja.documentController._hideCurrentDocument();
128 135
129 this.application.ninja.documentController.activeDocument = doc; 136 this.application.ninja.documentController.activeDocument = doc;
130 137
@@ -148,7 +155,7 @@ exports.StageView = Montage.create(Component, {
148 doc.editor = CodeMirror.fromTextArea(doc.textArea, { 155 doc.editor = CodeMirror.fromTextArea(doc.textArea, {
149 lineNumbers: true, 156 lineNumbers: true,
150 mode: type, 157 mode: type,
151 onChange: function(){doc.dirtyFlag=true;}, 158 onChange: function(){doc.dirtyFlag=true;console.log("undo stack:",doc.editor.historySize());},
152 onCursorActivity: function() { 159 onCursorActivity: function() {
153 //documentController._codeEditor.editor.setLineClass(documentController._codeEditor.hline, null); 160 //documentController._codeEditor.editor.setLineClass(documentController._codeEditor.hline, null);
154 //documentController._codeEditor.hline = documentController._codeEditor.editor.setLineClass(documentController._codeEditor.editor.getCursor().line, "activeline"); 161 //documentController._codeEditor.hline = documentController._codeEditor.editor.setLineClass(documentController._codeEditor.editor.getCursor().line, "activeline");
@@ -160,6 +167,8 @@ exports.StageView = Montage.create(Component, {
160 167
161 if(this.application.ninja.documentController.activeDocument.documentType === "htm" || this.application.ninja.documentController.activeDocument.documentType === "html") { 168 if(this.application.ninja.documentController.activeDocument.documentType === "htm" || this.application.ninja.documentController.activeDocument.documentType === "html") {
162 this.application.ninja.stage._scrollFlag = true; // TODO HACK to prevent type error on Hide/Show Iframe 169 this.application.ninja.stage._scrollFlag = true; // TODO HACK to prevent type error on Hide/Show Iframe
170
171
163 // TODO dispatch event here 172 // TODO dispatch event here
164 // appDelegateModule.MyAppDelegate.onSetActiveDocument(); 173 // appDelegateModule.MyAppDelegate.onSetActiveDocument();
165