loleaflet/dist/loleaflet.css             |    5 ++
 loleaflet/src/layer/AnnotationManager.js |   64 +++++++++++++++++++++++--------
 loleaflet/src/layer/marker/Annotation.js |   21 +++++-----
 3 files changed, 64 insertions(+), 26 deletions(-)

New commits:
commit aa751efbeef7a5ed6207452bcc646a4cbac62135
Author: Henry Castro <hcas...@collabora.com>
Date:   Tue Feb 14 16:37:16 2017 -0400

    loleaflet: modify and remove annotations

diff --git a/loleaflet/dist/loleaflet.css b/loleaflet/dist/loleaflet.css
index eac27ef..cc9c355 100644
--- a/loleaflet/dist/loleaflet.css
+++ b/loleaflet/dist/loleaflet.css
@@ -126,6 +126,11 @@ body {
        line-height: 1.4;
 }
 
+.loleaflet-annotation-edit {
+       margin: 3px 3px;
+       line-height: 1.4;
+}
+
 .loleaflet-annotation-textarea {
        border: 1px solid #c8c8c8;
        resize: none;
diff --git a/loleaflet/src/layer/AnnotationManager.js 
b/loleaflet/src/layer/AnnotationManager.js
index 56147e9..3fef9d1 100644
--- a/loleaflet/src/layer/AnnotationManager.js
+++ b/loleaflet/src/layer/AnnotationManager.js
@@ -18,6 +18,25 @@ L.AnnotationManager = L.Class.extend({
                this._map.on('AnnotationCancel', this._onAnnotationCancel, 
this);
                this._map.on('AnnotationClick', this._onAnnotationClick, this);
                this._map.on('AnnotationSave', this._onAnnotationSave, this);
+               var that = this;
+               $.contextMenu({
+                       selector: '.loleaflet-annotation-content',
+                       className: 'loleaflet-font',
+                       items: {
+                               modify: {
+                                       name: _('Modify'),
+                                       callback: function (key, options) {
+                                               
that._onAnnotationModify.call(that, options.$trigger.attr('id'));
+                                       }
+                               },
+                               remove: {
+                                       name: _('Remove'),
+                                       callback: function (key, options) {
+                                               
that._onAnnotationRemove.call(that, options.$trigger.attr('id'));
+                                       }
+                               }
+                       }
+               });
        },
 
        clear: function () {
@@ -55,7 +74,7 @@ L.AnnotationManager = L.Class.extend({
                var topRight = 
this._map.project(this._map.options.maxBounds.getNorthEast());
                var annotation = this._items[id];
                var point0, point1, point2, point3;
-               if (annotation) {
+               if (annotation.id !== id) {
                        this._selected.annotation = annotation;
                        this.layout();
                        point0 = 
this._map._docLayer._twipsToPixels(annotation._data.anchorPos);
@@ -141,21 +160,17 @@ L.AnnotationManager = L.Class.extend({
                this._items[comment.id].focus();
        },
 
-       remove: function (annotation) {
+       remove: function (id) {
+               this._removeAnchor(id);
+               this.unselect();
+               this._map.removeLayer(this._items[id]);
+               delete this._items[id];
+               this._map.focus();
        },
 
        _onAnnotationCancel: function (e) {
-               if (e.id === -1) {
-                       for (var index in this._anchors) {
-                               if (this._anchors[index].id === e.id) {
-                                       this._anchors.splice(index, 1);
-                                       break;
-                               }
-                       }
-                       this._map.removeLayer(this._items[e.id]);
-                       this.unselect();
-                       delete this._items[e.id];
-                       this._map.focus();
+               if (e.id === 'new') {
+                       this.remove(e.id);
                }
        },
 
@@ -163,10 +178,27 @@ L.AnnotationManager = L.Class.extend({
                this.select(e.id);
        },
 
+       _onAnnotationModify: function (id) {
+               this._items[id].edit();
+               this.select(id);
+               this._items[id].focus();
+       },
+
+       _onAnnotationRemove: function (id) {
+               this.remove(id);
+       },
+
        _onAnnotationSave: function (e) {
-               this._items[e.id].updateEdit();
-               this._items[e.id].show();
                this.layout();
+       },
+
+       _removeAnchor: function (id) {
+               for (var index in this._anchors) {
+                       if (this._anchors[index].id === id) {
+                               this._anchors.splice(index, 1);
+                               break;
+                       }
+               }
        }
 });
 
@@ -178,7 +210,7 @@ L.Map.include({
                        textrange: '',
                        author: _('You'),
                        dateTime: new Date().toDateString(),
-                       id: -1,
+                       id: 'new',
                        anchorPos:  
this._docLayer._latLngToTwips(this._docLayer._visibleCursor.getNorthWest())
                });
        }
diff --git a/loleaflet/src/layer/marker/Annotation.js 
b/loleaflet/src/layer/marker/Annotation.js
index 142c73e..ca6afd4 100644
--- a/loleaflet/src/layer/marker/Annotation.js
+++ b/loleaflet/src/layer/marker/Annotation.js
@@ -68,10 +68,6 @@ L.Annotation = L.Layer.extend({
                return this;
        },
 
-       updateEdit: function () {
-               this._contentText.innerHTML = this._editText.value;
-       },
-
        focus: function () {
                this._editText.focus();
        },
@@ -84,8 +80,9 @@ L.Annotation = L.Layer.extend({
 
                L.DomEvent.disableScrollPropagation(this._container);
                this._contentNode = L.DomUtil.create('div', 
'loleaflet-annotation-content', wrapper);
-               this._editNode = L.DomUtil.create('div', 
'loleaflet-annotation-content', wrapper);
+               this._editNode = L.DomUtil.create('div', 
'loleaflet-annotation-edit', wrapper);
 
+               this._contentNode.setAttribute('id', this._data.id);
                this._contentText = L.DomUtil.create('div', '', 
this._contentNode);
                this._contentAuthor = L.DomUtil.create('div', '', 
this._contentNode);
                this._contentDate = L.DomUtil.create('div', '', 
this._contentNode);
@@ -107,7 +104,7 @@ L.Annotation = L.Layer.extend({
                this._container.style.visibility = 'hidden';
                this._editNode.style.display = 'none';
 
-               var events = ['click', 'dblclick', 'mousedown', 'mouseup', 
'mouseover', 'mouseout', 'keydown', 'keypress', 'keyup', 'contextmenu'];
+               var events = ['click', 'dblclick', 'mousedown', 'mouseup', 
'mouseover', 'mouseout', 'keydown', 'keypress', 'keyup'];
                L.DomEvent.on(container, 'click', this._onMouseClick, this);
                for (var it = 0; it < events.length; it++) {
                        L.DomEvent.on(container, events[it], 
L.DomEvent.stopPropagation, this);
@@ -115,17 +112,21 @@ L.Annotation = L.Layer.extend({
        },
 
        _onCancelClick: function (e) {
+               this._editText.value = this._contentText.innerHTML;
+               this.show();
                this._map.fire('AnnotationCancel', {id: this._data.id});
        },
 
-       _onSaveClick: function (e) {
-               this._map.fire('AnnotationSave', {id: this._data.id});
-       },
-
        _onMouseClick: function (e) {
                this._map.fire('AnnotationClick', {id: this._data.id});
        },
 
+       _onSaveClick: function (e) {
+               this._contentText.innerHTML = this._editText.value;
+               this.show();
+               this._map.fire('AnnotationSave', {id: this._data.id});
+       },
+
        _updateLayout: function () {
                var style = this._contentNode.style;
                var width = Math.max(this._contentNode.offsetWidth, 
this.options.minWidth);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to