loleaflet/dist/spreadsheet.css | 25 +++++++++++++ loleaflet/src/control/Control.ColumnHeader.js | 47 +++++++++++++++++++++++++- loleaflet/src/control/Control.RowHeader.js | 28 +++++++++++++++ 3 files changed, 99 insertions(+), 1 deletion(-)
New commits: commit b881e986d803f51b187212c09e43da65e7351634 Author: Pranav Kant <pran...@collabora.com> Date: Fri Mar 11 20:16:15 2016 +0530 loleaflet: Column and row headers are selectable now ... with multi-select shift and ctrl key behavior like desktop calc version. Change-Id: I574037f984ee1844773b0fb8c90c5bb1c079188b diff --git a/loleaflet/dist/spreadsheet.css b/loleaflet/dist/spreadsheet.css index 665c7fe..1ccfb1e 100644 --- a/loleaflet/dist/spreadsheet.css +++ b/loleaflet/dist/spreadsheet.css @@ -50,6 +50,7 @@ border-right: 1px solid darkgrey; border-bottom: 1px solid darkgrey; background-color: lightgrey; + cursor: pointer; position: absolute; padding: 0px; @@ -98,6 +99,18 @@ padding: 0px; margin: 0px; height: 100%; + cursor: pointer; + + /* Make the text unselectable for all browsers */ + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + } + +.spreadsheet-header-column:hover { + background-color: #DDD; } .spreadsheet-header-rows-container { @@ -134,4 +147,16 @@ padding: 0px; margin: 0px; height: 100%; + cursor: pointer; + + /* Make the text unselectable for all browsers */ + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + } + +.spreadsheet-header-row:hover { + background-color: #DDD; } diff --git a/loleaflet/src/control/Control.ColumnHeader.js b/loleaflet/src/control/Control.ColumnHeader.js index 0091893..9a0cd16 100644 --- a/loleaflet/src/control/Control.ColumnHeader.js +++ b/loleaflet/src/control/Control.ColumnHeader.js @@ -2,6 +2,7 @@ * Control.ColumnHeader */ +/* global $ */ L.Control.ColumnHeader = L.Control.extend({ onAdd: function (map) { map.on('updatepermission', this._onUpdatePermission, this); @@ -15,7 +16,8 @@ L.Control.ColumnHeader = L.Control.extend({ this._map.on('updateviewport', this.setViewPort, this); this._map.on('viewrowcolumnheaders', this.viewRowColumnHeaders, this); var docContainer = this._map.options.documentContainer; - L.DomUtil.create('div', 'spreadsheet-header-corner', docContainer.parentElement); + var cornerHeader = L.DomUtil.create('div', 'spreadsheet-header-corner', docContainer.parentElement); + L.DomEvent.addListener(cornerHeader, 'click', this._onCornerHeaderClick, this); var headersContainer = L.DomUtil.create('div', 'spreadsheet-header-columns-container', docContainer.parentElement); this._columns = L.DomUtil.create('div', 'spreadsheet-header-columns', headersContainer); @@ -71,7 +73,50 @@ L.Control.ColumnHeader = L.Control.extend({ else { L.DomUtil.setStyle(text, 'width', width); } + + L.DomEvent.addListener(text, 'click', this._onColumnHeaderClick, this); + } + }, + + _colAlphaToNumber: function(alpha) { + var res = 0; + var offset = 'A'.charCodeAt(); + for (var i = 0; i < alpha.length; i++) { + var chr = alpha[alpha.length - i - 1]; + res += (chr.charCodeAt() - offset + 1) * Math.pow(26, i); } + + return res; + }, + + _onColumnHeaderClick: function (e) { + var colAlpha = e.target.getAttribute('rel').split('spreadsheet-column-')[1]; + var colNumber = this._colAlphaToNumber(colAlpha); + + var modifier = 0; + if (e.shiftKey) { + modifier += this._map.keyboard.keyModifier.shift; + } + if (e.ctrlKey) { + modifier += this._map.keyboard.keyModifier.ctrl; + } + + var command = { + Col: { + type: 'unsigned short', + value: parseInt(colNumber - 1) + }, + Modifier: { + type: 'unsigned short', + value: modifier + } + }; + + this._map.sendUnoCommand('.uno:SelectColumn ', command); + }, + + _onCornerHeaderClick: function() { + this._map.sendUnoCommand('.uno:SelectAll'); }, _onUpdatePermission: function () { diff --git a/loleaflet/src/control/Control.RowHeader.js b/loleaflet/src/control/Control.RowHeader.js index b7a8e72..fff931a 100644 --- a/loleaflet/src/control/Control.RowHeader.js +++ b/loleaflet/src/control/Control.RowHeader.js @@ -2,6 +2,7 @@ * L.Control.RowHeader */ +/* global $ */ L.Control.RowHeader = L.Control.extend({ onAdd: function (map) { map.on('updatepermission', this._onUpdatePermission, this); @@ -70,7 +71,34 @@ L.Control.RowHeader = L.Control.extend({ L.DomUtil.setStyle(text, 'line-height', height); L.DomUtil.setStyle(text, 'height', height); } + + L.DomEvent.addListener(text, 'click', this._onRowHeaderClick, this); + } + }, + + _onRowHeaderClick: function (e) { + var row = e.target.getAttribute('rel').split('spreadsheet-row-')[1]; + + var modifier = 0; + if (e.shiftKey) { + modifier += this._map.keyboard.keyModifier.shift; } + if (e.ctrlKey) { + modifier += this._map.keyboard.keyModifier.ctrl; + } + + var command = { + Row: { + type: 'long', + value: parseInt(row - 1) + }, + Modifier: { + type: 'unsigned short', + value: modifier + } + }; + + this._map.sendUnoCommand('.uno:SelectRow ', command); }, _onUpdatePermission: function () { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits