loleaflet/src/control/Control.ColumnHeader.js |   60 +++++++++++++++++++++-----
 loleaflet/src/control/Control.RowHeader.js    |   60 +++++++++++++++++++++-----
 2 files changed, 99 insertions(+), 21 deletions(-)

New commits:
commit b2907626bafd3615d8e7a8c1b7cb9361ad16dccd
Author: Pranav Kant <pran...@collabora.com>
Date:   Fri May 13 16:21:44 2016 +0530

    loleaflet: Add/delete row/column feature
    
    Change-Id: I6dfd68029b5746d6c2907f4195f4647c63387c55

diff --git a/loleaflet/src/control/Control.ColumnHeader.js 
b/loleaflet/src/control/Control.ColumnHeader.js
index d464e90..c928e93 100644
--- a/loleaflet/src/control/Control.ColumnHeader.js
+++ b/loleaflet/src/control/Control.ColumnHeader.js
@@ -24,6 +24,41 @@ L.Control.ColumnHeader = L.Control.extend({
                this._position = 0;
                this._totalWidth = 0;
                this._viewPort = 0;
+
+               var colHeaderObj = this;
+               $.contextMenu({
+                       selector: '.spreadsheet-header-column',
+                       items: {
+                               'insertcolbefore': {
+                                       name: _('Insert column before'),
+                                       callback: function(key, options) {
+                                               var colAlpha = 
options.$trigger.attr('rel').split('spreadsheet-column-')[1];
+                                               
colHeaderObj.insertColumn.call(colHeaderObj, colAlpha);
+                                       }
+                               },
+                               'deleteselectedcol': {
+                                       name: _('Delete column'),
+                                       callback: function(key, options) {
+                                               var colAlpha = 
options.$trigger.attr('rel').split('spreadsheet-column-')[1];
+                                               
colHeaderObj.deleteColumn.call(colHeaderObj, colAlpha);
+                                       }
+                               }
+                       },
+                       zIndex: 10
+               });
+       },
+
+       insertColumn: function(colAlpha) {
+               // First select the corresponding column because
+               // .uno:InsertColumn doesn't accept any column number
+               // as argument and just inserts before the selected column
+               this._selectColumn(colAlpha, 0);
+               this._map.sendUnoCommand('.uno:InsertColumns');
+       },
+
+       deleteColumn: function(colAlpha) {
+               this._selectColumn(colAlpha, 0);
+               this._map.sendUnoCommand('.uno:DeleteColumns');
        },
 
        clearColumns : function () {
@@ -89,18 +124,9 @@ L.Control.ColumnHeader = L.Control.extend({
                return res;
        },
 
-       _onColumnHeaderClick: function (e) {
-               var colAlpha = 
e.target.getAttribute('rel').split('spreadsheet-column-')[1];
+       _selectColumn: function(colAlpha, modifier) {
                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',
@@ -115,6 +141,20 @@ L.Control.ColumnHeader = L.Control.extend({
                this._map.sendUnoCommand('.uno:SelectColumn ', command);
        },
 
+       _onColumnHeaderClick: function (e) {
+               var colAlpha = 
e.target.getAttribute('rel').split('spreadsheet-column-')[1];
+
+               var modifier = 0;
+               if (e.shiftKey) {
+                       modifier += this._map.keyboard.keyModifier.shift;
+               }
+               if (e.ctrlKey) {
+                       modifier += this._map.keyboard.keyModifier.ctrl;
+               }
+
+               this._selectColumn(colAlpha, modifier);
+       },
+
        _onCornerHeaderClick: function() {
                this._map.sendUnoCommand('.uno:SelectAll');
        },
diff --git a/loleaflet/src/control/Control.RowHeader.js 
b/loleaflet/src/control/Control.RowHeader.js
index a99dac5..2285839 100644
--- a/loleaflet/src/control/Control.RowHeader.js
+++ b/loleaflet/src/control/Control.RowHeader.js
@@ -22,6 +22,41 @@ L.Control.RowHeader = L.Control.extend({
                this._position = 0;
                this._totalHeight = 0;
                this._viewPort = 0;
+
+               var rowHeaderObj = this;
+               $.contextMenu({
+                       selector: '.spreadsheet-header-row',
+                       items: {
+                               'insertrowabove': {
+                                       name: _('Insert row above'),
+                                       callback: function(key, options) {
+                                               var row = 
parseInt(options.$trigger.attr('rel').split('spreadsheet-row-')[1]);
+                                               
rowHeaderObj.insertRow.call(rowHeaderObj, row);
+                                       }
+                               },
+                               'deleteselectedrow': {
+                                       name: _('Delete row'),
+                                       callback: function(key, options) {
+                                               var row = 
parseInt(options.$trigger.attr('rel').split('spreadsheet-row-')[1]);
+                                               
rowHeaderObj.deleteRow.call(rowHeaderObj, row);
+                                       }
+                               }
+                       },
+                       zIndex: 10
+               });
+       },
+
+       insertRow: function(row) {
+               // First select the corresponding row because
+               // .uno:InsertRows doesn't accept any row number
+               // as argument and just inserts before the selected row
+               this._selectRow(row, 0);
+               this._map.sendUnoCommand('.uno:InsertRows');
+       },
+
+       deleteRow: function(row) {
+               this._selectRow(row, 0);
+               this._map.sendUnoCommand('.uno:DeleteRows');
        },
 
        clearRows: function () {
@@ -76,17 +111,7 @@ L.Control.RowHeader = L.Control.extend({
                }
        },
 
-       _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;
-               }
-
+       _selectRow: function(row, modifier) {
                var command = {
                        Row: {
                                type: 'long',
@@ -101,6 +126,19 @@ L.Control.RowHeader = L.Control.extend({
                this._map.sendUnoCommand('.uno:SelectRow ', command);
        },
 
+       _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;
+               }
+
+               this._selectRow(row, modifier);
+       },
+
        _onUpdatePermission: function () {
                if (this._map.getDocType() === 'spreadsheet' && 
!this._initialized) {
                        this._initialize();
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to