integration wip: setting/handling contentSet event (source/canvas)
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Wed, 23 Oct 2013 10:10:24 +0000 (12:10 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Mon, 2 Dec 2013 13:50:52 +0000 (14:50 +0100)
src/editor/modules/documentCanvas/canvas/wlxmlListener.js
src/editor/modules/sourceEditor/sourceEditor.js

index cbb582d..ec3001d 100644 (file)
@@ -21,6 +21,10 @@ $.extend(Listener.prototype, {
                 handler.bind(this)(event);
             }
         }, this);
+
+        wlxmlDocument.on('contentSet', function() {
+            this.canvas.loadWlxmlDocument(wlxmlDocument);
+        }, this);
     }
 });
 
index 2e2e6ab..8159680 100644 (file)
@@ -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();