aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rwxr-xr-xjs/components/layout/document-bar.reel/document-bar.js2
-rw-r--r--js/controllers/code-editor-controller.js79
-rwxr-xr-xjs/ninja.reel/ninja.html6
-rwxr-xr-xjs/stage/stage-view.reel/stage-view.css24
-rwxr-xr-xjs/stage/stage-view.reel/stage-view.js156
5 files changed, 122 insertions, 145 deletions
diff --git a/js/components/layout/document-bar.reel/document-bar.js b/js/components/layout/document-bar.reel/document-bar.js
index 4dc39fd6..27402dff 100755
--- a/js/components/layout/document-bar.reel/document-bar.js
+++ b/js/components/layout/document-bar.reel/document-bar.js
@@ -100,7 +100,7 @@ exports.DocumentBar = Montage.create(Component, {
100 if(event._event.target.id === this.currentView) return; 100 if(event._event.target.id === this.currentView) return;
101 101
102 this.currentView = event._event.target.id; 102 this.currentView = event._event.target.id;
103 this.application.ninja.documentController.stage.stageView.switchViews(event._event.target.id);//switch between design view 103 this.application.ninja.documentController.stage.stageView.switchDesignDocViews(event._event.target.id);//switch between design view
104 } 104 }
105 }, 105 },
106 106
diff --git a/js/controllers/code-editor-controller.js b/js/controllers/code-editor-controller.js
new file mode 100644
index 00000000..23bd9279
--- /dev/null
+++ b/js/controllers/code-editor-controller.js
@@ -0,0 +1,79 @@
1/* <copyright>
2This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
3No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
5</copyright> */
6
7////////////////////////////////////////////////////////////////////////
8//
9var Montage = require("montage/core/core").Montage,
10 Component = require("montage/ui/component").Component;
11
12var CodeEditorController = exports.CodeEditorController = Montage.create(Component, {
13 hasTemplate: {
14 value: false
15 },
16
17 _codeEditor : {
18 value:null
19 },
20
21 codeEditor:{
22 get: function(){return this._codeEditor;},
23 set: function(value){this._codeEditor = value;}
24 },
25
26 deserializedFromTemplate: {
27 value: function() {
28 //TODO:add logic to check some configuration file to load the right code editor
29 this.codeEditor = CodeMirror;
30 }
31 },
32
33 createEditor : {
34 value:function(doc, type){
35 var self = this;
36 var editor = self.codeEditor.fromTextArea(doc.textArea, {
37 lineNumbers: true,
38 matchBrackets:true,
39 mode: type,
40 onChange: function(){
41 var historySize = doc.editor.historySize();
42 if(historySize.undo>0){
43 doc.needsSave = true;
44 }else if(historySize.undo===0 && historySize.redo>0){
45 doc.needsSave = false;
46 }
47 },
48 onCursorActivity: function() {
49 doc.editor.matchHighlight("CodeMirror-matchhighlight");
50 doc.editor.setLineClass(doc.editor.hline, null, null);
51 doc.editor.hline = doc.editor.setLineClass(doc.editor.getCursor().line, null, "activeline");
52 },
53 //extraKeys: {"Ctrl-Space": function(cm) {CodeMirror.simpleHint(cm, CodeMirror.javascriptHint);}}
54 onKeyEvent: function(cm, keyEvent) {
55 if((keyEvent.type === "keyup")//need seperate keycode set per mode
56 && ((keyEvent.keyCode > 47 && keyEvent.keyCode < 57)//numbers
57 || (keyEvent.keyCode > 64 && keyEvent.keyCode <91)//letters
58 || (keyEvent.keyCode === 190)//period
59 || (keyEvent.keyCode === 189)//underscore, dash
60 )
61 && !( (keyEvent.keyCode === 219)//open bracket [
62 || (keyEvent.keyCode === 221)//close bracket ]
63 || (keyEvent.shiftKey && keyEvent.keyCode === 219)//open bracket {
64 || (keyEvent.shiftKey && keyEvent.keyCode === 221)//close bracket }
65 || (keyEvent.shiftKey && keyEvent.keyCode === 57)//open bracket (
66 || (keyEvent.shiftKey && keyEvent.keyCode === 48)//close bracket )
67 )
68 ){
69
70 self.codeEditor.simpleHint(cm, self.codeEditor.javascriptHint);
71 }
72 }
73 });
74
75 return editor;
76 }
77 }
78
79}); \ No newline at end of file
diff --git a/js/ninja.reel/ninja.html b/js/ninja.reel/ninja.html
index ead7f576..5862cf61 100755
--- a/js/ninja.reel/ninja.html
+++ b/js/ninja.reel/ninja.html
@@ -348,6 +348,11 @@
348 } 348 }
349 }, 349 },
350 350
351 "codeEditorController": {
352 "module": "js/controllers/code-editor-controller",
353 "name": "CodeEditorController"
354 },
355
351 "owner": { 356 "owner": {
352 "module": "js/ninja.reel", 357 "module": "js/ninja.reel",
353 "name": "Ninja", 358 "name": "Ninja",
@@ -377,6 +382,7 @@
377 "ioMediator": {"@": "ioMediator"}, 382 "ioMediator": {"@": "ioMediator"},
378 "timeline": {"@": "timeline"}, 383 "timeline": {"@": "timeline"},
379 "mainMenuController": {"@": "mainMenuController"}, 384 "mainMenuController": {"@": "mainMenuController"},
385 "codeEditorController": {"@": "codeEditorController"},
380 "rightPanelContainer": {"#": "rightPanelContainer" }, 386 "rightPanelContainer": {"#": "rightPanelContainer" },
381 "panelSplitter": {"@": "splitter3"}, 387 "panelSplitter": {"@": "splitter3"},
382 "timelineSplitter": {"@": "splitter4"} 388 "timelineSplitter": {"@": "splitter4"}
diff --git a/js/stage/stage-view.reel/stage-view.css b/js/stage/stage-view.reel/stage-view.css
index ce7072c7..372af144 100755
--- a/js/stage/stage-view.reel/stage-view.css
+++ b/js/stage/stage-view.reel/stage-view.css
@@ -23,15 +23,17 @@
23} 23}
24*/ 24*/
25 25
26.CodeMirror { 26/*.CodeMirror {*/
27 width: 100%; 27 /*width: 100%;*/
28 height: 100%; 28 /*height: 100%;*/
29 background: white; 29 /*background: white;*/
30} 30/*}*/
31
32/*.CodeMirror .CodeMirror-scroll {*/
33 /*height: 100%;*/
34 /*overflow: scroll;*/
35 /*overflow-x: auto;*/
36 /*overflow-y: auto;*/
37/*}*/
38
31 39
32.CodeMirror .CodeMirror-scroll {
33 height: 100%;
34 overflow: scroll;
35 overflow-x: auto;
36 overflow-y: auto;
37}
diff --git a/js/stage/stage-view.reel/stage-view.js b/js/stage/stage-view.reel/stage-view.js
index 917cbeb5..bfbee2b6 100755
--- a/js/stage/stage-view.reel/stage-view.js
+++ b/js/stage/stage-view.reel/stage-view.js
@@ -52,12 +52,11 @@ exports.StageView = Montage.create(Component, {
52 }, 52 },
53 53
54 /** 54 /**
55 * Creates a text area which will contain the content of the opened text document. 55 * Public method
56 * Creates a textarea element which will contain the content of the opened text document.
56 */ 57 */
57 createTextAreaElement: { 58 createTextAreaElement: {
58 value: function(uuid) { 59 value: function(uuid) {
59
60
61 var codeMirrorDiv = document.createElement("div"); 60 var codeMirrorDiv = document.createElement("div");
62 codeMirrorDiv.id = "codeMirror_" + uuid; 61 codeMirrorDiv.id = "codeMirror_" + uuid;
63 codeMirrorDiv.style.display = "block"; 62 codeMirrorDiv.style.display = "block";
@@ -66,19 +65,22 @@ exports.StageView = Montage.create(Component, {
66 var textArea = document.createElement("textarea"); 65 var textArea = document.createElement("textarea");
67 textArea.id = "code"; 66 textArea.id = "code";
68 textArea.name = "code"; 67 textArea.name = "code";
69
70 codeMirrorDiv.appendChild(textArea); 68 codeMirrorDiv.appendChild(textArea);
71 69
72 return textArea; 70 return textArea;
73 } 71 }
74 }, 72 },
75 73
76 // Temporary function to create a Codemirror text view 74 /**
75 * Public method
76 * Creates a new instance of a code editor
77 */
77 createTextView: { 78 createTextView: {
78 value: function(doc) { 79 value: function(doc) {
80 var type;
79 this.application.ninja.documentController._hideCurrentDocument(); 81 this.application.ninja.documentController._hideCurrentDocument();
80 this.hideOtherDocuments(doc.uuid); 82 this.hideOtherDocuments(doc.uuid);
81 var type; 83
82 switch(doc.documentType) { 84 switch(doc.documentType) {
83 case "css" : 85 case "css" :
84 type = "css"; 86 type = "css";
@@ -87,66 +89,25 @@ exports.StageView = Montage.create(Component, {
87 type = "javascript"; 89 type = "javascript";
88 break; 90 break;
89 } 91 }
90
91 //fix hack
92 document.getElementById("codeMirror_"+doc.uuid).style.display="block"; 92 document.getElementById("codeMirror_"+doc.uuid).style.display="block";
93 93
94 var documentController = this.application.ninja.documentController; 94 doc.editor = this.application.ninja.codeEditorController.createEditor(doc, type);
95 doc.editor = CodeMirror.fromTextArea(doc.textArea, {
96 lineNumbers: true,
97 lineWrapping: true,
98 matchBrackets:true,
99 mode: type,
100 onChange: function(){
101 var historySize = doc.editor.historySize();
102