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

Henry Castro hcastro at collabora.com
Thu Mar 23 01:07:22 UTC 2017


 loleaflet/src/layer/marker/Annotation.js |  120 ++++++++++++++++++++-----------
 1 file changed, 79 insertions(+), 41 deletions(-)

New commits:
commit e30bcdfcd8a498b30304b424c7347d6425379489
Author: Henry Castro <hcastro at collabora.com>
Date:   Wed Mar 22 21:07:48 2017 -0400

    loleaflet: add reply property to the annotation object
    
    Change-Id: I58323dd35380e9cadf25661f85f38e080bbff026

diff --git a/loleaflet/src/layer/marker/Annotation.js b/loleaflet/src/layer/marker/Annotation.js
index 277a1d9d..364921a0 100644
--- a/loleaflet/src/layer/marker/Annotation.js
+++ b/loleaflet/src/layer/marker/Annotation.js
@@ -59,74 +59,104 @@ L.Annotation = L.Layer.extend({
 	show: function () {
 		this._container.style.visibility = '';
 		this._contentNode.style.display = '';
-		this._editNode.style.display = 'none';
+		this._nodeModify.style.display = 'none';
+		this._nodeReply.style.display = 'none';
 	},
 
 	hide: function () {
 		this._container.style.visibility = 'hidden';
-		this._editNode.style.display = 'none';
+		this._contentNode.style.display = 'none';
+		this._nodeModify.style.display = 'none';
+		this._nodeReply.style.display = 'none';
 	},
 
 	edit: function () {
 		this._container.style.visibility = '';
 		this._contentNode.style.display = 'none';
-		this._editNode.style.display = '';
+		this._nodeModify.style.display = '';
+		this._nodeReply.style.display = 'none';
+		return this;
+	},
+
+	reply: function () {
+		this._container.style.visibility = '';
+		this._contentNode.style.display = '';
+		this._nodeModify.style.display = 'none';
+		this._nodeReply.style.display = '';
 		return this;
 	},
 
 	isEdit: function () {
-		return this._editNode && this._editNode.style.display !== 'none';
+		return (this._nodeModify && this._nodeModify.style.display !== 'none') ||
+		       (this._nodeReply && this._nodeReply.style.display !== 'none');
 	},
 
 	focus: function () {
-		this._editText.focus();
+		this._nodeModifyText.focus();
+		this._nodeReplyText.focus();
+	},
+
+	_createButton: function(container, value, handler) {
+		var button = L.DomUtil.create('input', 'loleaflet-controls', container);
+		button.type = 'button';
+		button.value = value;
+		L.DomEvent.on(button, 'click', handler, this);
 	},
 
 	_initLayout: function () {
+		var buttons,
+		    tagTd = 'td',
+		    tagDiv = 'div',
+		    empty = '',
+		    click = 'click',
+		    tagTextArea = 'textarea',
+		    cancel = _('Cancel'),
+		    classTextArea = 'loleaflet-annotation-textarea',
+		    classEdit = 'loleaflet-annotation-edit';
 		var container = this._container =
-			L.DomUtil.create('div', 'loleaflet-annotation');
+			L.DomUtil.create(tagDiv, 'loleaflet-annotation');
 		var wrapper = this._wrapper =
-			L.DomUtil.create('div', 'loleaflet-annotation-content-wrapper', container);
-		this._tableAuthor = L.DomUtil.create('table', 'loleaflet-annotation-table', wrapper);
-		var tbody = L.DomUtil.create('tbody', '', this._tableAuthor);
-		var tr = L.DomUtil.create('tr', '', tbody);
-		var tdImg = L.DomUtil.create('td', 'loleaflet-annotation-img', tr);
-		var tdAuthor = L.DomUtil.create('td', 'loleaflet-annotation-author', tr);
-		var tdMenu = L.DomUtil.create('td', '', tr);
-		var imgAuthor = L.DomUtil.create('img', '', tdImg);
+			L.DomUtil.create(tagDiv, 'loleaflet-annotation-content-wrapper', container);
+		this._author = L.DomUtil.create('table', 'loleaflet-annotation-table', wrapper);
+		var tbody = L.DomUtil.create('tbody', empty, this._author);
+		var tr = L.DomUtil.create('tr', empty, tbody);
+		var tdImg = L.DomUtil.create(tagTd, 'loleaflet-annotation-img', tr);
+		var tdAuthor = L.DomUtil.create(tagTd, 'loleaflet-annotation-author', tr);
+		var tdMenu = L.DomUtil.create(tagTd, empty, tr);
+		var imgAuthor = L.DomUtil.create('img', empty, tdImg);
 		imgAuthor.setAttribute('src', L.Icon.Default.imagePath + '/user.png');
 		imgAuthor.setAttribute('width', this.options.imgSize.x);
 		imgAuthor.setAttribute('height', this.options.imgSize.y);
-		L.DomUtil.create('div', 'loleaflet-annotation-userline', tdImg);
-		this._contentAuthor = L.DomUtil.create('div', 'loleaflet-annotation-content-author', tdAuthor);
-		this._contentDate = L.DomUtil.create('div', 'loleaflet-annotation-date', tdAuthor);
-		var divMenu = L.DomUtil.create('div', this._data.trackchange ? 'loleaflet-annotation-menu-redline' : 'loleaflet-annotation-menu', tdMenu);
+		L.DomUtil.create(tagDiv, 'loleaflet-annotation-userline', tdImg);
+		this._contentAuthor = L.DomUtil.create(tagDiv, 'loleaflet-annotation-content-author', tdAuthor);
+		this._contentDate = L.DomUtil.create(tagDiv, 'loleaflet-annotation-date', tdAuthor);
+		var divMenu = L.DomUtil.create(tagDiv, this._data.trackchange ? 'loleaflet-annotation-menu-redline' : 'loleaflet-annotation-menu', tdMenu);
 		divMenu.annotation = this;
 		if (this._data.trackchange) {
-			this._captionNode = L.DomUtil.create('div', 'loleaflet-annotation-caption', wrapper);
-			this._captionText = L.DomUtil.create('div', '', this._captionNode);
+			this._captionNode = L.DomUtil.create(tagDiv, 'loleaflet-annotation-caption', wrapper);
+			this._captionText = L.DomUtil.create(tagDiv, empty, this._captionNode);
 		}
-		this._contentNode = L.DomUtil.create('div', 'loleaflet-annotation-content', wrapper);
-		this._editNode = L.DomUtil.create('div', 'loleaflet-annotation-edit', wrapper);
-		this._contentText = L.DomUtil.create('div', '', this._contentNode);
-		this._editText = L.DomUtil.create('textarea', 'loleaflet-annotation-textarea', this._editNode);
-
-		var buttons = L.DomUtil.create('div', '', this._editNode);
-		var button = L.DomUtil.create('input', 'loleaflet-controls', buttons);
-		button.type = 'button';
-		button.value = _(' Save ');
-		L.DomEvent.on(button, 'click', this._onSaveClick, this);
-		button = L.DomUtil.create('input', 'loleaflet-controls', buttons);
-		button.type = 'button';
-		button.value = _('Cancel');
-		L.DomEvent.on(button, 'click', this._onCancelClick, this);
+		this._contentNode = L.DomUtil.create(tagDiv, 'loleaflet-annotation-content', wrapper);
+		this._nodeModify = L.DomUtil.create(tagDiv, classEdit, wrapper);
+		this._nodeModifyText = L.DomUtil.create(tagTextArea, classTextArea, this._nodeModify);
+		this._contentText = L.DomUtil.create(tagDiv, empty, this._contentNode);
+		this._nodeReply = L.DomUtil.create(tagDiv, classEdit, wrapper);
+		this._nodeReplyText = L.DomUtil.create(tagTextArea, classTextArea, this._nodeReply);
+
+		buttons = L.DomUtil.create(tagDiv, empty, this._nodeModify);
+		this._createButton(buttons, _(' Save '), this._onSaveClick);
+		this._createButton(buttons, cancel, this._onCancelClick);
+		buttons = L.DomUtil.create(tagDiv, empty, this._nodeReply);
+		this._createButton(buttons, _('Reply'), this._onReplyClick);
+		this._createButton(buttons, cancel, this._onCancelClick);
 		L.DomEvent.disableScrollPropagation(this._container);
 
 		this._container.style.visibility = 'hidden';
-		this._editNode.style.display = 'none';
+		this._nodeModify.style.display = 'none';
+		this._nodeReply.style.display = 'none';
 
-		var events = ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'keydown', 'keypress', 'keyup'];
-		L.DomEvent.on(container, 'click', this._onMouseClick, this);
+		var events = [click, 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'keydown', 'keypress', 'keyup'];
+		L.DomEvent.on(container, click, this._onMouseClick, this);
 		L.DomEvent.on(container, 'mouseleave', this._onMouseLeave, this);
 		for (var it = 0; it < events.length; it++) {
 			L.DomEvent.on(container, events[it], L.DomEvent.stopPropagation, this);
@@ -135,7 +165,7 @@ L.Annotation = L.Layer.extend({
 
 	_onCancelClick: function (e) {
 		L.DomEvent.stopPropagation(e);
-		this._editText.value = this._contentText.innerHTML;
+		this._nodeModifyText.value = this._contentText.innerHTML;
 		this.show();
 		this._map.fire('AnnotationCancel', {annotation: this});
 	},
@@ -165,9 +195,17 @@ L.Annotation = L.Layer.extend({
 		});
 	},
 
+	_onReplyClick: function (e) {
+		L.DomEvent.stopPropagation(e);
+		this._data.reply = this._nodeReplyText.value;
+		this._nodeReplyText.value = null;
+		this.show();
+		this._map.fire('AnnotationReply', {annotation: this});
+	},
+
 	_onSaveClick: function (e) {
 		L.DomEvent.stopPropagation(e);
-		this._data.text = this._contentText.innerHTML = this._editText.value;
+		this._data.text = this._contentText.innerHTML = this._nodeModifyText.value;
 		this.show();
 		this._map.fire('AnnotationSave', {annotation: this});
 	},
@@ -177,13 +215,13 @@ L.Annotation = L.Layer.extend({
 		style.width = '';
 		style.whiteSpace = 'nowrap';
 
-		var width = Math.min(Math.max(this._tableAuthor.offsetWidth, this._contentText.offsetWidth), this.options.minWidth);
+		var width = Math.min(Math.max(this._author.offsetWidth, this._contentText.offsetWidth), this.options.minWidth);
 		style.width = (width + 1) + 'px';
 		style.whiteSpace = '';
 	},
 
 	_updateContent: function () {
-		this._contentText.innerHTML = this._editText.innerHTML = this._data.text;
+		this._contentText.innerHTML = this._nodeModifyText.innerHTML = this._data.text;
 		this._contentAuthor.innerHTML = this._data.author;
 		this._contentDate.innerHTML = this._data.dateTime;
 		if (this._data.trackchange) {


More information about the Libreoffice-commits mailing list