815968032a107f33e97df07f942d8d3abb59b46a
[fnpeditor.git] / src / editor / modules / sourceEditor / sourceEditor.js
1 define(function() {
2
3 'use strict';
4
5 return function(sandbox) {
6
7     var view = $(sandbox.getTemplate('main')()),
8         documentIsDirty = true,
9         documentEditedHere = false,
10         wlxmlDocument;
11
12     view.onShow = function() {
13         if(documentIsDirty) {
14             editor.setValue(wlxmlDocument.toXML());
15             editor.gotoLine(0);
16             sandbox.publish('documentSet');
17             documentIsDirty = false;
18         }
19     }
20
21     view.onHide = function() {
22         if(documentEditedHere) {
23             documentEditedHere = false;
24             wlxmlDocument.loadXML(editor.getValue());
25         }
26     }
27     
28     var editor = ace.edit(view.find('#rng-sourceEditor-editor')[0]),
29         session = editor.getSession();
30     editor.setTheme("ace/theme/chrome");
31     session.setMode("ace/mode/xml")
32     session.setUseWrapMode(true);
33     
34     $('textarea', view).on('keyup', function() {
35         documentEditedHere = true;
36     });
37     
38     editor.getSession().on('change', function() {
39         documentEditedHere = true;
40     });
41     return {
42         start: function() {
43             sandbox.publish('ready');
44         },
45         getView: function() {
46             return view;
47         },
48         setDocument: function(document) {
49             wlxmlDocument = document;
50             wlxmlDocument.on('change', function() {
51                 documentIsDirty = true;
52             });
53         },
54         getDocument: function() {
55             return editor.getValue();
56         }
57     };
58 };
59
60 });