1 define(['libs/jquery', 'libs/ace/ace', 'libs/text!./template.html'], function($, ace, template) {
5 return function(sandbox) {
7 var view = $(template),
8 documentIsDirty = true,
9 documentEditedHere = false,
12 view.onShow = function() {
14 editor.setValue(wlxmlDocument.toXML());
16 documentEditedHere = false;
18 documentIsDirty = false;
22 view.onHide = function() {
23 if(documentEditedHere) {
28 var commitDocument = function() {
29 documentEditedHere = false;
30 wlxmlDocument.loadXML(editor.getValue());
33 var editor = ace.edit(view.find('#rng-sourceEditor-editor')[0]),
34 session = editor.getSession();
35 session.setMode('ace/mode/xml');
36 session.setUseWrapMode(true);
38 editor.getSession().on('change', function() {
39 documentEditedHere = true;
43 sandbox.publish('ready');
48 setDocument: function(document) {
49 wlxmlDocument = document;
50 wlxmlDocument.on('change', function() {
51 documentIsDirty = true;
53 wlxmlDocument.on('contentSet', function() {
54 documentIsDirty = true;
57 changesCommited: function() {
58 return !documentEditedHere;
60 commitChanges: commitDocument,
61 getDocument: function() {
62 return editor.getValue();