smartxml: Support for Node.object.describesParent property
[fnpeditor.git] / src / editor / modules / nodeBreadCrumbs / nodeBreadCrumbs.js
index 320a1e8..24a61de 100644 (file)
@@ -8,20 +8,12 @@ define([
 
 return function(sandbox) {
     
-    var template = _.template(templateSrc);
+    var template = _.template(templateSrc),
+        listens = false;
     
     var view = {
         dom: $('<div>' + template({node:null, parents: null}) + '</div>'),
         setup: function() {
-            var view = this;
-            this.dom.on('mouseenter', 'a', function(e) {
-                var target = $(e.target);
-                sandbox.publish('elementEntered', target.data('element'));
-            });
-            this.dom.on('mouseleave', 'a', function(e) {
-                var target = $(e.target);
-                sandbox.publish('elementLeft', target.data('element'));
-            });
             this.dom.on('click', 'a', function(e) {
                 e.preventDefault();
                 var target = $(e.target);
@@ -32,8 +24,12 @@ return function(sandbox) {
         setNodeElement: function(nodeElement) {
             this.dom.empty();
             this.currentNodeElement = nodeElement;
-            var parents = nodeElement.parents();
-            this.dom.html(template({node: nodeElement, parents: parents, tagNames: wlxmlUtils.wlxmlTagNames, classNames: wlxmlUtils.wlxmlClassNames}));
+            var parents;
+            if(nodeElement) {
+                parents = nodeElement.parents();
+            }
+
+            this.dom.html(template({node: nodeElement, parents: parents, utils: wlxmlUtils}));
 
             this.dom.find('li > a[href="#"]').each(function(idx, a) {
                 $(a).data('element', parents[parents.length - 1 - idx]);
@@ -55,6 +51,14 @@ return function(sandbox) {
         start: function() { sandbox.publish('ready'); },
         getView: function() { return view.dom; },
         setNodeElement: function(nodeElement) {
+            if(!listens && nodeElement) {
+                nodeElement.document.on('change', function() {
+                    if(view.currentNodeElement && !view.currentNodeElement.isInDocument()) {
+                        view.setNodeElement(null);
+                    }
+                });
+                listens = true;
+            }
             view.setNodeElement(nodeElement);
         },
         highlightNode: function(id) { view.highlightNode(id); },