[Libreoffice-commits] online.git: loleaflet/src

Pranav Kant pranavk at collabora.com
Fri May 13 10:54:01 UTC 2016


 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 <pranavk at 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();


More information about the Libreoffice-commits mailing list