From f563272ed713b180cccae7cd2b59cedcb2fe332c Mon Sep 17 00:00:00 2001
From: Lewin Probst <info@emirror.de>
Date: Sun, 28 Jun 2020 13:26:13 +0200
Subject: [PATCH] The soundsource combination panel now shows the segment color
 as background if the "Update track parameter" is enabled in trajectory
 output.

---
 VERSION                                       |  2 +-
 .../+parameter/addSoundsourceCombination.m    |  4 ++
 .../addSoundsourceCombinationAbove.m          |  4 ++
 .../adjustTableColorsToTrajectory.m           | 25 ++++++++
 .../duplicateSoundsourceCombination.m         |  4 ++
 .../+parameter/removeSoundsourceCombination.m |  4 ++
 .../+parameter/resetSoundsourceCombinations.m |  4 ++
 .../+controller/+track/+parameter/updateGui.m |  8 +++
 .../+track/+trajectoryOutput/open.m           | 52 +---------------
 .../+track/+trajectoryOutput/updateGui.m      | 60 +++++++++++++++++++
 10 files changed, 115 insertions(+), 52 deletions(-)
 create mode 100644 lib/+artoa/+controller/+track/+parameter/adjustTableColorsToTrajectory.m
 create mode 100644 lib/+artoa/+controller/+track/+trajectoryOutput/updateGui.m

diff --git a/VERSION b/VERSION
index 9754915..ddc17b2 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-259
\ No newline at end of file
+260
\ No newline at end of file
diff --git a/lib/+artoa/+controller/+track/+parameter/addSoundsourceCombination.m b/lib/+artoa/+controller/+track/+parameter/addSoundsourceCombination.m
index 7ece7da..af87383 100644
--- a/lib/+artoa/+controller/+track/+parameter/addSoundsourceCombination.m
+++ b/lib/+artoa/+controller/+track/+parameter/addSoundsourceCombination.m
@@ -5,6 +5,9 @@ function [] = addSoundsourceCombination(~, ~)
 
 global artoaWorkspace;
 
+%% Disable updating of track parameter
+artoaWorkspace.trajectoryOutput.updateTrackParameterWindow = false;
+
 %% Insert default content
 artoaWorkspace.trackParameter.soundsourceCombinations(end + 1, :) = artoa.controller.track.parameter.getDefaultCombinationCell();
 try
@@ -14,6 +17,7 @@ end
 
 %% Update gui
 artoa.controller.track.parameter.updateGui();
+artoa.controller.track.trajectoryOutput.updateGui();
 
 end
 
diff --git a/lib/+artoa/+controller/+track/+parameter/addSoundsourceCombinationAbove.m b/lib/+artoa/+controller/+track/+parameter/addSoundsourceCombinationAbove.m
index 9da8cec..f2b2cd1 100644
--- a/lib/+artoa/+controller/+track/+parameter/addSoundsourceCombinationAbove.m
+++ b/lib/+artoa/+controller/+track/+parameter/addSoundsourceCombinationAbove.m
@@ -5,6 +5,9 @@ function [] = addSoundsourceCombinationAbove(~, ~)
 
 global artoaWorkspace;
 
+%% Disable updating of track parameter
+artoaWorkspace.trajectoryOutput.updateTrackParameterWindow = false;
+
 %% Get selection
 selectedRow = artoaWorkspace.trackParameter.selectedSoundsourceCombinationRow;
 %% Get current data
@@ -33,6 +36,7 @@ artoaWorkspace.trackParameter.soundsourceCombinations = combinations;
 
 %% Update gui
 artoa.controller.track.parameter.updateGui();
+artoa.controller.track.trajectoryOutput.updateGui();
 
 
 end
diff --git a/lib/+artoa/+controller/+track/+parameter/adjustTableColorsToTrajectory.m b/lib/+artoa/+controller/+track/+parameter/adjustTableColorsToTrajectory.m
new file mode 100644
index 0000000..fcaf3f5
--- /dev/null
+++ b/lib/+artoa/+controller/+track/+parameter/adjustTableColorsToTrajectory.m
@@ -0,0 +1,25 @@
+function [] = adjustTableColorsToTrajectory(pTrajectory)
+%ADJUSTTABLECOLORSTOTRAJECTORY Summary of this function goes here
+%   Detailed explanation goes here
+
+global artoaGui artoaWorkspace;
+
+if nargin == 0 | ~artoaWorkspace.trajectoryOutput.updateTrackParameterWindow
+    artoaGui.trackParameter.tableSoundSourceCombinations.BackgroundColor = [1 1 1];
+    return;
+end
+
+
+%% Get required variables
+segmentCount = length(pTrajectory.segmentSize);
+
+%% Get colors
+trajectoryColors = fliplr(jet(round(length(pTrajectory.segmentSize) * 1.5)));
+
+colorArray = trajectoryColors(1:segmentCount, :);
+
+%% Update table
+artoaGui.trackParameter.tableSoundSourceCombinations.BackgroundColor = colorArray;
+
+end
+
diff --git a/lib/+artoa/+controller/+track/+parameter/duplicateSoundsourceCombination.m b/lib/+artoa/+controller/+track/+parameter/duplicateSoundsourceCombination.m
index 93b8959..1267e6a 100644
--- a/lib/+artoa/+controller/+track/+parameter/duplicateSoundsourceCombination.m
+++ b/lib/+artoa/+controller/+track/+parameter/duplicateSoundsourceCombination.m
@@ -5,6 +5,9 @@ function [] = duplicateSoundsourceCombination(~, ~)
 
 global artoaWorkspace artoaGui;
 
+%% Disable updating of track parameter
+artoaWorkspace.trajectoryOutput.updateTrackParameterWindow = false;
+
 %% Get column count
 columnCount = size(artoaWorkspace.trackParameter.soundsourceCombinations, 2);
 %% Get selection
@@ -22,6 +25,7 @@ artoaWorkspace.trackParameter.soundsourceCombinations = combinationTable;
 
 %% Update gui
 artoa.controller.track.parameter.updateGui();
+artoa.controller.track.trajectoryOutput.updateGui();
 
 
 end
diff --git a/lib/+artoa/+controller/+track/+parameter/removeSoundsourceCombination.m b/lib/+artoa/+controller/+track/+parameter/removeSoundsourceCombination.m
index 3bb108d..b6370d6 100644
--- a/lib/+artoa/+controller/+track/+parameter/removeSoundsourceCombination.m
+++ b/lib/+artoa/+controller/+track/+parameter/removeSoundsourceCombination.m
@@ -5,6 +5,9 @@ function [] = removeSoundsourceCombination(~, ~)
 
 global artoaWorkspace;
 
+%% Disable updating of track parameter
+artoaWorkspace.trajectoryOutput.updateTrackParameterWindow = false;
+
 if ~artoa.data.hasMember(artoaWorkspace, 'trackParameter', 'selectedSoundsourceCombinationRow')
     return;
 end
@@ -17,6 +20,7 @@ artoaWorkspace.trackParameter.soundsourceCombinations(selectedRow, :) = [];
 
 %% Update gui
 artoa.controller.track.parameter.updateGui();
+artoa.controller.track.trajectoryOutput.updateGui();
 
 
 end
