+define([\r
+'libs/jquery-1.9.1.min',\r
+'libs/underscore-min',\r
+'libs/text!./template.html'], function($, _, templateSrc) {\r
+\r
+'use strict';\r
+\r
+return function(sandbox) {\r
+ \r
+ var template = _.template(templateSrc);\r
+ \r
+ var view = {\r
+ dom: $('<div>' + template({node:null, parents: null}) + '</div>'),\r
+ setup: function() {\r
+ this.dom.on('mouseenter', 'a', function(e) {\r
+ var target = $(e.target);\r
+ sandbox.publish('nodeHighlighted', target.attr('data-id'));\r
+ });\r
+ this.dom.on('mouseleave', 'a', function(e) {\r
+ var target = $(e.target);\r
+ sandbox.publish('nodeDimmed', target.attr('data-id'));\r
+ });\r
+ this.dom.on('click', 'a', function(e) {\r
+ e.preventDefault();\r
+ sandbox.publish('nodeSelected', target.attr('data-id'));\r
+ });\r
+ },\r
+ \r
+ setNode: function(node) {\r
+ this.dom.empty();\r
+ this.dom.html(template({node: node, parents: node.parents('[wlxml-tag]')}));\r
+ },\r
+ \r
+ highlightNode: function(id) {\r
+ this.dom.find('a[data-id="'+id+'"]').addClass('rng-common-hoveredNode');\r
+ },\r
+ dimNode: function(id) {\r
+ this.dom.find('a[data-id="' +id+'"]').removeClass('rng-common-hoveredNode');\r
+ }\r
+ }\r
+ \r
+ view.setup();\r
+ \r
+ return {\r
+ start: function() { sandbox.publish('ready'); },\r
+ getView: function() { return view.dom; },\r
+ setNode: function(node) { view.setNode(node); }\r
+ }\r
+}\r
+\r
+});
\ No newline at end of file