changeset 1343:30753bd63eed

select/unselect shapes
author hertzhaft
date Tue, 03 Feb 2015 10:00:27 +0100
parents 6c169dca1ea7
children 3ec94ec07930
files webapp/src/main/webapp/jquery/jquery.digilib.measure.css webapp/src/main/webapp/jquery/jquery.digilib.measure.js
diffstat 2 files changed, 30 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery.digilib.measure.css	Sun Feb 01 23:26:45 2015 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.measure.css	Tue Feb 03 10:00:27 2015 +0100
@@ -88,10 +88,14 @@
     margin: 0px 4px 4px 0px;
 }
 
-.dl-measure-item {
+.dl-measure-shape {
     pointer-events: visibleStroke;
 }
 
-.dl-measure-item:hover {
+.dl-measure-shape:hover {
     stroke: lightcyan;
 }
+
+.dl-measure-selected {
+    stroke: cyan;
+}
--- a/webapp/src/main/webapp/jquery/jquery.digilib.measure.js	Sun Feb 01 23:26:45 2015 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.measure.js	Tue Feb 03 10:00:27 2015 +0100
@@ -820,6 +820,7 @@
     var onRenderShape = function(event, shape) {
         // event handler for updating shape info
         var info = function(event) {
+            selectShape(data, shape);
             updateInfo(data, shape);
             _debug_shape('onClick', shape);
             };
@@ -916,17 +917,37 @@
         updateCalculation(data);
         };
 
+    // select/unselect shape
+    var selectShape = function(data, shape, select) {
+        var css = CSS+'measure-selected';
+        if (select == null) {
+            select = !shape.properties.selected }
+        var cssclass = shapeClass(shape.geometry.type, select ? css : null)
+        shape.$elem.attr("class", cssclass);
+        shape.properties.cssclass = cssclass;
+        shape.properties.selected = select;
+    };
+
+    // construct CSS class for svg shape
+    var shapeClass = function(shapeType, more) {
+        var css = CSS+'measure-shape '+CSS+'measure-'+shapeType;
+        if (more != null) { css += ' '+more };
+        return css;
+        };
+
     // return a shape of the currently selected shape type
     var newShape = function(data) {
+        var shapeType = getActiveShapeType(data);
         return {
             geometry : {
-                type : getActiveShapeType(data)
+                type : shapeType
                 },
             properties : {
                 stroke : getSelectedStroke(data),
                 editable : true,
-                cssclass : 'dl-measure-item',
-                center : data.settings.drawFromCenter
+                cssclass : shapeClass(shapeType),
+                center : data.settings.drawFromCenter,
+                selected : false
                 }
             };
         };