From 0d4aa493317f3796984d4d0253144cfd80de9882 Mon Sep 17 00:00:00 2001
From: Lewin Probst <info@emirror.de>
Date: Sat, 17 Aug 2019 11:24:48 +0200
Subject: [PATCH] Added generic function to clear the selection in an edit
 window.

---
 .../applyStatusToAllPointsExceptDeleted.m     |  7 ++++---
 .../+pressure/applyStatusToSelectedPoints.m   |  6 ++----
 .../applyStatusToAllPointsExceptDeleted.m     |  6 +++---
 .../applyStatusToSelectedPoints.m             |  6 ++----
 .../applyStatusToSelectedPoints.m             |  9 +++------
 lib/+artoa/+controller/+edit/clearSelection.m | 20 +++++++++++++++++++
 6 files changed, 34 insertions(+), 20 deletions(-)
 create mode 100644 lib/+artoa/+controller/+edit/clearSelection.m

diff --git a/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPointsExceptDeleted.m b/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPointsExceptDeleted.m
index 5708a0c..c200a4b 100644
--- a/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPointsExceptDeleted.m
+++ b/lib/+artoa/+controller/+edit/+pressure/applyStatusToAllPointsExceptDeleted.m
@@ -6,7 +6,7 @@ function [] = applyStatusToAllPointsExceptDeleted(pStatus)
 %       pStatusCode (int)    The status code that will be applied to the
 %                            selected data.
 
-global artoaWorkspace;
+global artoaWorkspace artoaGui;
 
 %% Set selection
 artoaWorkspace.editPressure.selectedPoints = (artoaWorkspace.statusPressure ~= 2);
@@ -17,8 +17,9 @@ artoaWorkspace.statusPressure(artoaWorkspace.editPressure.selectedPoints) = pSta
 %% Update gui
 artoa.controller.edit.updateAvailablePlots();
 
-%% Remove the selected points from workspace
-artoaWorkspace.editPressure = rmfield(artoaWorkspace.editPressure, 'selectedPoints');
+[artoaGui.editPressure, artoaWorkspace.editPressure] = ...
+    artoa.controller.edit.clearSelection(artoaGui.editPressure, artoaWorkspace.editPressure);
+
 
 end
 
diff --git a/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m b/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m
index 7949351..ef5986d 100644
--- a/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m
+++ b/lib/+artoa/+controller/+edit/+pressure/applyStatusToSelectedPoints.m
@@ -25,11 +25,9 @@ artoaWorkspace.statusPressure(artoaWorkspace.editPressure.selectedPoints) = pSta
 
 %% Update gui
 artoa.controller.edit.updateAvailablePlots();
-delete(artoaGui.editPressure.selectedPolygon);
-artoaGui.editPressure = rmfield(artoaGui.editPressure, 'selectedPolygon');
 
-%% Remove the polygon field from workspace
-artoaWorkspace.editPressure = rmfield(artoaWorkspace.editPressure, 'selectedPoints');
+[artoaGui.editPressure, artoaWorkspace.editPressure] = ...
+    artoa.controller.edit.clearSelection(artoaGui.editPressure, artoaWorkspace.editPressure);
 
 end
 
diff --git a/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPointsExceptDeleted.m b/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPointsExceptDeleted.m
index ddf702f..557a995 100644
--- a/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPointsExceptDeleted.m
+++ b/lib/+artoa/+controller/+edit/+temperature/applyStatusToAllPointsExceptDeleted.m
@@ -6,7 +6,7 @@ function [] = applyStatusToAllPointsExceptDeleted(pStatus)
 %       pStatusCode (int)    The status code that will be applied to the
 %                            selected data.
 
-global artoaWorkspace;
+global artoaWorkspace artoaGui;
 
 %% Set selection
 artoaWorkspace.editTemperature.selectedPoints = (artoaWorkspace.statusTemperature ~= 2);
