smartxml: DocumentNode.replaceWith
[fnpeditor.git] / src / editor / modules / nodePane / nodePane.js
1 define([
2 'libs/text!./template.html',
3 'libs/jquery',
4 'libs/underscore',
5 'modules/nodePane/metaWidget/metaWidget',
6 'utils/wlxml'
7 ], function(templateSrc, $, _, metaWidget, wlxmlUtils) {
8
9 'use strict';
10
11 return function(sandbox) {
12     
13     var view = $(_.template(templateSrc)({tagNames: wlxmlUtils.wlxmlTagNames, classNames: wlxmlUtils.wlxmlClassNames}));
14     
15     view.on('change', 'select', function(e) {
16         var target = $(e.target);
17         var attr = target.attr('class').split('-')[3] === 'tagSelect' ? 'tag' : 'class';
18         sandbox.publish('nodeElementChange', attr, target.val().replace(/-/g, '.'));
19     });
20     
21     return {
22         start: function() {
23             sandbox.publish('ready');
24         },
25         getView: function() {
26             return view;
27         },
28         setNodeElement: function(nodeElement) {
29             view.find('.rng-module-nodePane-tagSelect').val(nodeElement.getWlxmlTag());
30
31             var escapedClassName = (nodeElement.getWlxmlClass() || '').replace(/\./g, '-')
32             view.find('.rng-module-nodePane-classSelect').val(escapedClassName);
33
34             var widget = metaWidget.create({attrs:nodeElement.getWlxmlMetaAttrs()});
35             widget.on('valueChanged', function(key, value) {
36                 sandbox.publish('nodeElementChange', key, value);
37             });
38             view.find('.metaFields').empty().append(widget.el);
39         }
40     };
41     
42 };
43
44 });