From eb8ad1c4836166891f3456d5baa8eb12275bc46e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Wed, 23 Oct 2013 12:10:24 +0200 Subject: [PATCH] integration wip: setting/handling contentSet event (source/canvas) --- .../documentCanvas/canvas/wlxmlListener.js | 4 +++ .../modules/sourceEditor/sourceEditor.js | 32 +++++++++++++++---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/editor/modules/documentCanvas/canvas/wlxmlListener.js b/src/editor/modules/documentCanvas/canvas/wlxmlListener.js index cbb582d..ec3001d 100644 --- a/src/editor/modules/documentCanvas/canvas/wlxmlListener.js +++ b/src/editor/modules/documentCanvas/canvas/wlxmlListener.js @@ -21,6 +21,10 @@ $.extend(Listener.prototype, { handler.bind(this)(event); } }, this); + + wlxmlDocument.on('contentSet', function() { + this.canvas.loadWlxmlDocument(wlxmlDocument); + }, this); } }); diff --git a/src/editor/modules/sourceEditor/sourceEditor.js b/src/editor/modules/sourceEditor/sourceEditor.js index 2e2e6ab..8159680 100644 --- a/src/editor/modules/sourceEditor/sourceEditor.js +++ b/src/editor/modules/sourceEditor/sourceEditor.js @@ -4,7 +4,26 @@ 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); + 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 +32,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 +46,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(); -- 2.20.1