This is an automated email from the ASF dual-hosted git repository.

shl pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new aa0a5c2269 Allow terminating the shell's closed event for ScriptValues 
& UserDefinedJavaClass transforms
     new 29f0bee5ce Merge pull request #4910 from shl/main
aa0a5c2269 is described below

commit aa0a5c2269233a1c2941df17b8a0327f662dd3c3
Author: Shl Xue <[email protected]>
AuthorDate: Tue Feb 25 10:02:31 2025 +0800

    Allow terminating the shell's closed event for ScriptValues & 
UserDefinedJavaClass transforms
---
 .../userdefinedjavaclass/UserDefinedJavaClassDialog.java   |  2 +-
 .../pipeline/transforms/javascript/ScriptValuesDialog.java |  2 +-
 .../java/org/apache/hop/ui/core/dialog/BaseDialog.java     | 14 +++++++++++++-
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git 
a/plugins/transforms/janino/src/main/java/org/apache/hop/pipeline/transforms/userdefinedjavaclass/UserDefinedJavaClassDialog.java
 
b/plugins/transforms/janino/src/main/java/org/apache/hop/pipeline/transforms/userdefinedjavaclass/UserDefinedJavaClassDialog.java
index 4f60f4baa5..864b1fbb36 100644
--- 
a/plugins/transforms/janino/src/main/java/org/apache/hop/pipeline/transforms/userdefinedjavaclass/UserDefinedJavaClassDialog.java
+++ 
b/plugins/transforms/janino/src/main/java/org/apache/hop/pipeline/transforms/userdefinedjavaclass/UserDefinedJavaClassDialog.java
@@ -530,7 +530,7 @@ public class UserDefinedJavaClassDialog extends 
BaseTransformDialog {
           }
         });
 
-    BaseDialog.defaultShellHandling(shell, c -> ok(), c -> cancel());
+    BaseDialog.defaultShellHandling(shell, c -> ok(), this::cancel);
 
     return transformName;
   }
diff --git 
a/plugins/transforms/javascript/src/main/java/org/apache/hop/pipeline/transforms/javascript/ScriptValuesDialog.java
 
b/plugins/transforms/javascript/src/main/java/org/apache/hop/pipeline/transforms/javascript/ScriptValuesDialog.java
index 6afa34cdf3..4d07a21045 100644
--- 
a/plugins/transforms/javascript/src/main/java/org/apache/hop/pipeline/transforms/javascript/ScriptValuesDialog.java
+++ 
b/plugins/transforms/javascript/src/main/java/org/apache/hop/pipeline/transforms/javascript/ScriptValuesDialog.java
@@ -578,7 +578,7 @@ public class ScriptValuesDialog extends BaseTransformDialog 
{
           }
         });
 
-    BaseDialog.defaultShellHandling(shell, c -> ok(), c -> cancel());
+    BaseDialog.defaultShellHandling(shell, c -> ok(), this::cancel);
 
     return transformName;
   }
diff --git a/ui/src/main/java/org/apache/hop/ui/core/dialog/BaseDialog.java 
b/ui/src/main/java/org/apache/hop/ui/core/dialog/BaseDialog.java
index 1bfaadf7dc..0529e2f518 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/dialog/BaseDialog.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/dialog/BaseDialog.java
@@ -21,6 +21,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.function.Consumer;
+import java.util.function.Supplier;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.vfs2.FileObject;
@@ -500,10 +501,21 @@ public abstract class BaseDialog extends Dialog {
    */
   public static void defaultShellHandling(
       Shell shell, Consumer<Void> okConsumer, Consumer<Void> cancelConsumer) {
+    defaultShellHandling(
+        shell,
+        okConsumer,
+        () -> {
+          cancelConsumer.accept(null);
+          return true;
+        });
+  }
+
+  public static void defaultShellHandling(
+      Shell shell, Consumer<Void> okConsumer, Supplier<Boolean> 
cancelSupplier) {
 
     // If the shell is closed, cancel the dialog
     //
-    shell.addListener(SWT.Close, e -> cancelConsumer.accept(null));
+    shell.addListener(SWT.Close, e -> e.doit = cancelSupplier.get());
 
     // Check for enter being pressed in text input fields
     //

Reply via email to