aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcss/ninja.css2
-rw-r--r--js/clipboard/external-apps-clipboard-agent.js185
-rw-r--r--js/clipboard/internal-ops/elements-clipboard-agent.js24
-rwxr-xr-xjs/components/layout/document-bar.reel/document-bar.css13
-rwxr-xr-xjs/components/layout/document-bar.reel/document-bar.html23
-rwxr-xr-xjs/components/layout/document-bar.reel/document-bar.js8
-rwxr-xr-xjs/components/layout/stage-mode.reel/stage-mode.css49
-rwxr-xr-xjs/components/layout/stage-mode.reel/stage-mode.html55
-rwxr-xr-xjs/components/layout/stage-mode.reel/stage-mode.js77
-rwxr-xr-xjs/components/ui/icon-list-basic/iconsList.reel/iconsList.css4
-rw-r--r--js/controllers/clipboard-controller.js23
-rwxr-xr-xjs/data/menu-data.js582
-rwxr-xr-xjs/io/ui/cloudpopup.reel/cloudpopup.js14
-rwxr-xr-xjs/mediators/element-mediator.js6
-rwxr-xr-xjs/models/app-model.js156
-rwxr-xr-xjs/ninja.reel/ninja.html19
-rwxr-xr-xjs/ninja.reel/ninja.js5
-rw-r--r--js/ui/menu/menu-controller.js636
-rwxr-xr-xjs/ui/menu/menu-entry.reel/menu-entry.css (renamed from js/components/menu/menu-entry.reel/menu-entry.css)55
-rwxr-xr-xjs/ui/menu/menu-entry.reel/menu-entry.html (renamed from js/components/menu/menu-entry.reel/menu-entry.html)37
-rwxr-xr-xjs/ui/menu/menu-entry.reel/menu-entry.js (renamed from js/components/menu/menu-entry.reel/menu-entry.js)90
-rwxr-xr-xjs/ui/menu/menu-item.reel/menu-item.css (renamed from js/components/menu/menu-item.reel/menu-item.css)101
-rwxr-xr-xjs/ui/menu/menu-item.reel/menu-item.html (renamed from js/components/menu/menu-item.reel/menu-item.html)67
-rwxr-xr-xjs/ui/menu/menu-item.reel/menu-item.js (renamed from js/components/menu/menu-item.reel/menu-item.js)150
-rwxr-xr-xjs/ui/menu/menu.reel/menu.css (renamed from js/components/menu/menu.reel/menu.css)4
-rwxr-xr-xjs/ui/menu/menu.reel/menu.html (renamed from js/components/menu/menu.reel/menu.html)21
-rwxr-xr-xjs/ui/menu/menu.reel/menu.js (renamed from js/components/menu/menu.reel/menu.js)78
-rw-r--r--manifest.json2
-rwxr-xr-xscss/imports/scss/_MainWindow.scss2
29 files changed, 1148 insertions, 1340 deletions
<
diff --git a/css/ninja.css b/css/ninja.css
index 288156b6..bc82f50d 100755
--- a/css/ninja.css
+++ b/css/ninja.css
@@ -98,7 +98,7 @@ body { position: absolute; margin: 0px; width: 100%; height: 100%; background-co
98 98
99#appWorkspace { display: -webkit-box; -webkit-box-orient: horizontal; -webkit-box-pack: center; -webkit-box-align: center; -webkit-box-sizing: stretch; position: relative; padding: 2px 0px; border: 1px solid #333; overflow: hidden; } 99#appWorkspace { display: -webkit-box; -webkit-box-orient: horizontal; -webkit-box-pack: center; -webkit-box-align: center; -webkit-box-sizing: stretch; position: relative; padding: 2px 0px; border: 1px solid #333; overflow: hidden; }
100 100
101#topMenu { background-color: #474747; position: absolute; height: 28px; width: 100%; top: 0px; left: 0px; z-index: 6995; } 101#topMenu { background-color: #474747; position: absolute; height: 26px; width: 100%; top: 0px; left: 0px; z-index: 6995; }
102 102
103#topPanelContainer, #leftPanelContainer, #rightPanelContainer, .timelinePanel { background-color: #282828; } 103#topPanelContainer, #leftPanelContainer, #rightPanelContainer, .timelinePanel { background-color: #282828; }
104 104
diff --git a/js/clipboard/external-apps-clipboard-agent.js b/js/clipboard/external-apps-clipboard-agent.js
index 6b9d8090..65410543 100644
--- a/js/clipboard/external-apps-clipboard-agent.js
+++ b/js/clipboard/external-apps-clipboard-agent.js
@@ -38,40 +38,52 @@ var Montage = require("montage/core/core").Montage,
38 38
39var ExternalAppsClipboardAgent = exports.ExternalAppsClipboardAgent = Montage.create(Component, { 39var ExternalAppsClipboardAgent = exports.ExternalAppsClipboardAgent = Montage.create(Component, {
40 40
41 //count how many times pasted
42 //used to move multiple pastes of same copy
43 pasteCounter:{
44 value: 0
45 },
46
41 paste:{ 47 paste:{
42 value: function(clipboardEvent){ 48 value: function(clipboardEvent){
43 var clipboardData = clipboardEvent.clipboardData, 49 var clipboardData = clipboardEvent.clipboardData,
44 htmlData = clipboardData.getData("text/html"), 50 htmlData = clipboardData.getData("text/html"),
45 textData = clipboardData.getData("text/plain"), 51 textData = clipboardData.getData("text/plain"),
46 i=0, 52 i=0,
47 imageMime, imageData, imageElement; 53 imageMime, imageData, imageElement, isImage = false, imageItem;
48 54
49 //handle image blobs 55 if(clipboardData.items && (clipboardData.items.length > 0)){//handle image blobs
50 if(clipboardData.items && (clipboardData.items.length > 0)){
51 for(i=0; i < clipboardData.items.length; i++ ){ 56 for(i=0; i < clipboardData.items.length; i++ ){
52 if((clipboardData.items[i].kind === "file") && (clipboardData.items[i].type.indexOf("image") === 0)){//example type -> "image/png" 57 if((clipboardData.items[i].kind === "file") && (clipboardData.items[i].type.indexOf("image") === 0)){//example type -> "image/png"
53 imageMime = clipboardData.items[i].type; 58 isImage = true;
54 imageData = clipboardData.items[i].getAsFile(); 59 if(clipboardData.items[i].type === "image/png"){
55 try{ 60 imageItem = clipboardData.items[i];//grab the png image from clipboard
56 imageElement = this.pasteImageBinary(imageData); 61 }
57 }catch(e){ 62 else if(i===0){
58 console.log(""+e.stack); 63 imageItem = clipboardData.items[i];
59 } 64 }
60 this.application.ninja.selectionController.selectElements(imageElement);
61 this.application.ninja.currentDocument.model.needsSave = true;
62
63 } 65 }
64 } 66 }
65 } 67 }
66 68
67 try{ 69 if(isImage && imageItem){
68 if(!!htmlData || !!textData){ 70 imageMime = imageItem.type;
69 this.pasteHtml(htmlData, textData); 71 imageData = imageItem.getAsFile();
72 try{
73 imageElement = this.pasteImageBinary(imageData);
74 }catch(e){
75 console.log(""+e.stack);
70 } 76 }
71 }catch(e){ 77 this.application.ninja.currentDocument.model.needsSave = true;
72 console.log(""+e.stack);
73 } 78 }
74 79
80 if(!isImage && (!!htmlData || !!textData)){
81 try{
82 this.doPasteHtml(htmlData, textData);
83 }catch(e){
84 console.log(""+e.stack);
85 }
86 }
75 } 87 }
76 }, 88 },
77 89
@@ -108,16 +120,16 @@ var ExternalAppsClipboardAgent = exports.ExternalAppsClipboardAgent = Montage.cr
108 //Adding element once it is loaded 120 //Adding element once it is loaded
109 element.onload = function () { 121 element.onload = function () {
110 element.onload = null; 122 element.onload = null;
111 self.application.ninja.elementMediator.addElements(element, rules, true); 123 self.application.ninja.elementMediator.addElements(element, rules, true/*notify*/, false /*callAddDelegate*/);
112 }; 124 };
113 //Setting rules of element 125 //Setting rules of element
114 rules = { 126 rules = {
115 'position': 'absolute', 127 'position': 'absolute',
116 'top' : '100px', 128 'top' : '0px',
117 'left' : '100px' 129 'left' : '0px'
118 }; 130 };
119 // 131 //
120 self.application.ninja.elementMediator.addElements(element, rules, false); 132 self.application.ninja.elementMediator.addElements(element, rules, false/*notify*/, false /*callAddDelegate*/);
121 } else { 133 } else {
122 //HANDLE ERROR ON SAVING FILE TO BE ADDED AS ELEMENT 134 //HANDLE ERROR ON SAVING FILE TO BE ADDED AS ELEMENT
123 } 135 }
@@ -126,119 +138,60 @@ var ExternalAppsClipboardAgent = exports.ExternalAppsClipboardAgent = Montage.cr
126 } 138 }
127 }, 139 },
128 140
129 //paste from external applicaitons 141 doPasteHtml:{
130 pasteHtml:{
131 value: function(htmlData, textData){ 142 value: function(htmlData, textData){
132 var i=0, j=0, 143 var divWrapper = null, data = null, theclass, height, width;
133 pasteDataObject=null,
134 pastedElements = [],
135 node = null, nodeList = null,
136 styles = null,
137 divWrapper = null,
138 spanWrapper = null,
139 metaEl = null,
140 self = this;
141 144
142 if(htmlData){ 145 htmlData = this.sanitize(htmlData);
146 textData = this.sanitize(textData);
143 147
144 //cleanse HTML 148 data = htmlData ? htmlData : textData;
145
146 htmlData.replace(/[<script]/g," ");
147 149
150 if (data && data.length) {
151 //deselect current selections
148 this.application.ninja.selectedElements.length = 0; 152 this.application.ninja.selectedElements.length = 0;
149 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": true} ); 153 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": true} );
150 154
151 try{ 155 divWrapper = document.application.njUtils.make("div", null, this.application.ninja.currentDocument);
152 nodeList = ClipboardUtil.deserializeHtmlString(htmlData);//this removes html and body tags 156 this.application.ninja.elementMediator.addElements(divWrapper, {"height": "68px",
153 } 157 "left": "0px",
154 catch(e){ 158 "position": "absolute",
155 console.log(""+e.stack); 159 "top": "0px",
156 } 160 "width": "161px"}, false);
157
158 for(i=0; i < nodeList.length; i++){
159 if(nodeList[i].tagName === "META") {
160 nodeList[i] = null;
161 }
162 else if (nodeList[i].tagName === "CANVAS"){
163 //can't paste external canvas for lack of all metadata