+ \r
+ \r
+ var sideBarView = {\r
+ node: view.node.find('#rng-visualEditor-sidebar'),\r
+ setup: function() {\r
+ var view = this;\r
+ this.node.find('#rng-visualEditor-sidebarButtons a').click(function(e) {\r
+ e.preventDefault();\r
+ var target = $(e.currentTarget);\r
+ if(!target.attr('data-content-id'))\r
+ return;\r
+ view.selectTab(target.attr('data-content-id'));\r
+ });\r
+ view.selectTab('rng-visualEditor-edit');\r
+ \r
+ view.node.on('change', '.rng-visualEditor-editPaneNodeForm select', function(e) {\r
+ var target = $(e.target);\r
+ var attr = target.attr('id').split('-')[2].split('editPane')[1].substr(0,3) === 'Tag' ? 'tag' : 'class';\r
+ mediator.getCurrentNode().attr('wlxml-'+attr, target.val());\r
+ isDirty = true;\r
+ });\r
+ \r
+ view.node.on('change', '.rng-visualEditor-editPaneSelectionForm select', function(e) {\r
+ var target = $(e.target);\r
+ var selection = window.getSelection();\r
+ if(selection.anchorNode === selection.focusNode && selection.anchorNode.nodeType === Node.TEXT_NODE) {\r
+ var startOffset = selection.anchorOffset;\r
+ var endOffset = selection.focusOffset;\r
+ if(startOffset > endOffset) {\r
+ var tmp = startOffset;\r
+ startOffset = endOffset;\r
+ endOffset = tmp;\r
+ }\r
+ var node = selection.anchorNode;\r
+ var prefix = node.data.substr(0, startOffset);\r
+ var suffix = node.data.substr(endOffset);\r
+ var core = node.data.substr(startOffset, endOffset - startOffset);\r
+ var newNode = $('<span wlxml-tag="' + target.val() + '">' + core + '</span>');\r
+ $(node).replaceWith(newNode);\r
+ newNode.before(prefix);\r
+ newNode.after(suffix);\r
+ mediator.nodeCreated(newNode);\r
+ isDirty = true;\r
+ }\r
+ });\r
+ \r
+ view.node.on('click', '.rng-visualEditor-editPaneSurrouding a', function(e) {\r
+ var target = $(e.target);\r
+ mediator.nodeDimmedById(target.attr('data-id'));\r
+ mediator.nodeSelectedById(target.attr('data-id'));\r
+ });\r
+ \r
+ view.node.on('mouseenter', '.rng-visualEditor-editPaneSurrouding a', function(e) {\r
+ var target = $(e.target);\r
+ mediator.nodeHighlightedById(target.attr('data-id')); \r
+ });\r
+ view.node.on('mouseleave', '.rng-visualEditor-editPaneSurrouding a', function(e) {\r
+ var target = $(e.target);\r
+ mediator.nodeDimmedById(target.attr('data-id')); \r
+ });\r
+ },\r
+ selectTab: function(id) {\r
+ this.node.find('.rng-visualEditor-sidebarContentItem').hide();\r
+ this.node.find('#'+id).show();\r
+ this.node.find('#rng-visualEditor-sidebarButtons li').removeClass('active');\r
+ this.node.find('#rng-visualEditor-sidebarButtons li a[data-content-id=' + id + ']').parent().addClass('active');\r
+ \r
+ },\r
+ updateEditPane: function(node) {\r
+ var pane = this.node.find('#rng-visualEditor-edit');\r
+ pane.html( $(sandbox.getTemplate('editPane')({tag: node.attr('wlxml-tag'), klass: node.attr('wlxml-class')})));\r
+ \r
+ var parent = {\r
+ repr: node.parent().attr('wlxml-tag') + ' / ' + (node.parent().attr('wlxml-class') || '[[no class]]'),\r
+ id: node.parent().attr('id')\r
+ }\r
+ var children = [];\r
+ node.children().each(function() {\r
+ var child = $(this);\r
+ children.push({repr: child.attr('wlxml-tag') + ' / ' + (child.attr('wlxml-class') || '[[no class]]'), id: child.attr('id')});\r
+ });\r
+ var naviTemplate = sandbox.getTemplate('editPaneNavigation')({parent: parent, children: children});\r
+ pane.find('.rng-visualEditor-editPaneSurrouding > div').html($(naviTemplate));\r
+ },\r
+ highlightNode: function(id) {\r
+ var pane = this.node.find('#rng-visualEditor-edit');\r
+ pane.find('a[data-id="'+id+'"]').addClass('rng-hover');\r
+ },\r
+ dimNode: function(id) {\r
+ var pane = this.node.find('#rng-visualEditor-edit');\r
+ pane.find('a[data-id="' +id+'"]').removeClass('rng-hover');\r
+ }\r
+ }\r
+ \r
+ var toolbarView = {\r
+ node: view.node.find('#rng-visualEditor-toolbar'),\r
+ setup: function() {\r
+ var view = this;\r
+ \r
+ view.node.find('button').click(function(e) {\r
+ var btn = $(e.currentTarget);\r
+ if(btn.attr('data-btn-type') === 'toggle') {\r
+ btn.toggleClass('active')\r
+ mediator.toolbarButtonToggled(btn.attr('data-btn'), btn.hasClass('active'));\r
+ }\r
+ });\r
+ }\r
+ }\r
+ \r