From 33e655cbbb0816340c5a2e5d5cc0a6b0c7d9f53c Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Wed, 1 Feb 2012 23:31:36 -0800
Subject: File IO clean up and setting up
Cleaned up file IO templates and removed app-caching from Ninja since it would be needed. Setting up io-mediator to hook up to controller. Still need to address naming conventions and clean up more in the io directory.
---
js/mediators/io-mediator.js | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
create mode 100644 js/mediators/io-mediator.js
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
new file mode 100644
index 00000000..b392a065
--- /dev/null
+++ b/js/mediators/io-mediator.js
@@ -0,0 +1,27 @@
+/*
+This file contains proprietary software owned by Motorola Mobility, Inc.
+No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
+(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
+ */
+
+////////////////////////////////////////////////////////////////////////
+//
+var Montage = require("montage/core/core").Montage,
+ FileIo = require("js/io/system/fileio").FileIo,
+ ProjectIo = require("js/io/system/projectio").ProjectIo;
+////////////////////////////////////////////////////////////////////////
+//
+exports.IoMediator = Montage.create(Object.prototype, {
+ ////////////////////////////////////////////////////////////////////
+ //
+ name: {
+ enumerable: false,
+ value: function () {
+ //
+ }
+ }
+ ////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////
+});
+////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////
\ No newline at end of file
--
cgit v1.2.3
From 4d8306b638c53899403a4f0328c02bf1ab893e8f Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Thu, 2 Feb 2012 17:52:13 -0800
Subject: Setting up mediator for UI in FileIO
---
js/mediators/io-mediator.js | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index b392a065..f778c849 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -14,9 +14,34 @@ var Montage = require("montage/core/core").Montage,
exports.IoMediator = Montage.create(Object.prototype, {
////////////////////////////////////////////////////////////////////
//
- name: {
+ fileNew: {
enumerable: false,
- value: function () {
+ value: function (file, template, callback) {
+ //
+
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ //
+ fileOpen: {
+ enumerable: false,
+ value: function (file, callback) {
+ //
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ //
+ fileSave: {
+ enumerable: false,
+ value: function (file, callback) {
+ //
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ //
+ fileSaveAs: {
+ enumerable: false,
+ value: function (file, copy, callback) {
//
}
}
--
cgit v1.2.3
From 8e06b63e5eab5558823f4923e20a832c8b36cbe2 Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Thu, 2 Feb 2012 23:55:33 -0800
Subject: Chrome FileSystem API Testing
Doing benchmark testing of the native HTML5 FileSystem API available in Chrome. Need to run testing of local XHR requests and also getting files from packaged app.
---
js/mediators/io-mediator.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index f778c849..8d0a671e 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -6,9 +6,9 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
////////////////////////////////////////////////////////////////////////
//
-var Montage = require("montage/core/core").Montage,
- FileIo = require("js/io/system/fileio").FileIo,
- ProjectIo = require("js/io/system/projectio").ProjectIo;
+var Montage = require("montage/core/core").Montage,
+ FileIo = require("js/io/system/fileio").FileIo,
+ ProjectIo = require("js/io/system/projectio").ProjectIo;
////////////////////////////////////////////////////////////////////////
//
exports.IoMediator = Montage.create(Object.prototype, {
--
cgit v1.2.3
From 1daf146c849a0a8dbd2b61b14218c9a39bdee3a7 Mon Sep 17 00:00:00 2001
From: Ananya Sen
Date: Fri, 3 Feb 2012 17:22:48 -0800
Subject: added editor tab save while switching code view tabs, integrated new
file dialog with io mediator to open the new file in a new tab
Signed-off-by: Ananya Sen
---
js/mediators/io-mediator.js | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index 8d0a671e..3d75771f 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -11,14 +11,17 @@ var Montage = require("montage/core/core").Montage,
ProjectIo = require("js/io/system/projectio").ProjectIo;
////////////////////////////////////////////////////////////////////////
//
-exports.IoMediator = Montage.create(Object.prototype, {
+exports.IoMediator = Montage.create(require("montage/ui/component").Component, {
////////////////////////////////////////////////////////////////////
//
fileNew: {
enumerable: false,
- value: function (file, template, callback) {
+ value: function (file, template, callback, callbackScope) {
//
-
+
+
+ var returnObj = null; //like {"type": "js", "name": "filename", "source": "test file content", "uri": "/fs/fsd/"}
+ callback.call(callbackScope, returnObj);
}
},
////////////////////////////////////////////////////////////////////
--
cgit v1.2.3
From 45cfffd9261ab1aa714554c584f0d0d8fe627c91 Mon Sep 17 00:00:00 2001
From: Ananya Sen
Date: Fri, 3 Feb 2012 18:04:26 -0800
Subject: allow to open html file in design view, integrated file open with io
mediator
Signed-off-by: Ananya Sen
---
js/mediators/io-mediator.js | 32 ++++++++++++++++++++++++++++----
1 file changed, 28 insertions(+), 4 deletions(-)
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index 3d75771f..76f78a7d 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -16,12 +16,12 @@ exports.IoMediator = Montage.create(require("montage/ui/component").Component, {
//
fileNew: {
enumerable: false,
- value: function (file, template, callback, callbackScope) {
+ value: function (file, template, callback) {
//
var returnObj = null; //like {"type": "js", "name": "filename", "source": "test file content", "uri": "/fs/fsd/"}
- callback.call(callbackScope, returnObj);
+ callback.operation.call(callback.thisScope, returnObj);
}
},
////////////////////////////////////////////////////////////////////
@@ -29,7 +29,23 @@ exports.IoMediator = Montage.create(require("montage/ui/component").Component, {
fileOpen: {
enumerable: false,
value: function (file, callback) {
- //
+ var response = "", fileContent="", filename="", fileType="js", returnObj=null;
+
+ response = this.application.ninja.coreIoApi.openFile({"uri":file.uri});
+ if((response.success === true) && ((response.status === 200) || (response.status === 304))){
+ fileContent = response.content;
+ }
+
+
+ //TODO : format html content to render in design view
+
+
+ filename = this.getFileNameFromPath(file.uri);
+ if(file.uri.indexOf('.') != -1){
+ fileType = file.uri.substr(file.uri.lastIndexOf('.') + 1);
+ }
+ returnObj = {"type": ""+fileType, "name": ""+filename, "source": fileContent, "uri": file.uri};
+ callback.operation.call(callback.thisScope, returnObj);
}
},
////////////////////////////////////////////////////////////////////
@@ -47,8 +63,16 @@ exports.IoMediator = Montage.create(require("montage/ui/component").Component, {
value: function (file, copy, callback) {
//
}
- }
+ },
////////////////////////////////////////////////////////////////////
+ ///// Return the last part of a path (e.g. filename)
+ getFileNameFromPath : {
+ value: function(path) {
+ path = path.replace(/[/\\]$/g,"");
+ path = path.replace(/\\/g,"/");
+ return path.substr(path.lastIndexOf('/') + 1);
+ }
+ }
////////////////////////////////////////////////////////////////////
});
////////////////////////////////////////////////////////////////////////
--
cgit v1.2.3
From 36b2e540f06cef3887e7d0fea60527fee51e2a40 Mon Sep 17 00:00:00 2001
From: Ananya Sen
Date: Wed, 8 Feb 2012 15:36:53 -0800
Subject: fixed undo/redo for each code view document, changed new file
integration with io mediator
Signed-off-by: Ananya Sen
---
js/mediators/io-mediator.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index 76f78a7d..fbabd780 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -20,8 +20,8 @@ exports.IoMediator = Montage.create(require("montage/ui/component").Component, {
//
- var returnObj = null; //like {"type": "js", "name": "filename", "source": "test file content", "uri": "/fs/fsd/"}
- callback.operation.call(callback.thisScope, returnObj);
+ var returnObj = null; //like {"uri": "/gfdg/gdf/dfg.js", "success": true,...}
+ callback(returnObj);
}
},
////////////////////////////////////////////////////////////////////
@@ -45,7 +45,7 @@ exports.IoMediator = Montage.create(require("montage/ui/component").Component, {
fileType = file.uri.substr(file.uri.lastIndexOf('.') + 1);
}
returnObj = {"type": ""+fileType, "name": ""+filename, "source": fileContent, "uri": file.uri};
- callback.operation.call(callback.thisScope, returnObj);
+ callback(returnObj);
}
},
////////////////////////////////////////////////////////////////////
--
cgit v1.2.3
From 04d375a02e44d1c11054ace16cd243ada8e6bd23 Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Thu, 9 Feb 2012 00:05:25 -0800
Subject: Fixing URI for templates, need UI to use correct data
---
js/mediators/io-mediator.js | 37 ++++++++++++++++++++++++++++++++++---
1 file changed, 34 insertions(+), 3 deletions(-)
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index fbabd780..b6d0e598 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -7,21 +7,52 @@ 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,
FileIo = require("js/io/system/fileio").FileIo,
ProjectIo = require("js/io/system/projectio").ProjectIo;
////////////////////////////////////////////////////////////////////////
//
-exports.IoMediator = Montage.create(require("montage/ui/component").Component, {
+exports.IoMediator = Montage.create(Component, {
+ ////////////////////////////////////////////////////////////////////
+ //
+ deserializedFromTemplate: {
+ enumerable: false,
+ value: function () {
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ //
+ fio: {
+ enumerable: false,
+ value: FileIo
+ },
////////////////////////////////////////////////////////////////////
//
fileNew: {
enumerable: false,
value: function (file, template, callback) {
//
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", template, false);
+ xhr.send();
+ if (xhr.readyState === 4) {
+ //
+ console.log(this.fio.newFile({uri: file, contents: xhr.response}));
+ } else {
+ //Error
+ }
+
+
+
+
+
+
-
- var returnObj = null; //like {"uri": "/gfdg/gdf/dfg.js", "success": true,...}
+ //callback('win');
+ /*
+var returnObj = null; //like {"uri": "/gfdg/gdf/dfg.js", "success": true,...}
callback(returnObj);
+*/
}
},
////////////////////////////////////////////////////////////////////
--
cgit v1.2.3
From 9140a5bb6e7ecc24e6b4e540308042e10165e604 Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Thu, 9 Feb 2012 11:07:10 -0800
Subject: New File
Adding new file functionality, awaiting UI to implement correct file path for templates to hook into mediator.
---
js/mediators/io-mediator.js | 40 +++++++++++++++++++++++++---------------
1 file changed, 25 insertions(+), 15 deletions(-)
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index b6d0e598..66fea8b3 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -14,10 +14,17 @@ var Montage = require("montage/core/core").Montage,
//
exports.IoMediator = Montage.create(Component, {
////////////////////////////////////////////////////////////////////
+ //
+ hasTemplate: {
+ enumerable: false,
+ value: false
+ },
+ ////////////////////////////////////////////////////////////////////
//
deserializedFromTemplate: {
enumerable: false,
value: function () {
+ //
}
},
////////////////////////////////////////////////////////////////////
@@ -32,27 +39,30 @@ exports.IoMediator = Montage.create(Component, {
enumerable: false,
value: function (file, template, callback) {
//
- var xhr = new XMLHttpRequest();
+ var xhr = new XMLHttpRequest(), result;
xhr.open("GET", template, false);
xhr.send();
if (xhr.readyState === 4) {
//
- console.log(this.fio.newFile({uri: file, contents: xhr.response}));
+ switch (this.fio.newFile({uri: file, contents: xhr.response})) {
+ case 201:
+ result = {status: 201, success: true, uri: file};
+ break;
+ case 204:
+ result = {status: 204, success: false, uri: file};
+ break;
+ case 400:
+ result = {status: 400, success: false, uri: file};
+ break;
+ default:
+ result = {status: 500, success: false, uri: file};
+ break;
+ }
} else {
- //Error
+ result = {status: 500, success: false, uri: file};
}
-
-
-
-
-
-
-
- //callback('win');
- /*
-var returnObj = null; //like {"uri": "/gfdg/gdf/dfg.js", "success": true,...}
- callback(returnObj);
-*/
+ //
+ if (callback) callback(result);
}
},
////////////////////////////////////////////////////////////////////
--
cgit v1.2.3
From 74efc1238f51e9c0ffdeffe2a349f66011ef9f17 Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Thu, 9 Feb 2012 15:02:16 -0800
Subject: File Open
Adding file open functionality.
---
js/mediators/io-mediator.js | 85 +++++++++++++++++++++++++++++----------------
1 file changed, 56 insertions(+), 29 deletions(-)
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index 66fea8b3..f2f2f642 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -32,18 +32,24 @@ exports.IoMediator = Montage.create(Component, {
fio: {
enumerable: false,
value: FileIo
+ },
+ ////////////////////////////////////////////////////////////////////
+ //
+ pio: {
+ enumerable: false,
+ value: ProjectIo
},
////////////////////////////////////////////////////////////////////
//
fileNew: {
enumerable: false,
value: function (file, template, callback) {
- //
+ //Loading template from template URL
var xhr = new XMLHttpRequest(), result;
xhr.open("GET", template, false);
xhr.send();
if (xhr.readyState === 4) {
- //
+ //Making call to create file, checking for return code
switch (this.fio.newFile({uri: file, contents: xhr.response})) {
case 201:
result = {status: 201, success: true, uri: file};
@@ -61,8 +67,11 @@ exports.IoMediator = Montage.create(Component, {
} else {
result = {status: 500, success: false, uri: file};
}
- //
+ //Sending result to callback if requested for handling
if (callback) callback(result);
+ //Codes
+ // 204: File exists | 400: File exists
+ // 201: File succesfully created | 500: Unknown (Probably cloud API not running)
}
},
////////////////////////////////////////////////////////////////////
@@ -70,23 +79,50 @@ exports.IoMediator = Montage.create(Component, {
fileOpen: {
enumerable: false,
value: function (file, callback) {
- var response = "", fileContent="", filename="", fileType="js", returnObj=null;
-
- response = this.application.ninja.coreIoApi.openFile({"uri":file.uri});
- if((response.success === true) && ((response.status === 200) || (response.status === 304))){
- fileContent = response.content;
- }
-
-
- //TODO : format html content to render in design view
-
-
- filename = this.getFileNameFromPath(file.uri);
- if(file.uri.indexOf('.') != -1){
- fileType = file.uri.substr(file.uri.lastIndexOf('.') + 1);
- }
- returnObj = {"type": ""+fileType, "name": ""+filename, "source": fileContent, "uri": file.uri};
- callback(returnObj);
+ //Reading file (Ninja doesn't really open a file, all in browser memory)
+ var read = this.fio.readFile({uri: file}), result;
+ //Checking for status
+ switch(read.status) {
+ case 204:
+ //Creating and formatting result object for callbak
+ result = read.file.details;
+ //TODO: Add handling for converting HTML to Ninja format
+ result.content = read.file.content;
+ result.status = read.status;
+ //
+ if (callback) callback(result);
+ break;
+ case 404:
+ //File does not exists
+ if (callback) callback({status: read.status});
+ break;
+ default:
+ //Unknown
+ if (callback) callback({status: 500});
+ break;
+ }
+ /*
+ ////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////
+ //Return Object Description
+ Object.status (Always presents for handling)
+ 204: File exists (Success)
+ 404: File does not exists (Failure)
+ 500: Unknown (Probably cloud API not running)
+
+ (Below only present if succesfull 204)
+
+ Object.content
+ Object.extension
+ Object.name
+ Object.uri
+ Object.creationDate
+ Object.modifiedDate
+ Object.readOnly
+ Object.size
+ ////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////
+ */
}
},
////////////////////////////////////////////////////////////////////
@@ -104,15 +140,6 @@ exports.IoMediator = Montage.create(Component, {
value: function (file, copy, callback) {
//
}
- },
- ////////////////////////////////////////////////////////////////////
- ///// Return the last part of a path (e.g. filename)
- getFileNameFromPath : {
- value: function(path) {
- path = path.replace(/[/\\]$/g,"");
- path = path.replace(/\\/g,"/");
- return path.substr(path.lastIndexOf('/') + 1);
- }
}
////////////////////////////////////////////////////////////////////
});
--
cgit v1.2.3
From e8f7453c2b70960c63f81b5ec81d8e642a609900 Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Thu, 9 Feb 2012 21:38:02 -0800
Subject: New/Open HTML document parsing
---
js/mediators/io-mediator.js | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index f2f2f642..630b0aa2 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -87,7 +87,13 @@ exports.IoMediator = Montage.create(Component, {
//Creating and formatting result object for callbak
result = read.file.details;
//TODO: Add handling for converting HTML to Ninja format
- result.content = read.file.content;
+ if (result.extension !== 'html' && result.extension !== 'htm') {
+ result.content = read.file.content;
+ } else {
+ //
+ result.content = this.parseHtmlToNinjaTemplate(read.file.content);
+ }
+
result.status = read.status;
//
if (callback) callback(result);
@@ -140,6 +146,20 @@ exports.IoMediator = Montage.create(Component, {
value: function (file, copy, callback) {
//
}
+ },
+ ////////////////////////////////////////////////////////////////////
+ //
+ parseHtmlToNinjaTemplate: {
+ enumerable: false,
+ value: function (html) {
+ var doc = window.document.implementation.createHTMLDocument(), template;
+ //
+ doc.getElementsByTagName('html')[0].innerHTML = html;
+ template = {head: doc.head, body: doc.body, document: doc};
+ doc = null;
+ //
+ return template;
+ }
}
////////////////////////////////////////////////////////////////////
});
--
cgit v1.2.3
From fbe830fabe497d01f4f2eaddb867161a8187c101 Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Thu, 9 Feb 2012 23:42:04 -0800
Subject: Adding download cloud app UI
---
js/mediators/io-mediator.js | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
(limited to 'js/mediators/io-mediator.js')
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index 630b0aa2..2f286e5e 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -86,16 +86,17 @@ exports.IoMediator = Montage.create(Component, {
case 204:
//Creating and formatting result object for callbak
result = read.file.details;
- //TODO: Add handling for converting HTML to Ninja format
+ //Checking for type of content to returns
if (result.extension !== 'html' && result.extension !== 'htm') {
+ //Simple string
result.content = read.file.content;
} else {
- //
+ //Object to be used by Ninja Template
result.content = this.parseHtmlToNinjaTemplate(read.file.content);
}
-
+ //Status of call
result.status = read.status;
- //
+ //Calling back with result
if (callback) callback(result);
break;
case 404:
@@ -143,7 +144,7 @@ exports.IoMediator = Montage.create(Component, {
//
fileSaveAs: {
enumerable: false,
- value: function (file, copy, callback) {
+ value: function (copyTo, copyFrom, callback) {
//
}
},
@@ -152,13 +153,12 @@ exports.IoMediator = Montage.create(Component, {
parseHtmlToNinjaTemplate: {
enumerable: false,
value: function (html) {
+ //Creating temp object to mimic HTML
var doc = window.document.implementation.createHTMLDocument(), template;
- //
+ //Setting content to temp
doc.getElementsByTagName('html')[0].innerHTML = html;
- template = {head: doc.head, body: doc.body, document: doc};
- doc = null;
- //
- return template;
+ //Creating return object
+ return {head: doc.head.innerHTML, body: doc.body.innerHTML, document: doc};
}
}
////////////////////////////////////////////////////////////////////
--
cgit v1.2.3
From b1fc4f84d92efeaa33ec239b662235c9e8218d0c Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Sun, 12 Feb 2012 16:50:33 -0800
Subject: File Save (HTML only)
Added the ability to save an HTML file from design view, need to add CSS detection and saving (of styles in