-/*global View CodeMirror ButtonToolbarView render_template panels */
+/*global View CodeMirror ToolbarView render_template panels */
var XMLView = View.extend({
_className: 'XMLView',
element: null,
var self = this;
$('.xmlview-toolbar', this.element).bind('resize.xmlview', this.resized.bind(this));
-
-
+
+ // scroll to the given position (if availble)
+ this.scrollCallback = this.scrollOnRequest.bind(this);
+ $(document).bind('xml-scroll-request', this.scrollCallback);
+
this.parent.freeze('Ładowanie edytora...');
this.editor = new CodeMirror($('.xmlview', this.element).get(0), {
parserfile: 'parsexml.js',
parserConfig: {
useHTMLKludges: false
},
- textWrapping: false,
+ textWrapping: true,
tabMode: 'spaces',
indentUnit: 0,
onChange: this.editorDataChanged.bind(this),
},
dispose: function() {
+ $(document).unbind('xml-scroll-request', this.scrollCallback);
+
this.model.removeObserver(this);
$(this.editor.frame).remove();
this._super();
getHotkey: function(event) {
var code = event.keyCode;
+ if(!((code >= 97 && code <= 122)
+ || (code >= 65 && code <= 90)) ) return null;
+
var ch = String.fromCharCode(code & 0xff).toLowerCase();
- var button = $('.buttontoolbarview-button[title='+ch+']', this.element)[0]
+ /* # console.log(ch.charCodeAt(0), '#', buttons); */
- console.log(ch, '#', button);
+ var buttons = $('.buttontoolbarview-button[hotkey='+ch+']', this.element);
var mod = 0;
if(event.altKey) mod |= 0x01;
if(event.ctrlKey) mod |= 0x02;
if(event.shiftKey) mod |= 0x04;
- if(button) {
+ if(buttons.length) {
var match = null;
- $(button).each(function() {
+ buttons.each(function() {
if( parseInt($(this).attr('ui:hotkey_mod')) == mod ) {
match = this;
return;
},
isHotkey: function() {
- console.log(arguments);
-
+ /* console.log(arguments); */
if(this.getHotkey.apply(this, arguments))
return true;
else
this.buttonToolbar.buttonPressed({
target: button
});
+ },
+
+ scrollOnRequest: function(event, data)
+ {
+ try {
+ var line = this.editor.nthLine(data.line);
+ this.editor.selectLines(line, (data.column-1));
+ } catch(e) {
+ console.log('Exception in scrollOnRequest:', e);
+ }
}
});