diff --git a/lib/+artoa/+controller/+track/+parameter/resetSoundsourceCombinations.m b/lib/+artoa/+controller/+track/+parameter/resetSoundsourceCombinations.m
index caba421..8a6b024 100644
--- a/lib/+artoa/+controller/+track/+parameter/resetSoundsourceCombinations.m
+++ b/lib/+artoa/+controller/+track/+parameter/resetSoundsourceCombinations.m
@@ -8,6 +8,9 @@ if strcmp(questdlg('Reset all combinations?', 'Confirmation', 'Yes', 'Cancel', '
     return;
 end
 
+%% Disable updating of track parameter
+artoaWorkspace.trajectoryOutput.updateTrackParameterWindow = false;
+
 %% Delete from workspace
 artoaWorkspace.trackParameter.soundsourceCombinations = ...
     artoa.controller.track.parameter.createCombinationsTable( ...
@@ -16,6 +19,7 @@ artoaWorkspace.trackParameter.soundsourceCombinations = ...
 
 %% Update gui
 artoa.controller.track.parameter.updateGui();
+artoa.controller.track.trajectoryOutput.updateGui();
 
 end
 
diff --git a/lib/+artoa/+controller/+track/+parameter/updateGui.m b/lib/+artoa/+controller/+track/+parameter/updateGui.m
index 71737b2..8efb53a 100644
--- a/lib/+artoa/+controller/+track/+parameter/updateGui.m
+++ b/lib/+artoa/+controller/+track/+parameter/updateGui.m
@@ -35,5 +35,13 @@ for i = 1:length(fieldNames)
     end
 end
 
+if ~isnan(artoa.data.getMember(artoaWorkspace, {'trajectoryOutput', 'tableGeneratedTracksSelectedRow'}, NaN))
+    artoa.controller.track.parameter.adjustTableColorsToTrajectory( ...
+        artoaWorkspace.trajectoryOutput.trajectories{artoaWorkspace.trajectoryOutput.tableGeneratedTracksSelectedRow} ...
+        );
+else 
+    artoa.controller.track.parameter.adjustTableColorsToTrajectory();
+end
+
 end
 
diff --git a/lib/+artoa/+controller/+track/+trajectoryOutput/open.m b/lib/+artoa/+controller/+track/+trajectoryOutput/open.m
index 965e3c0..633a7e2 100644
--- a/lib/+artoa/+controller/+track/+trajectoryOutput/open.m
+++ b/lib/+artoa/+controller/+track/+trajectoryOutput/open.m
@@ -65,58 +65,8 @@ artoaGui.trajectoryOutput.syncZoomToaWindow.xlistener = addlistener( ...
     @artoa.controller.track.trajectoryOutput.syncZoomToaWindow ...
 );
 
-%% Update table of generated tracks
-artoa.controller.track.trajectoryOutput.updateTableGeneratedTracks();
-
 %% Update gui
-if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'updateTrackParameterWindow'})
-    artoaGui.trajectoryOutput.checkboxUpdateTrackParameterWindow.Value = ...
-        artoaWorkspace.trajectoryOutput.updateTrackParameterWindow;
-else
-    artoaGui.trajectoryOutput.checkboxUpdateTrackParameterWindow.Value = false;
-end
-if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'showPositionDates'})
-    artoaGui.trajectoryOutput.checkboxShowPositionDates.Value = ...
-        artoaWorkspace.trajectoryOutput.showPositionDates;
-else
-    artoaGui.trajectoryOutput.checkboxShowPositionDates.Value = true;
-end
-if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'enableMercatorProjection'})
-    artoaGui.trajectoryOutput.checkboxMercator.Value = ...
-        artoaWorkspace.trajectoryOutput.enableMercatorProjection;
-else
-    artoaGui.trajectoryOutput.checkboxMercator.Value = false;
-end
-if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'enableTrueDistance'})
-    artoaGui.trajectoryOutput.checkboxTrueDistance.Value = ...
-        artoaWorkspace.trajectoryOutput.enableTrueDistance;
-else
-    artoaGui.trajectoryOutput.checkboxTrueDistance.Value = false;
-end
-if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'syncZoomToaWindow'})
-    artoaGui.trajectoryOutput.checkboxSynchronizeZoomToaWindow.Value = ...
-        artoaWorkspace.trajectoryOutput.syncZoomToaWindow;
-else
-    artoaGui.trajectoryOutput.checkboxSynchronizeZoomToaWindow.Value = false;
-end
-if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'showTopographicalLines'})
-    artoaGui.trajectoryOutput.checkboxShowTopographicalLines.Value = ...
-        artoaWorkspace.trajectoryOutput.showTopographicalLines;
-else
-    artoaGui.trajectoryOutput.checkboxShowTopographicalLines.Value = false;
-end
-if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'topographicalLines'})
-    artoaGui.trajectoryOutput.tableTopographicalLines.Data = ...
-        artoaWorkspace.trajectoryOutput.topographicalLines;
-else
-    artoaGui.trajectoryOutput.checkboxShowTopographicalLines.Value = false;
-end
-if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'showErrorEllipses'})
-    artoaGui.trajectoryOutput.checkboxShowErrorEllipses.Value = ...
-        artoaWorkspace.trajectoryOutput.showErrorEllipses;
-else
-    artoaGui.trajectoryOutput.checkboxShowErrorEllipses.Value = false;
-end
+artoa.controller.track.trajectoryOutput.updateGui();
 
 %% Plot everything available
 artoa.controller.track.trajectoryOutput.plot(artoaWorkspace.trajectoryOutput.enableMercatorProjection);
