From 7a22f7b368ef549a5b30c58a0f3900685b764bdb Mon Sep 17 00:00:00 2001 From: Ananya Sen Date: Fri, 18 May 2012 16:56:16 -0700 Subject: integrated open code view document in new dom architecture Signed-off-by: Ananya Sen --- js/controllers/code-editor-controller.js | 40 +++---- js/controllers/document-controller.js | 65 ++++------- js/controllers/styles-controller.js | 2 +- js/document/document-text.js | 43 ++++++- js/document/models/text.js | 4 +- js/document/views/code.js | 193 ++++++++++++++++++++++++++++++- js/stage/stage-view.reel/stage-view.js | 120 +------------------ 7 files changed, 276 insertions(+), 191 deletions(-) (limited to 'js') diff --git a/js/controllers/code-editor-controller.js b/js/controllers/code-editor-controller.js index 7913cfc1..e7163bd8 100644 --- a/js/controllers/code-editor-controller.js +++ b/js/controllers/code-editor-controller.js @@ -68,7 +68,7 @@ var CodeEditorController = exports.CodeEditorController = Montage.create(Compone * Creates an editor instance */ createEditor : { - value:function(doc, type, documentType){ + value:function(codeDocumentView, type, documentType, textDocument){ var self = this, editorOptions = null; editorOptions = { @@ -76,17 +76,17 @@ var CodeEditorController = exports.CodeEditorController = Montage.create(Compone matchBrackets:true, mode: type, onChange: function(){ - var historySize = doc.editor.historySize(); + var historySize = codeDocumentView.editor.historySize(); if(historySize.undo>0){ - doc.needsSave = true; + textDocument.model.needsSave = true; }else if(historySize.undo===0 && historySize.redo>0){ - doc.needsSave = false; + textDocument.model.needsSave = false; } }, onCursorActivity: function() { - doc.editor.matchHighlight("CodeMirror-matchhighlight"); - doc.editor.setLineClass(doc.editor.hline, null, null); - doc.editor.hline = doc.editor.setLineClass(doc.editor.getCursor().line, null, "activeline"); + codeDocumentView.editor.matchHighlight("CodeMirror-matchhighlight"); + codeDocumentView.editor.setLineClass(codeDocumentView.editor.hline, null, null); + codeDocumentView.editor.hline = codeDocumentView.editor.setLineClass(codeDocumentView.editor.getCursor().line, null, "activeline"); } }; @@ -95,9 +95,7 @@ var CodeEditorController = exports.CodeEditorController = Montage.create(Compone editorOptions.onKeyEvent = function(cm, keyEvent){self._codeCompletionKeyEventHandler.call(self, cm, keyEvent, documentType)}; } - var editor = self.codeEditor.fromTextArea(doc.textArea, editorOptions); - - //editor.setOption("theme", "night"); + var editor = self.codeEditor.fromTextArea(codeDocumentView.textArea, editorOptions); return editor; } @@ -215,22 +213,22 @@ var CodeEditorController = exports.CodeEditorController = Montage.create(Compone autoFormatSelection:{ value: function(){ - var range = this.getSelectedRange(this.application.ninja.documentController.activeDocument.editor); - this.application.ninja.documentController.activeDocument.editor.autoFormatRange(range.from, range.to); + var range = this.getSelectedRange(this.application.ninja.documentController.activeDocument.model.views.code.editor); + this.application.ninja.documentController.activeDocument.model.views.code.editor.autoFormatRange(range.from, range.to); } }, commentSelection:{ value: function(isComment){ - var range = this.getSelectedRange(this.application.ninja.documentController.activeDocument.editor); - this.application.ninja.documentController.activeDocument.editor.commentRange(isComment, range.from, range.to); + var range = this.getSelectedRange(this.application.ninja.documentController.activeDocument.model.views.code.editor); + this.application.ninja.documentController.activeDocument.model.views.code.editor.commentRange(isComment, range.from, range.to); } }, handleThemeSelection:{ value: function(){ - this.application.ninja.documentController.activeDocument.editor.setOption("theme", this.editorTheme); - this.application.ninja.stage.stageView.applyTheme("cm-s-"+this.editorTheme); + this.application.ninja.documentController.activeDocument.model.views.code.editor.setOption("theme", this.editorTheme); + this.application.ninja.documentController.activeDocument.model.views.code.applyTheme("cm-s-"+this.editorTheme); } }, @@ -238,10 +236,10 @@ var CodeEditorController = exports.CodeEditorController = Montage.create(Compone value:function(value){ var originalFont=13,originalLineHeight=16; this._zoomFactor = value; - this.application.ninja.documentController.activeDocument.container.style.fontSize = ""+((value/100)*originalFont)+"px"; - this.application.ninja.documentController.activeDocument.container.style.cursor = "text"; - this.application.ninja.documentController.activeDocument.container.querySelector(".CodeMirror").style.lineHeight = ""+((value/100)*originalLineHeight)+"px"; - this.application.ninja.documentController.activeDocument.editor.refresh();//refresh editor display for xoom + this.application.ninja.documentController.activeDocument.model.views.code.textViewContainer.style.fontSize = ""+((value/100)*originalFont)+"px"; + this.application.ninja.documentController.activeDocument.model.views.code.textViewContainer.style.cursor = "text"; + this.application.ninja.documentController.activeDocument.model.views.code.textViewContainer.querySelector(".CodeMirror").style.lineHeight = ""+((value/100)*originalLineHeight)+"px"; + this.application.ninja.documentController.activeDocument.model.views.code.editor.refresh();//refresh editor display for xoom } }, @@ -250,7 +248,7 @@ var CodeEditorController = exports.CodeEditorController = Montage.create(Compone //set theme this.handleThemeSelection(); //check autocomplete support - this.handleCodeCompletionSupport(this.application.ninja.documentController.activeDocument.documentType); + this.handleCodeCompletionSupport(this.application.ninja.documentController.activeDocument.model.file.extension); //set zoom this.handleZoom(this._zoomFactor); } diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js index cf46e73e..a795d652 100755 --- a/js/controllers/document-controller.js +++ b/js/controllers/document-controller.js @@ -13,7 +13,8 @@ var Montage = require("montage/core/core").Montage, TextDocument = require("js/document/text-document").TextDocument; // New Document Objects -var Document = require("js/document/document-html").HtmlDocument; +var Document_HTML = require("js/document/document-html").HtmlDocument; +var Document_Text = require("js/document/document-text").TextDocument; //////////////////////////////////////////////////////////////////////// // var DocumentController = exports.DocumentController = Montage.create(Component, { @@ -320,32 +321,30 @@ var DocumentController = exports.DocumentController = Montage.create(Component, //////////////////////////////////////////////////////////////////// openDocument: { - value: function(doc) { + value: function(file) { var template, dimensions; - if (doc.content.body.indexOf('Ninja-Banner Dimensions@@@') !== -1) { - dimensions = (doc.content.body.split('Ninja-Banner Dimensions@@@'))[1].split('-->')[0].split('x'); - dimensions = {width: parseInt(dimensions[0]), height: parseInt(dimensions[1])}; - template = {type: 'banner', size: dimensions}; - } + // TODO: HACKS to remove - this.documentHackReference = doc; + this.documentHackReference = file; document.getElementById("iframeContainer").style.overflow = "hidden"; // - switch (doc.extension) { + switch (file.extension) { case 'html': + + if (file.content.body.indexOf('Ninja-Banner Dimensions@@@') !== -1) { + dimensions = (file.content.body.split('Ninja-Banner Dimensions@@@'))[1].split('-->')[0].split('x'); + dimensions = {width: parseInt(dimensions[0]), height: parseInt(dimensions[1])}; + template = {type: 'banner', size: dimensions}; + } + //Open in designer view this._hackRootFlag = false; - Montage.create(Document).init(doc, this, this._onOpenDocument, 'design', template); + Montage.create(Document_HTML).init(file, this, this._onOpenDocument, 'design', template); break; default: - //Open in code view - var code = Montage.create(TextDocument, {"source": {value: doc.content}}), docuuid = Uuid.generate(), textArea; - textArea = this.application.ninja.stage.stageView.createTextAreaElement(docuuid); - code.initialize(doc, docuuid, textArea, textArea.parentNode); - //code.init(doc.name, doc.uri, doc.extension, null, docuuid); - code.textArea.value = doc.content; - this.application.ninja.stage.stageView.createTextView(code); - break; + //Open in code view + Montage.create(Document_Text).init(file, this, this._onOpenTextDocument, 'code'); + break; } } }, @@ -514,9 +513,10 @@ var DocumentController = exports.DocumentController = Montage.create(Component, _onOpenTextDocument: { value: function(doc) { if(this.activeDocument) { + if(this.activeDocument.currentView === "design"){ this.activeDocument.saveAppState(); - this.activeDocument.container.parentNode.style["display"] = "none"; + this.activeDocument.parentContainer.style["display"] = "none"; this.application.ninja.stage.hideCanvas(true); this.application.ninja.stage.stageView.hideRulers(); } @@ -526,28 +526,11 @@ var DocumentController = exports.DocumentController = Montage.create(Component, this.application.ninja.stage._scrollFlag = false; // TODO HACK to prevent type error on Hide/Show Iframe this.activeDocument = doc; - - var type; - - switch(doc.documentType) { - case "css" : - type = "css"; - break; - case "js" : - type = "javascript"; - break; - } - - DocumentController._codeEditor.editor = CodeMirror.fromTextArea(doc.textArea, { - lineNumbers: true, - mode: type, - onCursorActivity: function() { - DocumentController._codeEditor.editor.setLineClass(DocumentController._codeEditor.hline, null); - DocumentController._codeEditor.hline = DocumentController._codeEditor.editor.setLineClass(DocumentController._codeEditor.editor.getCursor().line, "activeline"); - } - }); - DocumentController._codeEditor.hline = DocumentController._codeEditor.editor.setLineClass(0, "activeline"); - + //hide the iframe when switching to code view + document.getElementById("iframeContainer").style.display = "none"; + doc.model.views.code.showCodeViewBar(true); + this.application.ninja.codeEditorController.applySettings(); + doc.model.views.code.collapseAllPanels(); } }, diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index ae504f0e..3a942364 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -111,7 +111,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { set : function(sheet) { if(sheet) { this._defaultStylesheet = sheet; - } else { + } else if(this._activeDocument.model && this._activeDocument.model.views && this._activeDocument.model.views.design){//check that the document has a design view ///// Use the last stylesheet in the document as the default diff --git a/js/document/document-text.js b/js/document/document-text.js index 2a469144..533b32c9 100755 --- a/js/document/document-text.js +++ b/js/document/document-text.js @@ -7,7 +7,9 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot //////////////////////////////////////////////////////////////////////// // var Montage = require("montage/core/core").Montage, - Component = require("montage/ui/component").Component; + Component = require("montage/ui/component").Component, + TextDocumentModel = require("js/document/models/text").TextDocumentModel, + CodeDocumentView = require("js/document/views/code").CodeDocumentView; //////////////////////////////////////////////////////////////////////// // exports.TextDocument = Montage.create(Component, { @@ -16,9 +18,44 @@ exports.TextDocument = Montage.create(Component, { hasTemplate: { enumerable: false, value: false - } - //////////////////////////////////////////////////////////////////// + }, //////////////////////////////////////////////////////////////////// + // + model: { + value: null + }, + //////////////////////////////////////////////////////////////////// + // + + init:{ + enumerable: false, + value : function(file, context, callback, view){ + var codeDocumentView = CodeDocumentView.create(), container = null; + codeDocumentView.initialize(); + + //Creating instance of Text Document Model + this.model = Montage.create(TextDocumentModel,{ + file: {value: file}, + parentContainer: {value: document.getElementById("codeViewContainer")}, + views: {value: {'code': codeDocumentView, 'design': null}} + }); + + codeDocumentView.textArea.value = file.content; + codeDocumentView.initializeTextView(file, this); + + if (view === 'code') { + //TODO: Remove reference and use as part of model + this.currentView = 'code'; + //Setting current view object to design + this.model.currentView = this.model.views.code; + } + + + callback.call(context, this); + } + } +//////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////// }); //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/js/document/models/text.js b/js/document/models/text.js index ebf9993e..5a5e86ef 100755 --- a/js/document/models/text.js +++ b/js/document/models/text.js @@ -7,7 +7,7 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot //////////////////////////////////////////////////////////////////////// // var Montage = require("montage/core/core").Montage, - BaseDocumentModel = require("js/document/models/text").BaseDocumentModel; + BaseDocumentModel = require("js/document/models/base").BaseDocumentModel; //////////////////////////////////////////////////////////////////////// // exports.TextDocumentModel = Montage.create(BaseDocumentModel, { @@ -17,8 +17,6 @@ exports.TextDocumentModel = Montage.create(BaseDocumentModel, { enumerable: false, value: false } - //////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////// }); //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/js/document/views/code.js b/js/document/views/code.js index cd3e02d4..de12881c 100755 --- a/js/document/views/code.js +++ b/js/document/views/code.js @@ -11,15 +11,202 @@ var Montage = require("montage/core/core").Montage, BaseDocumentView = require("js/document/views/base").BaseDocumentView; //////////////////////////////////////////////////////////////////////// // -exports.CodeDocumentView = Montage.create(BaseDocumentView, { +var CodeDocumentView = exports.CodeDocumentView = Montage.create(BaseDocumentView, { //////////////////////////////////////////////////////////////////// // hasTemplate: { enumerable: false, value: false + }, + + //////////////////////////////////////////////////////////////////// + // + _editor: { + value: null + }, + //////////////////////////////////////////////////////////////////// + // + editor: { + get: function() {return this._editor;}, + set: function(value) {this._editor= value;} + }, + //////////////////////////////////////////////////////////////////// + // + _textArea: { + value: null + }, + //////////////////////////////////////////////////////////////////// + // + textArea: { + get: function() {return this._textArea;}, + set: function(value) {this._textArea= value;} + }, + + //////////////////////////////////////////////////////////////////// + //remove _extParentContainer after moving to bucket structure for documents + _textParentContainer: { + value: null + }, + //////////////////////////////////////////////////////////////////// + // + textParentContainer: { + get: function() {return this._textParentContainer;}, + set: function(value) {this._textParentContainer= value;} + }, + //////////////////////////////////////////////////////////////////// + // + _textViewContainer: { + value: null + }, + //////////////////////////////////////////////////////////////////// + // + textViewContainer: { + get: function() {return this._textViewContainer;}, + set: function(value) {this._textViewContainer= value;} + }, + //////////////////////////////////////////////////////////////////// + // + + /** + * Public method + */ + initialize:{ + value: function(){ + //populate _textParentContainer + this.textParentContainer = document.getElementById("codeViewContainer"); + + //create contianer + this.textViewContainer = document.createElement("div"); + //this.textViewContainer.id = "codemirror_" + uuid; + this.textViewContainer.style.display = "block"; + this.textParentContainer.appendChild(this.textViewContainer); + + //create text area + this.textArea = this.createTextAreaElement(); + } + }, + + /** + * Public method + * Creates a textarea element which will contain the content of the opened text document. + */ + createTextAreaElement: { + value: function() { + var textArea = document.createElement("textarea"); +// textArea.id = "code"; +// textArea.name = "code"; + this.textViewContainer.appendChild(textArea); + + return textArea; + } + }, + //////////////////////////////////////////////////////////////////// + // + /** + * Public method + * Creates a new instance of a code editor + */ + initializeTextView: { + value: function(file, textDocument) { + var type; + + if(this.activeDocument) { + //need to hide only if another document was open before +// this.application.ninja.documentController._hideCurrentDocument(); +// this.hideOtherDocuments(doc.uuid); + } + + switch(file.extension) { + case "css" : + type = "css"; + break; + case "js" : + type = "javascript"; + break; + case "html" : + type = "htmlmixed"; + break; + case "json" : + type = "javascript"; + break; + case "php" : + type = "php"; + break; + case "pl" : + type = "perl"; + break; + case "py" : + type = "python"; + break; + case "rb" : + type = "ruby"; + break; + case "xml" : + type = "xml"; + break; + } + this.textViewContainer.style.display="block"; + + this.editor = this.application.ninja.codeEditorController.createEditor(this, type, file.extension, textDocument); + this.editor.hline = this.editor.setLineClass(0, "activeline"); + + + } + }, + //////////////////////////////////////////////////////////////////// + // + + showRulers:{ + value:function(){ + this.application.ninja.rulerTop.style.display = "block"; + this.application.ninja.rulerLeft.style.display = "block"; + } + }, + hideRulers:{ + value:function(){ + this.application.ninja.rulerTop.style.display = "none"; + this.application.ninja.rulerLeft.style.display = "none"; + } + }, + showCodeViewBar:{ + value:function(isCodeView){ + if(isCodeView === true) { + this.application.ninja.editorViewOptions.element.style.display = "block"; + this.application.ninja.documentBar.element.style.display = "none"; + } else { + this.application.ninja.documentBar.element.style.display = "block"; + this.application.ninja.editorViewOptions.element.style.display = "none"; + } + } + }, + + collapseAllPanels:{ + value:function(){ + this.application.ninja.panelSplitter.collapse(); + this.application.ninja.timelineSplitter.collapse(); + this.application.ninja.toolsSplitter.collapse(); + this.application.ninja.optionsSplitter.collapse(); + } + }, + restoreAllPanels:{ + value:function(){ + this.application.ninja.panelSplitter.restore(); + this.application.ninja.timelineSplitter.restore(); + this.application.ninja.toolsSplitter.restore(); + this.application.ninja.optionsSplitter.restore(); + } + }, + + applyTheme:{ + value:function(themeClass){ + //Todo: change for bucket structure of documents + this.textParentContainer.className = "codeViewContainer "+themeClass; + } } - //////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// }); //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/js/stage/stage-view.reel/stage-view.js b/js/stage/stage-view.reel/stage-view.js index ba94fadf..e8f29306 100755 --- a/js/stage/stage-view.reel/stage-view.js +++ b/js/stage/stage-view.reel/stage-view.js @@ -31,81 +31,6 @@ exports.StageView = Montage.create(Component, { } }, - /** - * Public method - * Creates a textarea element which will contain the content of the opened text document. - */ - createTextAreaElement: { - value: function(uuid) { - var codeMirrorDiv = document.createElement("div"); - codeMirrorDiv.id = "codeMirror_" + uuid; - codeMirrorDiv.style.display = "block"; - this.element.appendChild(codeMirrorDiv); - - var textArea = document.createElement("textarea"); - textArea.id = "code"; - textArea.name = "code"; - codeMirrorDiv.appendChild(textArea); - - return textArea; - } - }, - - /** - * Public method - * Creates a new instance of a code editor - */ - createTextView: { - value: function(doc) { - var type; - this.application.ninja.documentController._hideCurrentDocument(); - this.hideOtherDocuments(doc.uuid); - - switch(doc.documentType) { - case "css" : - type = "css"; - break; - case "js" : - type = "javascript"; - break; - case "html" : - type = "htmlmixed"; - break; - case "json" : - type = "javascript"; - break; - case "php" : - type = "php"; - break; - case "pl" : - type = "perl"; - break; - case "py" : - type = "python"; - break; - case "rb" : - type = "ruby"; - break; - case "xml" : - type = "xml"; - break; - } - document.getElementById("codeMirror_"+doc.uuid).style.display="block"; - - doc.editor = this.application.ninja.codeEditorController.createEditor(doc, type, doc.documentType); - doc.editor.hline = doc.editor.setLineClass(0, "activeline"); - - this.application.ninja.stage._scrollFlag = false; // TODO HACK to prevent type error on Hide/Show Iframe - this.application.ninja.documentController.activeDocument = doc; - this.application.ninja.stage.hideCanvas(true); - document.getElementById("iframeContainer").style.display="none";//hide the iframe when switching to code view - - this.showCodeViewBar(true); - this.application.ninja.codeEditorController.applySettings(); - this.collapseAllPanels(); - } - }, - /** * Public method * Switches between documents. Document state data is saved and restored whereever applicable @@ -157,16 +82,6 @@ exports.StageView = Montage.create(Component, { } }, - /** - * Public method - * Switches between different views of a design document, like HTML design view, HTML code view - */ - switchDesignDocViews: { - value: function() { - //TODO - } - }, - showRulers:{ value:function(){ this.application.ninja.rulerTop.style.display = "block"; @@ -178,39 +93,6 @@ exports.StageView = Montage.create(Component, { this.application.ninja.rulerTop.style.display = "none"; this.application.ninja.rulerLeft.style.display = "none"; } - }, - showCodeViewBar:{ - value:function(isCodeView){ - if(isCodeView === true) { - this.application.ninja.editorViewOptions.element.style.display = "block"; - this.application.ninja.documentBar.element.style.display = "none"; - } else { - this.application.ninja.documentBar.element.style.display = "block"; - this.application.ninja.editorViewOptions.element.style.display = "none"; - } - } - }, - - collapseAllPanels:{ - value:function(){ - this.application.ninja.panelSplitter.collapse(); - this.application.ninja.timelineSplitter.collapse(); - this.application.ninja.toolsSplitter.collapse(); - this.application.ninja.optionsSplitter.collapse(); - } - }, - restoreAllPanels:{ - value:function(){ - this.application.ninja.panelSplitter.restore(); - this.application.ninja.timelineSplitter.restore(); - this.application.ninja.toolsSplitter.restore(); - this.application.ninja.optionsSplitter.restore(); - } - }, - - applyTheme:{ - value:function(themeClass){ - this.element.className = "codeViewContainer "+themeClass; - } } + }); \ No newline at end of file -- cgit v1.2.3 From 6f5ffa17c72dd0aef7a02e3496154514750143c2 Mon Sep 17 00:00:00 2001 From: Ananya Sen Date: Fri, 18 May 2012 18:38:09 -0700 Subject: save for code view documents in the new dom architecture Signed-off-by: Ananya Sen --- js/controllers/document-controller.js | 8 +++++- js/document/document-text.js | 10 ++++++- js/document/models/text.js | 53 ++++++++++++++++++++++++++++++++++- 3 files changed, 68 insertions(+), 3 deletions(-) (limited to 'js') diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js index 86b1d057..814a30e1 100755 --- a/js/controllers/document-controller.js +++ b/js/controllers/document-controller.js @@ -356,7 +356,8 @@ var DocumentController = exports.DocumentController = Montage.create(Component, console.log("URI is: ", uri); } }, - + + //todo: remove this funciton as it is not used textDocumentOpened: { value: function(doc) { @@ -413,6 +414,11 @@ var DocumentController = exports.DocumentController = Montage.create(Component, this.application.ninja.stage.hideCanvas(true); + if(this._documents.length === 0){ + document.getElementById("iframeContainer").style.display="block"; + document.getElementById("codeViewContainer").style.display="block"; + } + NJevent("closeDocument", doc.model.file.uri); //TODO: Delete object here diff --git a/js/document/document-text.js b/js/document/document-text.js index 533b32c9..09525f4e 100755 --- a/js/document/document-text.js +++ b/js/document/document-text.js @@ -53,8 +53,16 @@ exports.TextDocument = Montage.create(Component, { callback.call(context, this); } - } + }, //////////////////////////////////////////////////////////////////// + // + closeDocument: { + value: function (context, callback) { + var closed = this.model.close(null); + + callback.call(context, this); + } + } //////////////////////////////////////////////////////////////////// }); //////////////////////////////////////////////////////////////////////// diff --git a/js/document/models/text.js b/js/document/models/text.js index 5a5e86ef..d21666d0 100755 --- a/js/document/models/text.js +++ b/js/document/models/text.js @@ -16,7 +16,58 @@ exports.TextDocumentModel = Montage.create(BaseDocumentModel, { hasTemplate: { enumerable: false, value: false - } + }, +//////////////////////////////////////////////////////////////////// + // + save: { + enumerable: false, + value: function (callback) { + this.application.ninja.documentController.activeDocument.model.views.code.editor.save();//save to textarea + + var self = this; + + this.application.ninja.ioMediator.fileSave({ + mode: ""+ self.file.extension, + file: self.file, + content:self.views.code.textArea.value + }, this.handleSaved.bind({callback: callback, model: this})); + } + }, +//////////////////////////////////////////////////////////////////// + // + handleSaved: { + value: function (result) { + // + if (result.status === 204) { + this.model.needsSave = false; + } + // + if (this.callback) this.callback(result); + } + }, + //////////////////////////////////////////////////////////////////// + // + close: { + value: function (view, callback) { + //Outcome of close (pending on save logic) + var success; + // + if (this.needsSave) { + //Prompt user to save of lose data + } else { + //Close file + success = true; + } + // + this.views.code.textParentContainer.removeChild(this.views.code.textViewContainer); + this.views.code.restoreAllPanels(); + this.views.code.showCodeViewBar(false); + this.views.code = null; + + // + return success; + } + } }); //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// \ No newline at end of file -- cgit v1.2.3 From c3c2ffc8d057660b7c42b45442885cd0d2d598bc Mon Sep 17 00:00:00 2001 From: Ananya Sen Date: Sun, 20 May 2012 15:16:06 -0700 Subject: use documents parent container property Signed-off-by: Ananya Sen --- js/document/document-text.js | 3 ++- js/document/models/text.js | 2 +- js/document/views/code.js | 21 +++------------------ 3 files changed, 6 insertions(+), 20 deletions(-) (limited to 'js') diff --git a/js/document/document-text.js b/js/document/document-text.js index 09525f4e..bb63f5f8 100755 --- a/js/document/document-text.js +++ b/js/document/document-text.js @@ -31,7 +31,6 @@ exports.TextDocument = Montage.create(Component, { enumerable: false, value : function(file, context, callback, view){ var codeDocumentView = CodeDocumentView.create(), container = null; - codeDocumentView.initialize(); //Creating instance of Text Document Model this.model = Montage.create(TextDocumentModel,{ @@ -40,6 +39,8 @@ exports.TextDocument = Montage.create(Component, { views: {value: {'code': codeDocumentView, 'design': null}} }); + codeDocumentView.initialize(this.model.parentContainer); + codeDocumentView.textArea.value = file.content; codeDocumentView.initializeTextView(file, this); diff --git a/js/document/models/text.js b/js/document/models/text.js index d21666d0..fe02953c 100755 --- a/js/document/models/text.js +++ b/js/document/models/text.js @@ -59,7 +59,7 @@ exports.TextDocumentModel = Montage.create(BaseDocumentModel, { success = true; } // - this.views.code.textParentContainer.removeChild(this.views.code.textViewContainer); + this.parentContainer.removeChild(this.views.code.textViewContainer); this.views.code.restoreAllPanels(); this.views.code.showCodeViewBar(false); this.views.code = null; diff --git a/js/document/views/code.js b/js/document/views/code.js index de12881c..711479a8 100755 --- a/js/document/views/code.js +++ b/js/document/views/code.js @@ -41,18 +41,6 @@ var CodeDocumentView = exports.CodeDocumentView = Montage.create(BaseDocumentVie get: function() {return this._textArea;}, set: function(value) {this._textArea= value;} }, - - //////////////////////////////////////////////////////////////////// - //remove _extParentContainer after moving to bucket structure for documents - _textParentContainer: { - value: null - }, - //////////////////////////////////////////////////////////////////// - // - textParentContainer: { - get: function() {return this._textParentContainer;}, - set: function(value) {this._textParentContainer= value;} - }, //////////////////////////////////////////////////////////////////// // _textViewContainer: { @@ -71,15 +59,12 @@ var CodeDocumentView = exports.CodeDocumentView = Montage.create(BaseDocumentVie * Public method */ initialize:{ - value: function(){ - //populate _textParentContainer - this.textParentContainer = document.getElementById("codeViewContainer"); - + value: function(parentContainer){ //create contianer this.textViewContainer = document.createElement("div"); //this.textViewContainer.id = "codemirror_" + uuid; this.textViewContainer.style.display = "block"; - this.textParentContainer.appendChild(this.textViewContainer); + parentContainer.appendChild(this.textViewContainer); //create text area this.textArea = this.createTextAreaElement(); @@ -200,7 +185,7 @@ var CodeDocumentView = exports.CodeDocumentView = Montage.create(BaseDocumentVie applyTheme:{ value:function(themeClass){ //Todo: change for bucket structure of documents - this.textParentContainer.className = "codeViewContainer "+themeClass; + this.textViewContainer.className = "codeViewContainer "+themeClass; } } -- cgit v1.2.3 From 2cc8e58f6bb9f64a7473e62aecd013fa55167231 Mon Sep 17 00:00:00 2001 From: Ananya Sen Date: Mon, 21 May 2012 16:42:26 -0700 Subject: - added opening multiple code and design view documents - switching between multiple code and design view documents - Note: closing of documents, when multiple documents are open, is not yet implemented Signed-off-by: Ananya Sen --- .../layout/document-entry.reel/document-entry.js | 2 +- js/controllers/document-controller.js | 105 +++++++++++++-------- js/document/models/text.js | 4 +- js/document/views/code.js | 54 +++-------- js/stage/stage-view.reel/stage-view.js | 14 --- js/stage/stage.reel/stage.js | 44 ++++++++- 6 files changed, 124 insertions(+), 99 deletions(-) (limited to 'js') diff --git a/js/components/layout/document-entry.reel/document-entry.js b/js/components/layout/document-entry.reel/document-entry.js index 50b3624c..24c7737c 100755 --- a/js/components/layout/document-entry.reel/document-entry.js +++ b/js/components/layout/document-entry.reel/document-entry.js @@ -122,7 +122,7 @@ exports.DocumentEntry = Montage.create(Component, { this.application.ninja.documentController.closeFile(this.application.ninja.documentController._findDocumentByUUID(this._uuid)); } else { if(!this.active) { - this.application.ninja.documentController.switchDocuments(this.application.ninja.currentDocument, this.application.ninja.documentController._findDocumentByUUID(this._uuid)); + this.application.ninja.documentController.switchDocuments(this.application.ninja.documentController.activeDocument, this.application.ninja.documentController._findDocumentByUUID(this._uuid)); } } } diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js index 814a30e1..26c3ebaa 100755 --- a/js/controllers/document-controller.js +++ b/js/controllers/document-controller.js @@ -52,10 +52,6 @@ var DocumentController = exports.DocumentController = Montage.create(Component, if(!!this._activeDocument){ if(this._documents.indexOf(doc) === -1) this._documents.push(doc); this._activeDocument.isActive = true; - - if(!!this._activeDocument.editor){ - this._activeDocument.editor.focus(); - } } } }, @@ -312,10 +308,9 @@ var DocumentController = exports.DocumentController = Montage.create(Component, this.activeDocument.uri = fileUri; //save a new file //use the ioMediator.fileSaveAll when implemented - this.activeDocument._userDocument.name=filename; - this.activeDocument._userDocument.root=destination; - this.activeDocument._userDocument.uri=fileUri; - this.application.ninja.ioMediator.fileSave(this.activeDocument.save(), this.fileSaveResult.bind(this)); + this.activeDocument.model.file.name=filename; + this.activeDocument.model.file.uri=fileUri; + this.activeDocument.model.save(); // } }, @@ -408,7 +403,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component, this._activeDocument = null; - this.application.ninja.stage.stageView.hideRulers(); + this.application.ninja.stage.hideRulers(); // document.getElementById("iframeContainer").style.display="block"; @@ -471,7 +466,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component, // Show the rulers // TODO: Move this indo design view - this.application.ninja.stage.stageView.showRulers(); + this.application.ninja.stage.showRulers(); // Show the canvas this.application.ninja.stage.hideCanvas(false); @@ -489,53 +484,81 @@ var DocumentController = exports.DocumentController = Montage.create(Component, } }, + + _onOpenTextDocument: { + value: function(doc) { + var currentDocument=null; + if(this.activeDocument) { + // There is a document currently opened + currentDocument = this.activeDocument; + } + + this.application.ninja.stage._scrollFlag = false; // TODO HACK to prevent type error on Hide/Show Iframe + this.activeDocument = doc; + document.getElementById("iframeContainer").style.display = "none"; + this.application.ninja.codeEditorController.applySettings(); + this.switchDocuments(currentDocument, doc, true); + } + }, + switchDocuments: { value: function(currentDocument, newDocument, didCreate) { - if(currentDocument) { + if(currentDocument && currentDocument.currentView === "design") { currentDocument.serializeDocument(); - this.application.ninja.selectionController._selectionContainer = null; currentDocument.model.views.design.propertiesPanel.clear(); - currentDocument.model.views.design.hide(); } - this.application.ninja.stage.clearAllCanvas(); + if(currentDocument) { + currentDocument.model.currentView.hide(); + currentDocument.model.isActive = false; + } + if(currentDocument && newDocument && (currentDocument.model.parentContainer !== newDocument.model.parentContainer)){ + currentDocument.model.parentContainer.style["display"] = "none"; + } - if(didCreate) { - newDocument.model.views.design.iframe.style.opacity = 1; - NJevent("onOpenDocument", newDocument); - } else { - this.activeDocument = newDocument; - newDocument.model.views.design.show(); - newDocument.deserializeDocument(); - NJevent("onSwitchDocument"); + if(newDocument && newDocument.currentView === "code"){ + this.application.ninja.stage.showCodeViewBar(true); + this.application.ninja.stage.collapseAllPanels(); + this.application.ninja.stage.hideCanvas(true); + this.application.ninja.stage.hideRulers(); + + newDocument.model.views.code.editor.focus(); + + }else if(currentDocument && newDocument && newDocument.currentView === "design"){ + this.application.ninja.stage.showCodeViewBar(false); + this.application.ninja.stage.restoreAllPanels(); + this.application.ninja.stage.hideCanvas(false); + this.application.ninja.stage.showRulers(); } - } - }, + this.application.ninja.stage.clearAllCanvas(); - _onOpenTextDocument: { - value: function(doc) { - if(this.activeDocument) { + if(didCreate) { + newDocument.model.currentView.show(); + newDocument.model.parentContainer.style["display"] = "block"; + if(newDocument.currentView === "design") { + newDocument.model.views.design.iframe.style.opacity = 1; + NJevent("onOpenDocument", newDocument); + } + } + else { + this.activeDocument = newDocument; - if(this.activeDocument.currentView === "design"){ - this.activeDocument.saveAppState(); - this.activeDocument.parentContainer.style["display"] = "none"; - this.application.ninja.stage.hideCanvas(true); - this.application.ninja.stage.stageView.hideRulers(); + newDocument.model.currentView.show(); + if(currentDocument && newDocument && (currentDocument.model.parentContainer !== newDocument.model.parentContainer)){ + newDocument.model.parentContainer.style["display"] = "block"; } - this.activeDocument.container.style["display"] = "none"; + if(newDocument.currentView === "design") { + newDocument.deserializeDocument(); + NJevent("onSwitchDocument"); + }else{ + newDocument.model.isActive = true; + this.application.ninja.codeEditorController.applySettings();//should be called after activeDocument is updated + } } - - this.application.ninja.stage._scrollFlag = false; // TODO HACK to prevent type error on Hide/Show Iframe - this.activeDocument = doc; - //hide the iframe when switching to code view - document.getElementById("iframeContainer").style.display = "none"; - doc.model.views.code.showCodeViewBar(true); - this.application.ninja.codeEditorController.applySettings(); - doc.model.views.code.collapseAllPanels(); } }, diff --git a/js/document/models/text.js b/js/document/models/text.js index fe02953c..d1252b7d 100755 --- a/js/document/models/text.js +++ b/js/document/models/text.js @@ -60,8 +60,8 @@ exports.TextDocumentModel = Montage.create(BaseDocumentModel, { } // this.parentContainer.removeChild(this.views.code.textViewContainer); - this.views.code.restoreAllPanels(); - this.views.code.showCodeViewBar(false); + this.application.ninja.stage.showCodeViewBar(false); + this.application.ninja.stage.restoreAllPanels(); this.views.code = null; // diff --git a/js/document/views/code.js b/js/document/views/code.js index 711479a8..66d1c702 100755 --- a/js/document/views/code.js +++ b/js/document/views/code.js @@ -140,56 +140,30 @@ var CodeDocumentView = exports.CodeDocumentView = Montage.create(BaseDocumentVie }, //////////////////////////////////////////////////////////////////// // - - showRulers:{ - value:function(){ - this.application.ninja.rulerTop.style.display = "block"; - this.application.ninja.rulerLeft.style.display = "block"; - } - }, - hideRulers:{ - value:function(){ - this.application.ninja.rulerTop.style.display = "none"; - this.application.ninja.rulerLeft.style.display = "none"; - } - }, - showCodeViewBar:{ - value:function(isCodeView){ - if(isCodeView === true) { - this.application.ninja.editorViewOptions.element.style.display = "block"; - this.application.ninja.documentBar.element.style.display = "none"; - } else { - this.application.ninja.documentBar.element.style.display = "block"; - this.application.ninja.editorViewOptions.element.style.display = "none"; - } - } - }, - - collapseAllPanels:{ - value:function(){ - this.application.ninja.panelSplitter.collapse(); - this.application.ninja.timelineSplitter.collapse(); - this.application.ninja.toolsSplitter.collapse(); - this.application.ninja.optionsSplitter.collapse(); + show: { + value: function (callback) { + this.textViewContainer.style.display = "block"; + // + if (callback) callback(); } }, - restoreAllPanels:{ - value:function(){ - this.application.ninja.panelSplitter.restore(); - this.application.ninja.timelineSplitter.restore(); - this.application.ninja.toolsSplitter.restore(); - this.application.ninja.optionsSplitter.restore(); + //////////////////////////////////////////////////////////////////// + // + hide: { + value: function (callback) { + this.textViewContainer.style.display = "none"; + // + if (callback) callback(); } }, - + //////////////////////////////////////////////////////////////////// + // applyTheme:{ value:function(themeClass){ //Todo: change for bucket structure of documents this.textViewContainer.className = "codeViewContainer "+themeClass; } } - - //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// }); diff --git a/js/stage/stage-view.reel/stage-view.js b/js/stage/stage-view.reel/stage-view.js index 139fa032..2c129ee2 100755 --- a/js/stage/stage-view.reel/stage-view.js +++ b/js/stage/stage-view.reel/stage-view.js @@ -58,19 +58,5 @@ exports.StageView = Montage.create(Component, { NJevent("switchDocument"); } - }, - - showRulers:{ - value:function(){ - this.application.ninja.rulerTop.style.display = "block"; - this.application.ninja.rulerLeft.style.display = "block"; - } - }, - hideRulers:{ - value:function(){ - this.application.ninja.rulerTop.style.display = "none"; - this.application.ninja.rulerLeft.style.display = "none"; - } } - }); \ No newline at end of file diff --git a/js/stage/stage.reel/stage.js b/js/stage/stage.reel/stage.js index 73d3aaf4..f768f03a 100755 --- a/js/stage/stage.reel/stage.js +++ b/js/stage/stage.reel/stage.js @@ -1012,5 +1012,47 @@ exports.Stage = Montage.create(Component, { this._iframeContainer.scrollTop = this.application.ninja.documentController.activeDocument.savedTopScroll; this._scrollTop = this.application.ninja.documentController.activeDocument.savedTopScroll; } - } + }, + + showRulers:{ + value:function(){ + this.application.ninja.rulerTop.style.display = "block"; + this.application.ninja.rulerLeft.style.display = "block"; + } + }, + hideRulers:{ + value:function(){ + this.application.ninja.rulerTop.style.display = "none"; + this.application.ninja.rulerLeft.style.display = "none"; + } + }, + showCodeViewBar:{ + value:function(isCodeView){ + if(isCodeView === true) { + this.application.ninja.editorViewOptions.element.style.display = "block"; + this.application.ninja.documentBar.element.style.display = "none"; + } else { + this.application.ninja.documentBar.element.style.display = "block"; + this.application.ninja.editorViewOptions.element.style.display = "none"; + } + } + }, + + collapseAllPanels:{ + value:function(){ + this.application.ninja.panelSplitter.collapse(); + this.application.ninja.timelineSplitter.collapse(); + this.application.ninja.toolsSplitter.collapse(); + this.application.ninja.optionsSplitter.collapse(); + } + }, + restoreAllPanels:{ + value:function(){ + this.application.ninja.panelSplitter.restore(); + this.application.ninja.timelineSplitter.restore(); + this.application.ninja.toolsSplitter.restore(); + this.application.ninja.optionsSplitter.restore(); + } + } + }); \ No newline at end of file -- cgit v1.2.3 From 58df45d43614b5364aa84832c7c0aa06a9d086fc Mon Sep 17 00:00:00 2001 From: Ananya Sen Date: Mon, 21 May 2012 16:46:45 -0700 Subject: - fixed save as Signed-off-by: Ananya Sen --- js/controllers/document-controller.js | 1 - 1 file changed, 1 deletion(-) (limited to 'js') diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js index 26c3ebaa..b4aff2f0 100755 --- a/js/controllers/document-controller.js +++ b/js/controllers/document-controller.js @@ -311,7 +311,6 @@ var DocumentController = exports.DocumentController = Montage.create(Component, this.activeDocument.model.file.name=filename; this.activeDocument.model.file.uri=fileUri; this.activeDocument.model.save(); - // } }, -- cgit v1.2.3 From 9b6da637d9654727426c6d78f17e3804bbd84ce5 Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Tue, 22 May 2012 14:42:43 -0700 Subject: fixing a few document switching issues. Signed-off-by: Valerio Virgillito --- .../layout/document-entry.reel/document-entry.js | 2 +- js/controllers/document-controller.js | 90 ++++++++++------------ js/document/document-html.js | 2 +- js/document/views/base.js | 2 + 4 files changed, 46 insertions(+), 50 deletions(-) (limited to 'js') diff --git a/js/components/layout/document-entry.reel/document-entry.js b/js/components/layout/document-entry.reel/document-entry.js index 24c7737c..50b3624c 100755 --- a/js/components/layout/document-entry.reel/document-entry.js +++ b/js/components/layout/document-entry.reel/document-entry.js @@ -122,7 +122,7 @@ exports.DocumentEntry = Montage.create(Component, { this.application.ninja.documentController.closeFile(this.application.ninja.documentController._findDocumentByUUID(this._uuid)); } else { if(!this.active) { - this.application.ninja.documentController.switchDocuments(this.application.ninja.documentController.activeDocument, this.application.ninja.documentController._findDocumentByUUID(this._uuid)); + this.application.ninja.documentController.switchDocuments(this.application.ninja.currentDocument, this.application.ninja.documentController._findDocumentByUUID(this._uuid)); } } } diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js index b4aff2f0..d99fadbb 100755 --- a/js/controllers/document-controller.js +++ b/js/controllers/document-controller.js @@ -9,12 +9,8 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot var Montage = require("montage/core/core").Montage, Component = require("montage/ui/component").Component, Uuid = require("montage/core/uuid").Uuid, - HTMLDocument = require("js/document/html-document").HTMLDocument, - TextDocument = require("js/document/text-document").TextDocument; - - // New Document Objects -var Document_HTML = require("js/document/document-html").HtmlDocument; -var Document_Text = require("js/document/document-text").TextDocument; + HTMLDocument = require("js/document/document-html").HtmlDocument, + TextDocument = require("js/document/document-text").TextDocument; //////////////////////////////////////////////////////////////////////// // var DocumentController = exports.DocumentController = Montage.create(Component, { @@ -308,8 +304,8 @@ var DocumentController = exports.DocumentController = Montage.create(Component, this.activeDocument.uri = fileUri; //save a new file //use the ioMediator.fileSaveAll when implemented - this.activeDocument.model.file.name=filename; - this.activeDocument.model.file.uri=fileUri; + this.activeDocument.model.file.name = filename; + this.activeDocument.model.file.uri = fileUri; this.activeDocument.model.save(); } }, @@ -334,11 +330,11 @@ var DocumentController = exports.DocumentController = Montage.create(Component, //Open in designer view this._hackRootFlag = false; - Montage.create(Document_HTML).init(file, this, this._onOpenDocument, 'design', template); + Montage.create(HTMLDocument).init(file, this, this._onOpenDocument, 'design', template); break; default: //Open in code view - Montage.create(Document_Text).init(file, this, this._onOpenTextDocument, 'code'); + Montage.create(TextDocument).init(file, this, this._onOpenTextDocument, 'code'); break; } } @@ -404,17 +400,16 @@ var DocumentController = exports.DocumentController = Montage.create(Component, this.application.ninja.stage.hideRulers(); -// document.getElementById("iframeContainer").style.display="block"; - this.application.ninja.stage.hideCanvas(true); + //TODO: Use references for those instead of calling getElementById if(this._documents.length === 0){ document.getElementById("iframeContainer").style.display="block"; document.getElementById("codeViewContainer").style.display="block"; } - NJevent("closeDocument", doc.model.file.uri); + //TODO: Delete object here } }, @@ -458,8 +453,6 @@ var DocumentController = exports.DocumentController = Montage.create(Component, if(this.activeDocument) { // There is a document currently opened currentDocument = this.activeDocument; - - //this.application.ninja.stage.stageView.restoreAllPanels(); } else { // There is no document opened @@ -486,16 +479,17 @@ var DocumentController = exports.DocumentController = Montage.create(Component, _onOpenTextDocument: { value: function(doc) { - var currentDocument=null; + var currentDocument = null; if(this.activeDocument) { // There is a document currently opened currentDocument = this.activeDocument; } - this.application.ninja.stage._scrollFlag = false; // TODO HACK to prevent type error on Hide/Show Iframe - this.activeDocument = doc; + this.application.ninja.currentDocument = this.activeDocument = doc; + document.getElementById("iframeContainer").style.display = "none"; this.application.ninja.codeEditorController.applySettings(); + this.switchDocuments(currentDocument, doc, true); } }, @@ -503,57 +497,57 @@ var DocumentController = exports.DocumentController = Montage.create(Component, switchDocuments: { value: function(currentDocument, newDocument, didCreate) { - if(currentDocument && currentDocument.currentView === "design") { - currentDocument.serializeDocument(); - this.application.ninja.selectionController._selectionContainer = null; - currentDocument.model.views.design.propertiesPanel.clear(); - } - if(currentDocument) { - currentDocument.model.currentView.hide(); + if(currentDocument.currentView === "design") { + currentDocument.serializeDocument(); + this.application.ninja.selectionController._selectionContainer = null; + currentDocument.model.views.design.propertiesPanel.clear(); + } + currentDocument.model.isActive = false; - } - if(currentDocument && newDocument && (currentDocument.model.parentContainer !== newDocument.model.parentContainer)){ - currentDocument.model.parentContainer.style["display"] = "none"; - } - if(newDocument && newDocument.currentView === "code"){ - this.application.ninja.stage.showCodeViewBar(true); - this.application.ninja.stage.collapseAllPanels(); - this.application.ninja.stage.hideCanvas(true); - this.application.ninja.stage.hideRulers(); + currentDocument.model.currentView.hide(); - newDocument.model.views.code.editor.focus(); + if(currentDocument.model.parentContainer !== newDocument.model.parentContainer) { + currentDocument.model.parentContainer.style["display"] = "none"; + newDocument.model.parentContainer.style["display"] = "block"; + } - }else if(currentDocument && newDocument && newDocument.currentView === "design"){ - this.application.ninja.stage.showCodeViewBar(false); - this.application.ninja.stage.restoreAllPanels(); - this.application.ninja.stage.hideCanvas(false); - this.application.ninja.stage.showRulers(); + if(currentDocument.currentView === "code" && newDocument.currentView === "design") { + this.application.ninja.stage.showCodeViewBar(false); + this.application.ninja.stage.restoreAllPanels(); + this.application.ninja.stage.hideCanvas(false); + this.application.ninja.stage.showRulers(); + } else if(currentDocument.currentView === "design" && newDocument.currentView === "code") { + this.application.ninja.stage.showCodeViewBar(true); + this.application.ninja.stage.collapseAllPanels(); + this.application.ninja.stage.hideCanvas(true); + this.application.ninja.stage.hideRulers(); + } } this.application.ninja.stage.clearAllCanvas(); if(didCreate) { newDocument.model.currentView.show(); - newDocument.model.parentContainer.style["display"] = "block"; + if(newDocument.currentView === "design") { - newDocument.model.views.design.iframe.style.opacity = 1; NJevent("onOpenDocument", newDocument); + } else { + newDocument.model.parentContainer.style["display"] = "block"; } - } - else { + } else { this.activeDocument = newDocument; newDocument.model.currentView.show(); - if(currentDocument && newDocument && (currentDocument.model.parentContainer !== newDocument.model.parentContainer)){ - newDocument.model.parentContainer.style["display"] = "block"; - } if(newDocument.currentView === "design") { newDocument.deserializeDocument(); NJevent("onSwitchDocument"); - }else{ + } else { + this.application.ninja.currentDocument = newDocument; + newDocument.model