| | |
| | | this.colcount = 0; |
| | | |
| | | this.subject_col = -1; |
| | | this.shiftkey = false; |
| | | this.modkey = 0; |
| | | this.multiselect = false; |
| | | this.multiexpand = false; |
| | | this.multi_selecting = false; |
| | |
| | | init_row: function(row) |
| | | { |
| | | // make references in internal array and set event handlers |
| | | if (row && String(row.id).match(/rcmrow([a-z0-9\-_=\+\/]+)/i)) { |
| | | if (row && String(row.id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i)) { |
| | | var self = this, |
| | | uid = RegExp.$1; |
| | | row.uid = uid; |
| | |
| | | var i, len, rows = this.list.tBodies[0].rows; |
| | | |
| | | for (i=0, len=rows.length-1; i<len; i++) |
| | | if (rows[i].id && String(rows[i].id).match(/rcmrow([a-z0-9\-_=\+\/]+)/i) && this.rows[RegExp.$1] != null) |
| | | if (rows[i].id && String(rows[i].id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i) && this.rows[RegExp.$1] != null) |
| | | return RegExp.$1; |
| | | } |
| | | |
| | |
| | | var i, rows = this.list.tBodies[0].rows; |
| | | |
| | | for (i=rows.length-1; i>=0; i--) |
| | | if (rows[i].id && String(rows[i].id).match(/rcmrow([a-z0-9\-_=\+\/]+)/i) && this.rows[RegExp.$1] != null) |
| | | if (rows[i].id && String(rows[i].id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i) && this.rows[RegExp.$1] != null) |
| | | return RegExp.$1; |
| | | } |
| | | |
| | |
| | | case CONTROL_KEY: |
| | | if (!with_mouse) |
| | | this.highlight_row(id, true); |
| | | break; |
| | | break; |
| | | |
| | | case CONTROL_SHIFT_KEY: |
| | | this.shift_select(id, true); |
| | |
| | | */ |
| | | key_press: function(e) |
| | | { |
| | | if (this.focused != true) |
| | | var target = e.target || {}; |
| | | if (this.focused != true || target.nodeName == 'INPUT' || target.nodeName == 'TEXTAREA' || target.nodeName == 'SELECT') |
| | | return true; |
| | | |
| | | var keyCode = rcube_event.get_keycode(e), |
| | |
| | | |
| | | switch (keyCode) { |
| | | case 40: |
| | | case 38: |
| | | case 38: |
| | | case 63233: // "down", in safari keypress |
| | | case 63232: // "up", in safari keypress |
| | | // Stop propagation so that the browser doesn't scroll |
| | |
| | | rcube_event.cancel(e); |
| | | var ret = this.use_plusminus_key(keyCode, mod_key); |
| | | this.key_pressed = keyCode; |
| | | this.modkey = mod_key; |
| | | this.triggerEvent('keypress'); |
| | | this.modkey = 0; |
| | | return ret; |
| | | case 36: // Home |
| | | this.select_first(mod_key); |
| | |
| | | this.select_last(mod_key); |
| | | return rcube_event.cancel(e); |
| | | default: |
| | | this.shiftkey = e.shiftKey; |
| | | this.key_pressed = keyCode; |
| | | this.modkey = mod_key; |
| | | this.triggerEvent('keypress'); |
| | | // reset shiftkey flag, we need it only for registered events |
| | | this.shiftkey = false; |
| | | this.modkey = 0; |
| | | |
| | | if (this.key_pressed == this.BACKSPACE_KEY) |
| | | return rcube_event.cancel(e); |
| | |
| | | */ |
| | | key_down: function(e) |
| | | { |
| | | var target = e.target || {}; |
| | | if (this.focused != true || target.nodeName == 'INPUT' || target.nodeName == 'TEXTAREA' || target.nodeName == 'SELECT') |
| | | return true; |
| | | |
| | | switch (rcube_event.get_keycode(e)) { |
| | | case 27: |
| | | if (this.drag_active) |
| | | return this.drag_mouse_up(e); |
| | | return this.drag_mouse_up(e); |
| | | if (this.col_drag_active) { |
| | | this.selected_column = null; |
| | | return this.column_drag_mouse_up(e); |
| | | return this.column_drag_mouse_up(e); |
| | | } |
| | | |
| | | case 40: |
| | |
| | | new_row = this.get_prev_row(); |
| | | |
| | | if (new_row) { |
| | | this.select_row(new_row.uid, mod_key, true); |
| | | this.select_row(new_row.uid, mod_key, false); |
| | | this.scrollto(new_row.uid); |
| | | } |
| | | |