diff --git a/lib/+artoa/+controller/+track/+trajectoryOutput/updateGui.m b/lib/+artoa/+controller/+track/+trajectoryOutput/updateGui.m
new file mode 100644
index 0000000..402917c
--- /dev/null
+++ b/lib/+artoa/+controller/+track/+trajectoryOutput/updateGui.m
@@ -0,0 +1,60 @@
+function [] = updateGui()
+%UPDATEGUI Summary of this function goes here
+%   Detailed explanation goes here
+
+global artoaWorkspace artoaGui;
+
+if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'updateTrackParameterWindow'})
+    artoaGui.trajectoryOutput.checkboxUpdateTrackParameterWindow.Value = ...
+        artoaWorkspace.trajectoryOutput.updateTrackParameterWindow;
+else
+    artoaGui.trajectoryOutput.checkboxUpdateTrackParameterWindow.Value = false;
+end
+if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'showPositionDates'})
+    artoaGui.trajectoryOutput.checkboxShowPositionDates.Value = ...
+        artoaWorkspace.trajectoryOutput.showPositionDates;
+else
+    artoaGui.trajectoryOutput.checkboxShowPositionDates.Value = true;
+end
+if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'enableMercatorProjection'})
+    artoaGui.trajectoryOutput.checkboxMercator.Value = ...
+        artoaWorkspace.trajectoryOutput.enableMercatorProjection;
+else
+    artoaGui.trajectoryOutput.checkboxMercator.Value = false;
+end
+if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'enableTrueDistance'})
+    artoaGui.trajectoryOutput.checkboxTrueDistance.Value = ...
+        artoaWorkspace.trajectoryOutput.enableTrueDistance;
+else
+    artoaGui.trajectoryOutput.checkboxTrueDistance.Value = false;
+end
+if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'syncZoomToaWindow'})
+    artoaGui.trajectoryOutput.checkboxSynchronizeZoomToaWindow.Value = ...
+        artoaWorkspace.trajectoryOutput.syncZoomToaWindow;
+else
+    artoaGui.trajectoryOutput.checkboxSynchronizeZoomToaWindow.Value = false;
+end
+if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'showTopographicalLines'})
+    artoaGui.trajectoryOutput.checkboxShowTopographicalLines.Value = ...
+        artoaWorkspace.trajectoryOutput.showTopographicalLines;
+else
+    artoaGui.trajectoryOutput.checkboxShowTopographicalLines.Value = false;
+end
+if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'topographicalLines'})
+    artoaGui.trajectoryOutput.tableTopographicalLines.Data = ...
+        artoaWorkspace.trajectoryOutput.topographicalLines;
+else
+    artoaGui.trajectoryOutput.checkboxShowTopographicalLines.Value = false;
+end
+if artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'showErrorEllipses'})
+    artoaGui.trajectoryOutput.checkboxShowErrorEllipses.Value = ...
+        artoaWorkspace.trajectoryOutput.showErrorEllipses;
+else
+    artoaGui.trajectoryOutput.checkboxShowErrorEllipses.Value = false;
+end
+
+%% Update table of generated tracks
+artoa.controller.track.trajectoryOutput.updateTableGeneratedTracks();
+
+end
+
-- 
GitLab