X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/e3d38a12c37e706077d9a42194fb80eb05e12658..36926b40a25b1df76c4474c89a51483b93d8a68c:/src/editor/modules/sourceEditor/sourceEditor.js diff --git a/src/editor/modules/sourceEditor/sourceEditor.js b/src/editor/modules/sourceEditor/sourceEditor.js index 2e2e6ab..0d7b12e 100644 --- a/src/editor/modules/sourceEditor/sourceEditor.js +++ b/src/editor/modules/sourceEditor/sourceEditor.js @@ -4,7 +4,28 @@ define(function() { return function(sandbox) { - var view = $(sandbox.getTemplate('main')()); + var view = $(sandbox.getTemplate('main')()), + documentIsDirty = true, + documentEditedHere = false, + wlxmlDocument; + + view.onShow = function() { + if(documentIsDirty) { + editor.setValue(wlxmlDocument.toXML()); + editor.gotoLine(0); + documentEditedHere = false; + + sandbox.publish('documentSet'); + documentIsDirty = false; + } + } + + view.onHide = function() { + if(documentEditedHere) { + documentEditedHere = false; + wlxmlDocument.loadXML(editor.getValue()); + } + } var editor = ace.edit(view.find('#rng-sourceEditor-editor')[0]), session = editor.getSession(); @@ -13,11 +34,11 @@ return function(sandbox) { session.setUseWrapMode(true); $('textarea', view).on('keyup', function() { - sandbox.publish('xmlChanged'); + documentEditedHere = true; }); editor.getSession().on('change', function() { - sandbox.publish('xmlChanged'); + documentEditedHere = true; }); return { start: function() { @@ -27,9 +48,10 @@ return function(sandbox) { return view; }, setDocument: function(document) { - editor.setValue(document.toXML()); - editor.gotoLine(0); - sandbox.publish('documentSet'); + wlxmlDocument = document; + wlxmlDocument.on('change', function() { + documentIsDirty = true; + }); }, getDocument: function() { return editor.getValue();