diff options
author | Valerio Virgillito | 2012-02-23 01:55:14 -0800 |
---|---|---|
committer | Valerio Virgillito | 2012-02-23 01:55:14 -0800 |
commit | 64a971f63333d74ca89690892a52948b3bd4283a (patch) | |
tree | 61bac34de22852efd2b9b8880f62210685b16297 /js | |
parent | aaa8d05cc3cfd94322d356e265b94b0abb9f6305 (diff) | |
parent | d264092596ba697cd04738566184270dc608be63 (diff) | |
download | ninja-64a971f63333d74ca89690892a52948b3bd4283a.tar.gz |
Merge branch 'FileIO' of github.com:joseeight/ninja-internal into file-io
Diffstat (limited to 'js')
-rwxr-xr-x | js/components/ui/icon-list-basic/icon.reel/icon.js | 5 | ||||
-rwxr-xr-x | js/components/ui/tree-basic/treeItem.reel/treeItem.js | 5 | ||||
-rwxr-xr-x | js/controllers/document-controller.js | 57 | ||||
-rwxr-xr-x | js/controllers/styles-controller.js | 44 | ||||
-rwxr-xr-x | js/data/menu-data.js | 2 | ||||
-rwxr-xr-x | js/document/html-document.js | 94 | ||||
-rwxr-xr-x | js/document/templates/montage-html/index.html | 1 | ||||
-rwxr-xr-x | js/document/templates/montage-html/styles.css | 5 | ||||
-rw-r--r-- | js/io/ui/file-picker/picker-navigator.reel/picker-navigator.js | 26 | ||||
-rwxr-xr-x | js/io/ui/new-file-dialog/new-file-workflow-controller.js | 7 | ||||
-rw-r--r-- | js/io/ui/save-as-dialog.reel/save-as-dialog.js | 4 | ||||
-rw-r--r-- | js/mediators/io-mediator.js | 79 |
12 files changed, 256 insertions, 73 deletions
diff --git a/js/components/ui/icon-list-basic/icon.reel/icon.js b/js/components/ui/icon-list-basic/icon.reel/icon.js index b0279207..72adbfa1 100755 --- a/js/components/ui/icon-list-basic/icon.reel/icon.js +++ b/js/components/ui/icon-list-basic/icon.reel/icon.js | |||
@@ -131,6 +131,11 @@ var Icon = exports.Icon = Montage.create(Component, { | |||
131 | openFolderEvent.initEvent("openFolder", false, false); | 131 | openFolderEvent.initEvent("openFolder", false, false); |
132 | openFolderEvent.folderUri = this.icondata.uri; | 132 | openFolderEvent.folderUri = this.icondata.uri; |
133 | this.element.dispatchEvent(openFolderEvent); | 133 | this.element.dispatchEvent(openFolderEvent); |
134 | }else{ | ||
135 | var openFolderEvent = document.createEvent("Events"); | ||
136 | openFolderEvent.initEvent("selectFile", false, false); | ||
137 | openFolderEvent.fileUri = this.icondata.uri; | ||
138 | this.element.dispatchEvent(openFolderEvent); | ||
134 | } | 139 | } |
135 | if(evt.bubbles){ | 140 | if(evt.bubbles){ |
136 | evt.stopPropagation(); | 141 | evt.stopPropagation(); |
diff --git a/js/components/ui/tree-basic/treeItem.reel/treeItem.js b/js/components/ui/tree-basic/treeItem.reel/treeItem.js index 755eab8c..4c71cb6b 100755 --- a/js/components/ui/tree-basic/treeItem.reel/treeItem.js +++ b/js/components/ui/tree-basic/treeItem.reel/treeItem.js | |||
@@ -225,6 +225,11 @@ exports.TreeItem = Montage.create(Component, { | |||
225 | openFolderEvent.initEvent("openFolder", false, false); | 225 | openFolderEvent.initEvent("openFolder", false, false); |
226 | openFolderEvent.folderUri = this.treeItemData.uri; | 226 | openFolderEvent.folderUri = this.treeItemData.uri; |
227 | this.element.dispatchEvent(openFolderEvent); | 227 | this.element.dispatchEvent(openFolderEvent); |
228 | }else{ | ||
229 | var openFolderEvent = document.createEvent("Events"); | ||
230 | openFolderEvent.initEvent("selectFile", false, false); | ||
231 | openFolderEvent.fileUri = this.treeItemData.uri; | ||
232 | this.element.dispatchEvent(openFolderEvent); | ||
228 | } | 233 | } |
229 | if(evt.bubbles){ | 234 | if(evt.bubbles){ |
230 | evt.stopPropagation(); | 235 | evt.stopPropagation(); |
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js index fa611de4..3a77ed5f 100755 --- a/js/controllers/document-controller.js +++ b/js/controllers/document-controller.js | |||
@@ -58,6 +58,8 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
58 | this.eventManager.addEventListener("executeFileOpen", this, false); | 58 | this.eventManager.addEventListener("executeFileOpen", this, false); |
59 | this.eventManager.addEventListener("executeNewFile", this, false); | 59 | this.eventManager.addEventListener("executeNewFile", this, false); |
60 | this.eventManager.addEventListener("executeSave", this, false); | 60 | this.eventManager.addEventListener("executeSave", this, false); |
61 | this.eventManager.addEventListener("executeSaveAs", this, false); | ||
62 | this.eventManager.addEventListener("executeSaveAll", this, false); | ||
61 | 63 | ||
62 | this.eventManager.addEventListener("recordStyleChanged", this, false); | 64 | this.eventManager.addEventListener("recordStyleChanged", this, false); |
63 | 65 | ||
@@ -84,9 +86,10 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
84 | // | 86 | // |
85 | handleAppLoaded: { | 87 | handleAppLoaded: { |
86 | value: function() { | 88 | value: function() { |
87 | //Adding an intercept to resources loaded to ensure user assets load from cloud simulator | 89 | //Checking for app not to be loaded via http/https to add app only listener |
88 | if (window.chrome.app.isInstalled) { | 90 | if (window.location.protocol !== 'http:' && window.location.protocol !== 'https:') { |
89 | chrome.webRequest.onBeforeRequest.addListener(this.handleWebRequest.bind(this), {urls: ["<all_urls>"]}, ["blocking"]); | 91 | //Adding an intercept to resources loaded to ensure user assets load from cloud simulator |
92 | chrome.webRequest.onBeforeRequest.addListener(this.handleWebRequest.bind(this), {urls: ["<all_urls>"]}, ["blocking"]); | ||
90 | } | 93 | } |
91 | } | 94 | } |
92 | }, | 95 | }, |
@@ -102,33 +105,57 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
102 | handleExecuteFileOpen: { | 105 | handleExecuteFileOpen: { |
103 | value: function(event) { | 106 | value: function(event) { |
104 | var pickerSettings = event._event.settings || {}; | 107 | var pickerSettings = event._event.settings || {}; |
105 | pickerSettings.callback = this.openFileWithURI.bind(this); | 108 | if (this.application.ninja.coreIoApi.cloudAvailable()) { |
106 | pickerSettings.pickerMode = "read"; | 109 | pickerSettings.callback = this.openFileWithURI.bind(this); |
107 | pickerSettings.inFileMode = true; | 110 | pickerSettings.pickerMode = "read"; |
108 | this.application.ninja.filePickerController.showFilePicker(pickerSettings); | 111 | pickerSettings.inFileMode = true; |
112 | this.application.ninja.filePickerController.showFilePicker(pickerSettings); | ||
113 | } | ||
109 | } | 114 | } |
110 | }, | 115 | }, |
111 | 116 | ||
112 | handleExecuteNewFile: { | 117 | handleExecuteNewFile: { |
113 | value: function(event) { | 118 | value: function(event) { |
114 | var newFileSettings = event._event.settings || {}; | 119 | var newFileSettings = event._event.settings || {}; |
115 | newFileSettings.callback = this.createNewFile.bind(this); | 120 | if (this.application.ninja.coreIoApi.cloudAvailable()) { |
116 | this.application.ninja.newFileController.showNewFileDialog(newFileSettings); | 121 | newFileSettings.callback = this.createNewFile.bind(this); |
122 | this.application.ninja.newFileController.showNewFileDialog(newFileSettings); | ||
123 | } | ||
117 | } | 124 | } |
118 | }, | 125 | }, |
119 | |||
120 | |||
121 | //////////////////////////////////////////////////////////////////// | 126 | //////////////////////////////////////////////////////////////////// |
122 | //TODO: Check for appropiate structures | 127 | //TODO: Check for appropiate structures |
123 | handleExecuteSave: { | 128 | handleExecuteSave: { |
124 | value: function(event) { | 129 | value: function(event) { |
125 | if(!!this.activeDocument){ | 130 | if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ |
126 | //Text and HTML document classes should return the same save object for fileSave | 131 | //Text and HTML document classes should return the same save object for fileSave |
127 | this.application.ninja.ioMediator.fileSave(this.activeDocument.save(), this.fileSaveResult.bind(this)); | 132 | this.application.ninja.ioMediator.fileSave(this.activeDocument.save(), this.fileSaveResult.bind(this)); |
133 | } | ||
128 | } | 134 | } |
135 | }, | ||
136 | //////////////////////////////////////////////////////////////////// | ||
137 | //TODO: Check for appropiate structures | ||
138 | handleExecuteSaveAll: { | ||
139 | value: function(event) { | ||
140 | if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ | ||
141 | //Text and HTML document classes should return the same save object for fileSave | ||
142 | this.application.ninja.ioMediator.fileSave(this.activeDocument.saveAll(), this.fileSaveResult.bind(this)); | ||
143 | } | ||
129 | } | 144 | } |
130 | }, | 145 | }, |
131 | //////////////////////////////////////////////////////////////////// | 146 | //////////////////////////////////////////////////////////////////// |
147 | handleExecuteSaveAs: { | ||
148 | value: function(event) { | ||
149 | var saveAsSettings = event._event.settings || {}; | ||
150 | if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ | ||
151 | saveAsSettings.fileName = this.activeDocument.name; | ||
152 | saveAsSettings.folderUri = this.activeDocument.uri.substring(0, this.activeDocument.uri.lastIndexOf("/")); | ||
153 | //add callback | ||
154 | this.application.ninja.newFileController.showSaveAsDialog(saveAsSettings); | ||
155 | } | ||
156 | } | ||
157 | }, | ||
158 | |||
132 | // | 159 | // |
133 | fileSaveResult: { | 160 | fileSaveResult: { |
134 | value: function (result) { | 161 | value: function (result) { |
@@ -287,7 +314,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
287 | if(this.activeDocument.uuid === id && this._documents.length > 0) {//closing the active document tab | 314 | if(this.activeDocument.uuid === id && this._documents.length > 0) {//closing the active document tab |
288 | var nextDocumentIndex = -1 ; | 315 | var nextDocumentIndex = -1 ; |
289 | if((this._documents.length > 0) && (closeDocumentIndex === 0)){ | 316 | if((this._documents.length > 0) && (closeDocumentIndex === 0)){ |
290 | nextDocumentIndex = 1; | 317 | nextDocumentIndex = 0; |
291 | }else if((this._documents.length > 0) && (closeDocumentIndex > 0)){ | 318 | }else if((this._documents.length > 0) && (closeDocumentIndex > 0)){ |
292 | nextDocumentIndex = closeDocumentIndex - 1; | 319 | nextDocumentIndex = closeDocumentIndex - 1; |
293 | } | 320 | } |
diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 885d710f..662816f5 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js | |||
@@ -317,7 +317,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
317 | isInlineStyle : true, | 317 | isInlineStyle : true, |
318 | style : element.style | 318 | style : element.style |
319 | }; | 319 | }; |
320 | 320 | ||
321 | ///// Now splice it into the matched rules | 321 | ///// Now splice it into the matched rules |
322 | ///// By inserting the inline style at the beginning, | 322 | ///// By inserting the inline style at the beginning, |
323 | ///// we keep the correct order of specificity | 323 | ///// we keep the correct order of specificity |
@@ -572,37 +572,36 @@ var stylesController = exports.StylesController = Montage.create(Component, { | |||
572 | win = element.ownerDocument.defaultView, | 572 | win = element.ownerDocument.defaultView, |
573 | self = this; | 573 | self = this; |
574 | 574 | ||
575 | if(!win) { | ||
576 | return null; | ||
577 | } | ||
578 | |||
579 | if(!omitPseudos) { | 575 | if(!omitPseudos) { |
580 | pseudos.concat(['link', 'visited', 'active', 'hover', 'focus', 'first-letter', | 576 | pseudos.concat(['link', 'visited', 'active', 'hover', 'focus', 'first-letter', |
581 | 'first-line', 'first-child', 'before', 'after', 'lang', 'target']); | 577 | 'first-line', 'first-child', 'before', 'after', 'lang', 'target']); |
582 | } | 578 | } |
583 | 579 | ||
584 | pseudos.forEach(function(pseudo) { | 580 | try { |
585 | rules = rules.concat(nj.toArray(win.getMatchedCSSRules(element, pseudo)).filter(function(rule) { | 581 | pseudos.forEach(function(pseudo) { |
586 | //// useStageStyleSheet flag indicates whether to only return rules from the stylesheet, | 582 | rules = rules.concat(nj.toArray(win.getMatchedCSSRules(element, pseudo)).filter(function(rule) { |
587 | //// or only use rules for other stylesheets | 583 | //// useStageStyleSheet flag indicates whether to only return rules from the stylesheet, |
588 | 584 | //// or only use rules for other stylesheets | |
589 | var sheetId = (rule.parentStyleSheet) ? rule.parentStyleSheet.ownerNode.id : null, | ||
590 | isStageStyleSheet = sheetId === this.CONST.STAGE_SHEET_ID; | ||