@@ -17,8 +17,8 @@ artoaWorkspace.statusTemperature(artoaWorkspace.editTemperature.selectedPoints)
 %% Update gui
 artoa.controller.edit.updateAvailablePlots();
 
-%% Remove the selected points from workspace
-artoaWorkspace.editTemperature = rmfield(artoaWorkspace.editTemperature, 'selectedPoints');
 
+[artoaGui.editTemperature, artoaWorkspace.editTemperature] = ...
+    artoa.controller.edit.clearSelection(artoaGui.editTemperature, artoaWorkspace.editTemperature);
 end
 
diff --git a/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m b/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m
index ce21de6..e549ebe 100644
--- a/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m
+++ b/lib/+artoa/+controller/+edit/+temperature/applyStatusToSelectedPoints.m
@@ -25,11 +25,9 @@ artoaWorkspace.statusTemperature(artoaWorkspace.editTemperature.selectedPoints)
 
 %% Update gui
 artoa.controller.edit.updateAvailablePlots();
-delete(artoaGui.editTemperature.selectedPolygon);
-artoaGui.editTemperature = rmfield(artoaGui.editTemperature, 'selectedPolygon');
 
-%% Remove the polygon field from workspace
-artoaWorkspace.editTemperature = rmfield(artoaWorkspace.editTemperature, 'selectedPoints');
+[artoaGui.editTemperature, artoaWorkspace.editTemperature] = ...
+    artoa.controller.edit.clearSelection(artoaGui.editTemperature, artoaWorkspace.editTemperature);
 
 end
 
diff --git a/lib/+artoa/+controller/+edit/+timeOfArrival/applyStatusToSelectedPoints.m b/lib/+artoa/+controller/+edit/+timeOfArrival/applyStatusToSelectedPoints.m
index 5d8a560..b1c6d44 100644
--- a/lib/+artoa/+controller/+edit/+timeOfArrival/applyStatusToSelectedPoints.m
+++ b/lib/+artoa/+controller/+edit/+timeOfArrival/applyStatusToSelectedPoints.m
@@ -24,12 +24,9 @@ end
 artoaWorkspace.toaData.status(artoaWorkspace.editTimeOfArrival.selectedPoints) = pStatusCode;
 
 %% Update gui
-artoa.controller.edit.timeOfArrival.plot();
-delete(artoaGui.editTimeOfArrival.selectedPolygon);
-artoaGui.editTimeOfArrival = rmfield(artoaGui.editTimeOfArrival, 'selectedPolygon');
-
-%% Remove the polygon field from workspace
-artoaWorkspace.editTimeOfArrival = rmfield(artoaWorkspace.editTimeOfArrival, 'selectedPoints');
+artoa.controller.edit.updateAvailablePlots();
 
+[artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival] = ...
+    artoa.controller.edit.clearSelection(artoaGui.editTimeOfArrival, artoaWorkspace.editTimeOfArrival);
 end
 
diff --git a/lib/+artoa/+controller/+edit/clearSelection.m b/lib/+artoa/+controller/+edit/clearSelection.m
new file mode 100644
index 0000000..721e7ea
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/clearSelection.m
@@ -0,0 +1,20 @@
+function [guiHandle, workspaceStruct] = clearSelection(pGuiHandle, pWorkspaceStruct)
+%CLEARSELECTION If the fields in the given parameters are available, they will be deleted.
+%   
+
+guiHandle = pGuiHandle;
+workspaceStruct = pWorkspaceStruct;
+
+%% Remove polygon from gui
+if isfield(guiHandle, 'selectedPolygon')
+    delete(guiHandle.selectedPolygon);
+    guiHandle = rmfield(guiHandle, 'selectedPolygon');
+end
+
+%% Remove the polygon field from workspace
+if (isfield(workspaceStruct, 'selectedPoints'))
+    workspaceStruct = rmfield(workspaceStruct, 'selectedPoints');
+end
+
+end
+
-- 
GitLab