aboutsummaryrefslogtreecommitdiff
path: root/js/code-editor/ui/code-editor-view-options.reel/code-editor-view-options.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/code-editor/ui/code-editor-view-options.reel/code-editor-view-options.js')
-rw-r--r--js/code-editor/ui/code-editor-view-options.reel/code-editor-view-options.js106
1 files changed, 92 insertions, 14 deletions
diff --git a/js/code-editor/ui/code-editor-view-options.reel/code-editor-view-options.js b/js/code-editor/ui/code-editor-view-options.reel/code-editor-view-options.js
index a27d4450..dabce6e0 100644
--- a/js/code-editor/ui/code-editor-view-options.reel/code-editor-view-options.js
+++ b/js/code-editor/ui/code-editor-view-options.reel/code-editor-view-options.js
@@ -9,15 +9,80 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
9var Montage = require("montage/core/core").Montage, 9var Montage = require("montage/core/core").Montage,
10 Component = require("montage/ui/component").Component; 10 Component = require("montage/ui/component").Component;
11 11
12var CodeEditorViewOptions = exports.CodeEditorViewOptions = Montage.create(Component, { 12exports.CodeEditorViewOptions = Montage.create(Component, {
13
14 _currentDocument: {
15 value : null
16 },
17
18 currentDocument : {
19 get : function() {
20 return this._currentDocument;
21 },
22 set : function(value) {
23 if (value === this._currentDocument) {
24 return;
25 }
26
27 this._currentDocument = value;
28
29 if(!value || this._currentDocument.currentView === "design") {
30 this.visible = false;
31 } else {
32 this.visible = true;
33 this.autocomplete = !this.codeCompletionSupport[this._currentDocument.model.file.extension];
34 }
35
36 }
37 },
38
39 _visible: {
40 value: false
41 },
42
43 visible: {
44 get: function() {
45 return this._visible;
46 },
47 set: function(value) {
48 if(this._visible !== value) {
49 this._visible = value;
50 this.needsDraw = true;
51 }
52 }
53 },
54
55 _autocomplete: {
56 value: false
57 },
58
59 autocomplete: {
60 get: function() {
61 return this._autocomplete;
62 },
63 set: function(value) {
64 if(this._autocomplete !== value) {
65 this._autocomplete = value;
66 this.needsDraw = true;
67 }
68 }
69 },
70
71 codeCompletionSupport : {
72 value: {"js": true}
73 },
74
75 codeCompleteCheck: {
76 value: null
77 },
13 78
14 prepareForDraw: { 79 prepareForDraw: {
15 value: function() { 80 value: function() {
16 Object.defineBinding(this.codeCompleteCheck , "checked", { 81 //this.format.addEventListener("click", this.handleFormat.bind(this), false);
17 boundObject: this.application.ninja.codeEditorController, 82 this.comment.addEventListener("click", this.handleComment.bind(this), false);
18 boundObjectPropertyPath: "automaticCodeComplete", 83 this.uncomment.addEventListener("click", this.handleUncomment.bind(this), false);
19 oneway : false 84 this.themeSelect.addEventListener("change", this.handleThemeSelection.bind(this), false);
20 }); 85 this.shortKeys.addEventListener("click", this.handleShortKeys.bind(this), false);
21 86
22 Object.defineBinding(this.zoomHottext , "value", { 87 Object.defineBinding(this.zoomHottext , "value", {
23 boundObject: this.application.ninja.codeEditorController, 88 boundObject: this.application.ninja.codeEditorController,
@@ -28,22 +93,35 @@ var CodeEditorViewOptions = exports.CodeEditorViewOptions = Montage.create(Compo
28 } 93 }
29 }, 94 },
30 95
31 didDraw: { 96 draw: {
32 enumerable: false,
33 value: function() { 97 value: function() {
34 //this.format.addEventListener("click", this.handleFormat.bind(this), false); 98 if(this.visible) {
35 this.comment.addEventListener("click", this.handleComment.bind(this), false); 99 this.element.style.display = "block";
36 this.uncomment.addEventListener("click", this.handleUncomment.bind(this), false); 100 } else {
37 this.themeSelect.addEventListener("change", this.handleThemeSelection.bind(this), false); 101 this.element.style.display = "none";
38 this.shortKeys.addEventListener("click", this.handleShortKeys.bind(this), false); 102 }
103
104 if(this.autocomplete) {
105 this.autoCompleteLabel.classList.add("disabled");
106 } else {
107 this.autoCompleteLabel.classList.remove("disabled");
108 }
109 }
110 },
111
112 getSelectedRange:{
113 value:function(editor){
114 return { from: editor.getCursor(true), to: editor.getCursor(false) };
39 } 115 }
40 }, 116 },
41 117
42 handleFormat:{ 118 handleFormat:{
43 value: function(evt){ 119 value: function(evt){
44 this.application.ninja.codeEditorController.autoFormatSelection(); 120 var range = this.getSelectedRange(this.currentDocument.model.views.code.editor);
121 this.currentDocument.model.views.code.editor.autoFormatRange(range.from, range.to);
45 } 122 }
46 }, 123 },
124
47 handleComment:{ 125 handleComment:{
48 value: function(evt){ 126 value: function(evt){
49 this.application.ninja.codeEditorController.commentSelection(true); 127 this.application.ninja.codeEditorController.commentSelection(true);