diff options
Diffstat (limited to 'js/document')
-rwxr-xr-x | js/document/document-text.js | 43 | ||||
-rwxr-xr-x | js/document/models/text.js | 4 | ||||
-rwxr-xr-x | js/document/views/code.js | 193 |
3 files changed, 231 insertions, 9 deletions
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 | |||
7 | //////////////////////////////////////////////////////////////////////// | 7 | //////////////////////////////////////////////////////////////////////// |
8 | // | 8 | // |
9 | var Montage = require("montage/core/core").Montage, | 9 | var Montage = require("montage/core/core").Montage, |
10 | Component = require("montage/ui/component").Component; | 10 | Component = require("montage/ui/component").Component, |
11 | TextDocumentModel = require("js/document/models/text").TextDocumentModel, | ||
12 | CodeDocumentView = require("js/document/views/code").CodeDocumentView; | ||
11 | //////////////////////////////////////////////////////////////////////// | 13 | //////////////////////////////////////////////////////////////////////// |
12 | // | 14 | // |
13 | exports.TextDocument = Montage.create(Component, { | 15 | exports.TextDocument = Montage.create(Component, { |
@@ -16,9 +18,44 @@ exports.TextDocument = Montage.create(Component, { | |||
16 | hasTemplate: { | 18 | hasTemplate: { |
17 | enumerable: false, | 19 | enumerable: false, |
18 | value: false | 20 | value: false |
19 | } | 21 | }, |
20 | //////////////////////////////////////////////////////////////////// | ||
21 | //////////////////////////////////////////////////////////////////// | 22 | //////////////////////////////////////////////////////////////////// |
23 | // | ||
24 | model: { | ||
25 | value: null | ||
26 | }, | ||
27 | //////////////////////////////////////////////////////////////////// | ||
28 | // | ||
29 | |||
30 | init:{ | ||
31 | enumerable: false, | ||
32 | value : function(file, context, callback, view){ | ||
33 | var codeDocumentView = CodeDocumentView.create(), container = null; | ||
34 | codeDocumentView.initialize(); | ||
35 | |||
36 | //Creating instance of Text Document Model | ||
37 | this.model = Montage.create(TextDocumentModel,{ | ||
38 | file: {value: file}, | ||
39 | parentContainer: {value: document.getElementById("codeViewContainer")}, | ||
40 | views: {value: {'code': codeDocumentView, 'design': null}} | ||
41 | }); | ||
42 | |||
43 | codeDocumentView.textArea.value = file.content; | ||
44 | codeDocumentView.initializeTextView(file, this); | ||
45 | |||
46 | if (view === 'code') { | ||
47 | //TODO: Remove reference and use as part of model | ||
48 | this.currentView = 'code'; | ||
49 | //Setting current view object to design | ||
50 | this.model.currentView = this.model.views.code; | ||
51 | } | ||
52 | |||
53 | |||
54 | callback.call(context, this); | ||
55 | } | ||
56 | } | ||
57 | //////////////////////////////////////////////////////////////////// | ||
58 | //////////////////////////////////////////////////////////////////// | ||
22 | }); | 59 | }); |
23 | //////////////////////////////////////////////////////////////////////// | 60 | //////////////////////////////////////////////////////////////////////// |
24 | //////////////////////////////////////////////////////////////////////// \ No newline at end of file | 61 | //////////////////////////////////////////////////////////////////////// \ 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 | |||
7 | //////////////////////////////////////////////////////////////////////// | 7 | //////////////////////////////////////////////////////////////////////// |
8 | // | 8 | // |
9 | var Montage = require("montage/core/core").Montage, | 9 | var Montage = require("montage/core/core").Montage, |
10 | BaseDocumentModel = require("js/document/models/text").BaseDocumentModel; | 10 | BaseDocumentModel = require("js/document/models/base").BaseDocumentModel; |
11 | //////////////////////////////////////////////////////////////////////// | 11 | //////////////////////////////////////////////////////////////////////// |
12 | // | 12 | // |
13 | exports.TextDocumentModel = Montage.create(BaseDocumentModel, { | 13 | exports.TextDocumentModel = Montage.create(BaseDocumentModel, { |
@@ -17,8 +17,6 @@ exports.TextDocumentModel = Montage.create(BaseDocumentModel, { | |||
17 | enumerable: false, | 17 | enumerable: false, |
18 | value: false | 18 | value: false |
19 | } | 19 | } |
20 | //////////////////////////////////////////////////////////////////// | ||
21 | //////////////////////////////////////////////////////////////////// | ||
22 | }); | 20 | }); |
23 | //////////////////////////////////////////////////////////////////////// | 21 | //////////////////////////////////////////////////////////////////////// |
24 | //////////////////////////////////////////////////////////////////////// \ No newline at end of file | 22 | //////////////////////////////////////////////////////////////////////// \ 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, | |||
11 | BaseDocumentView = require("js/document/views/base").BaseDocumentView; | 11 | BaseDocumentView = require("js/document/views/base").BaseDocumentView; |
12 | //////////////////////////////////////////////////////////////////////// | 12 | //////////////////////////////////////////////////////////////////////// |
13 | // | 13 | // |
14 | exports.CodeDocumentView = Montage.create(BaseDocumentView, { | 14 | var CodeDocumentView = exports.CodeDocumentView = Montage.create(BaseDocumentView, { |
15 | //////////////////////////////////////////////////////////////////// | 15 | //////////////////////////////////////////////////////////////////// |
16 | // | 16 | // |
17 | hasTemplate: { | 17 | hasTemplate: { |
18 | enumerable: false, | 18 | enumerable: false, |
19 | value: false | 19 | value: false |
20 | }, | ||
21 | |||
22 | //////////////////////////////////////////////////////////////////// | ||
23 | // | ||
24 | _editor: { | ||
25 | value: null | ||
26 | }, | ||
27 | //////////////////////////////////////////////////////////////////// | ||
28 | // | ||
29 | editor: { | ||
30 | get: function() {return this._editor;}, | ||
31 | set: function(value) {this._editor= value;} | ||
32 | }, | ||
33 | //////////////////////////////////////////////////////////////////// | ||
34 | // | ||
35 | _textArea: { | ||
36 | value: null | ||
37 | }, | ||
38 | //////////////////////////////////////////////////////////////////// | ||
39 | // | ||
40 | textArea: { | ||
41 | get: function() {return this._textArea;}, | ||
42 | set: function(value) {this._textArea= value;} | ||
43 | }, | ||
44 | |||
45 | //////////////////////////////////////////////////////////////////// | ||
46 | //remove _extParentContainer after moving to bucket structure for documents | ||
47 | _textParentContainer: { | ||
48 | value: null | ||
49 | }, | ||
50 | //////////////////////////////////////////////////////////////////// | ||
51 | // | ||
52 | textParentContainer: { | ||
53 | get: function() {return this._textParentContainer;}, | ||
54 | set: function(value) {this._textParentContainer= value;} | ||
55 | }, | ||
56 | //////////////////////////////////////////////////////////////////// | ||
57 | // | ||
58 | _textViewContainer: { | ||
59 | value: null | ||
60 | }, | ||
61 | //////////////////////////////////////////////////////////////////// | ||
62 | // | ||
63 | textViewContainer: { | ||
64 | get: function() {return this._textViewContainer;}, | ||
65 | set: function(value) {this._textViewContainer= value;} | ||
66 | }, | ||
67 | //////////////////////////////////////////////////////////////////// | ||
68 | // | ||
69 | |||
70 | /** | ||
71 | * Public method | ||
72 | */ | ||
73 | initialize:{ | ||
74 | value: function(){ | ||
75 | //populate _textParentContainer | ||
76 | this.textParentContainer = document.getElementById("codeViewContainer"); | ||
77 | |||
78 | //create contianer | ||
79 | this.textViewContainer = document.createElement("div"); | ||
80 | //this.textViewContainer.id = "codemirror_" + uuid; | ||
81 | this.textViewContainer.style.display = "block"; | ||
82 | this.textParentContainer.appendChild(this.textViewContainer); | ||
83 | |||
84 | //create text area | ||
85 | this.textArea = this.createTextAreaElement(); | ||
86 | } | ||
87 | }, | ||
88 | |||
89 | /** | ||
90 | * Public method | ||
91 | * Creates a textarea element which will contain the content of the opened text document. | ||
92 | */ | ||
93 | createTextAreaElement: { | ||
94 | value: function() { | ||
95 | var textArea = document.createElement("textarea"); | ||
96 | // textArea.id = "code"; | ||
97 | // textArea.name = "code"; | ||
98 | this.textViewContainer.appendChild(textArea); | ||
99 | |||
100 | return textArea; | ||
101 | } | ||
102 | }, | ||
103 | //////////////////////////////////////////////////////////////////// | ||
104 | // | ||
105 | /** | ||
106 | * Public method | ||
107 | * Creates a new instance of a code editor | ||
108 | */ | ||
109 | initializeTextView: { | ||
110 | value: function(file, textDocument) { | ||
111 | var type; | ||
112 | |||
113 | if(this.activeDocument) { | ||
114 | //need to hide only if another document was open before | ||
115 | // this.application.ninja.documentController._hideCurrentDocument(); | ||
116 | // this.hideOtherDocuments(doc.uuid); | ||
117 | } | ||
118 | |||
119 | switch(file.extension) { | ||
120 | case "css" : | ||
121 | type = "css"; | ||
122 | break; | ||
123 | case "js" : | ||
124 | type = "javascript"; | ||
125 | break; | ||
126 | case "html" : | ||
127 | type = "htmlmixed"; | ||
128 | break; | ||
129 | case "json" : | ||
130 | type = "javascript"; | ||
131 | break; | ||
132 | case "php" : | ||
133 | type = "php"; | ||
134 | break; | ||
135 | case "pl" : | ||
136 | type = "perl"; | ||
137 | break; | ||
138 | case "py" : | ||
139 | type = "python"; | ||
140 | break; | ||
141 | case "rb" : | ||
142 | type = "ruby"; | ||
143 | break; | ||
144 | case "xml" : | ||
145 | type = "xml"; | ||
146 | break; | ||
147 | } | ||
148 | this.textViewContainer.style.display="block"; | ||
149 | |||
150 | this.editor = this.application.ninja.codeEditorController.createEditor(this, type, file.extension, textDocument); | ||
151 | this.editor.hline = this.editor.setLineClass(0, "activeline"); | ||
152 | |||