diff Applications/StoneWebViewer/WebApplication/app.js @ 1815:b81775f1b196

New tools for annotations: segment length, circle, angle and eraser
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 25 May 2021 18:07:52 +0200
parents 634ff8993f6a
children 5baaad557d58
line wrap: on
line diff
--- a/Applications/StoneWebViewer/WebApplication/app.js	Tue May 25 15:52:38 2021 +0200
+++ b/Applications/StoneWebViewer/WebApplication/app.js	Tue May 25 18:07:52 2021 +0200
@@ -391,6 +391,8 @@
       globalConfiguration: {},
       creatingArchive: false,
       archiveJob: '',
+      annotationsCurrentAction: stone.WebViewerAction.NONE,  // dummy value
+      annotationsBackupAction: stone.WebViewerAction.NONE,  // dummy value
 
       modalWarning: false,
       modalNotDiagnostic: false,
@@ -652,6 +654,8 @@
           sopInstanceUid: info.sopInstanceUid
         };
       }
+
+      this.ResetAnnotationsAction();
     },
     
     ClickSeries: function(seriesIndex) {
@@ -749,6 +753,7 @@
       }
 
       this.FitContent();
+      this.ResetAnnotationsAction();
     },
 
     UpdateSeriesThumbnail: function(seriesInstanceUid) {
@@ -860,9 +865,37 @@
 
     SetMouseButtonActions: function(left, middle, right) {
       this.mouseActionsVisible = false;
+      this.annotationsBackupAction = stone.WebViewerAction.NONE;
       stone.SetMouseButtonActions(left, middle, right);
     },
 
+    SetAnnotationsAction: function(action) {
+      if (this.annotationsCurrentAction == action) {
+        this.ResetAnnotationsAction();
+      } else {
+        this.annotationsCurrentAction = action;
+
+        if (this.annotationsBackupAction == stone.WebViewerAction.NONE) {
+          this.annotationsBackupAction = stone.GetLeftMouseButtonAction();
+        }
+
+        stone.SetMouseButtonActions(action,
+                                    stone.GetMiddleMouseButtonAction(),
+                                    stone.GetRightMouseButtonAction());
+      }
+    },
+
+    ResetAnnotationsAction: function() {
+      if (this.annotationsBackupAction != stone.WebViewerAction.NONE) {
+        stone.SetMouseButtonActions(this.annotationsBackupAction,
+                                    stone.GetMiddleMouseButtonAction(),
+                                    stone.GetRightMouseButtonAction());
+      }
+
+      this.annotationsBackupAction = stone.WebViewerAction.NONE;
+      this.annotationsCurrentAction = stone.WebViewerAction.NONE;
+    },    
+
     LoadOsiriXAnnotations: function(xml, clearPrevious)
     {
       if (stone.LoadOsiriXAnnotations(xml, clearPrevious)) {
@@ -1037,6 +1070,14 @@
       var seriesInstanceUid = args.detail.seriesInstanceUid;
       that.UpdateIsSeriesComplete(studyInstanceUid, seriesInstanceUid);
     });
+
+    window.addEventListener('StoneAnnotationAdded', function() {
+      that.ResetAnnotationsAction();
+    });
+
+    window.addEventListener('StoneAnnotationRemoved', function() {
+      that.ResetAnnotationsAction();
+    });
   }
 });
 
@@ -1144,7 +1185,6 @@
 
 
 
-
 function ParseJsonWithComments(json)
 {
   if (typeof(json) == 'string') {