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

Reply via email to