From d1b324d62eeabe20e455f30f43e3ba488b49c8a9 Mon Sep 17 00:00:00 2001
From: "specgui@pc-e3-qsk-15" <specgui@pc-e3-qsk-15>
Date: Fri, 4 Aug 2023 15:01:25 +0200
Subject: [PATCH] add start trigger to tab context menu

---
 src/imageProc/core/swt/TabFolderMenu.java | 32 ++++++++++++++++++++---
 1 file changed, 29 insertions(+), 3 deletions(-)

diff --git a/src/imageProc/core/swt/TabFolderMenu.java b/src/imageProc/core/swt/TabFolderMenu.java
index b381a3da..0a2e1e5d 100644
--- a/src/imageProc/core/swt/TabFolderMenu.java
+++ b/src/imageProc/core/swt/TabFolderMenu.java
@@ -23,7 +23,7 @@ public class TabFolderMenu {
 	private ImageWindow imgWin;
 
 	/** Things for context-menu on tab folder headers */
-	private MenuItem tabMenuItemShowAsOther, tabMenuItemAbort, tabMenuItemRemove, tabMenuItemReload;
+	private MenuItem tabMenuItemShowAsOther, tabMenuItemStart, tabMenuItemAbort, tabMenuItemRemove, tabMenuItemReload;
 	private int lastTabClickX = 0, lastTabClickY = 0;
 	private CTabItem tabMenuSelectedTab = null;
 	
@@ -46,6 +46,11 @@ public class TabFolderMenu {
         tabMenuItemShowAsOther.setToolTipText("Shows/opens the window in which this source/sink is a sink/source. Only applicable for 'pipes' (things that are both a source and sink)");
         tabMenuItemShowAsOther.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(Event event) { tabShowEvent(event); }});
 
+        tabMenuItemStart = new MenuItem(sinkMenu, SWT.CASCADE);
+        tabMenuItemStart.setText("Start");
+        tabMenuItemStart.setToolTipText("Signal start to only this module.");
+        tabMenuItemStart.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(Event event) { tabStartEvent(event); }});
+        
         tabMenuItemAbort = new MenuItem(sinkMenu, SWT.CASCADE);
         tabMenuItemAbort.setText("Abort");
         tabMenuItemAbort.setToolTipText("Signal abort to only this module.");
@@ -92,6 +97,7 @@ public class TabFolderMenu {
 		
 		tabMenuItemShowAsOther.setEnabled(false);
 		tabMenuItemShowAsOther.setText("Show other window ...");
+		tabMenuItemStart.setEnabled(false);
 		tabMenuItemAbort.setEnabled(false);
 		tabMenuItemRemove.setEnabled(false);
 		tabMenuItemReload.setEnabled(false);
@@ -99,8 +105,12 @@ public class TabFolderMenu {
 		if(tabMenuSelectedTab == imgWin.getInfoTab()) {
 			//leav all disabled
 		}else if(tabMenuSelectedTab == imgWin.getSourceTab()) {
-			tabMenuItemAbort.setEnabled(true);			
 			tabMenuItemReload.setEnabled(true);
+
+			if(imgWin.getConnectedSource() instanceof EventReciever) {
+				tabMenuItemStart.setEnabled(true);
+				tabMenuItemAbort.setEnabled(true);
+			}
 			
 			if(imgWin.getConnectedSource() instanceof ImgSink) {
 				tabMenuItemShowAsOther.setEnabled(true);
@@ -115,9 +125,12 @@ public class TabFolderMenu {
 				tabMenuItemRemove.setEnabled(true);
 				tabMenuItemReload.setEnabled(true);
 			}
+
 			
-			if(tabMenuSelectedTab.getData() instanceof EventReciever)
+			if(tabMenuSelectedTab.getData() instanceof EventReciever) {
+				tabMenuItemStart.setEnabled(true);
 				tabMenuItemAbort.setEnabled(true);
+			}
 			
 			if(tabMenuSelectedTab.getData() instanceof ImgSource) {
 				tabMenuItemShowAsOther.setEnabled(true);
@@ -139,6 +152,19 @@ public class TabFolderMenu {
 			((ImgPipe)tabMenuSelectedTab.getData()).destroy();
 	}
 
+	protected void tabStartEvent(Event event) {
+		if(tabMenuSelectedTab == null)
+			return;
+		
+		if(tabMenuSelectedTab == imgWin.getSourceTab() && imgWin.getConnectedSource() != null && imgWin.getConnectedSource() instanceof EventReciever) {
+			((EventReciever)imgWin.getConnectedSource()).event(EventReciever.Event.GlobalStart);
+			
+		}else if(tabMenuSelectedTab.getData() != null && tabMenuSelectedTab.getData() instanceof EventReciever) {
+			((EventReciever)tabMenuSelectedTab.getData()).event(EventReciever.Event.GlobalStart);				
+		}		
+	}
+
+
 	protected void tabAbortEvent(Event event) {
 		if(tabMenuSelectedTab == null)
 			return;
-- 
GitLab