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

hansva 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 863f71b663 Use original name when using save as, fixes #6330 (#6335)
863f71b663 is described below

commit 863f71b663e1813f0aeccaff075b774aa658eebd
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Sun Jan 11 21:26:59 2026 +0100

    Use original name when using save as, fixes #6330 (#6335)
---
 .../org/apache/hop/ui/core/dialog/BaseDialog.java  | 66 ++++++++++++++++++----
 1 file changed, 55 insertions(+), 11 deletions(-)

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 c197322696..ba607fd2c9 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
@@ -356,13 +356,40 @@ public abstract class BaseDialog extends Dialog {
             fileObject = null;
           }
         } else {
-
-          // Take the first extension with "filename" prepended
+          // If fileObject is provided, try to extract the filename from it
           //
-          if (filterExtensions != null && filterExtensions.length > 0) {
-            String filterExtension = filterExtensions[0];
-            String extension = 
filterExtension.substring(filterExtension.lastIndexOf("."));
-            vfsDialog.setSaveFilename("filename" + extension);
+          try {
+            if (fileObject != null) {
+              String baseName = fileObject.getName().getBaseName();
+              // Check if this looks like a file (has content and possibly an 
extension)
+              // rather than a folder. Even non-existent files should have a 
basename.
+              if (StringUtils.isNotEmpty(baseName)) {
+                vfsDialog.setSaveFilename(baseName);
+              } else {
+                // Take the first extension with "filename" prepended
+                //
+                if (filterExtensions != null && filterExtensions.length > 0) {
+                  String filterExtension = filterExtensions[0];
+                  String extension = 
filterExtension.substring(filterExtension.lastIndexOf("."));
+                  vfsDialog.setSaveFilename("filename" + extension);
+                }
+              }
+            } else {
+              // Take the first extension with "filename" prepended
+              //
+              if (filterExtensions != null && filterExtensions.length > 0) {
+                String filterExtension = filterExtensions[0];
+                String extension = 
filterExtension.substring(filterExtension.lastIndexOf("."));
+                vfsDialog.setSaveFilename("filename" + extension);
+              }
+            }
+          } catch (Exception e) {
+            // If there's an error checking fileObject, fall back to default
+            if (filterExtensions != null && filterExtensions.length > 0) {
+              String filterExtension = filterExtensions[0];
+              String extension = 
filterExtension.substring(filterExtension.lastIndexOf("."));
+              vfsDialog.setSaveFilename("filename" + extension);
+            }
           }
         }
       }
@@ -397,14 +424,31 @@ public abstract class BaseDialog extends Dialog {
     }
 
     if (fileObject != null) {
-      dialog.setFileName(HopVfs.getFilename(fileObject));
       try {
-        if (fileObject.isFile()) {
-          dialog.setFilterPath(HopVfs.getFilename(fileObject.getParent()));
+        if (save) {
+          // For save dialogs, we've already set saveFilename above
+          // Just set the filter path to the parent directory
+          if (fileObject.isFile()) {
+            dialog.setFilterPath(HopVfs.getFilename(fileObject.getParent()));
+          } else {
+            // If it doesn't exist or is a folder, try to get the parent
+            FileObject parent = fileObject.getParent();
+            if (parent != null && parent.exists()) {
+              dialog.setFilterPath(HopVfs.getFilename(parent));
+            } else {
+              // Fall back to the fileObject itself
+              dialog.setFilterPath(HopVfs.getFilename(fileObject));
+            }
+          }
         } else {
-          dialog.setFilterPath(HopVfs.getFilename(fileObject));
+          // For open dialogs, set fileName to navigate to that location
+          dialog.setFileName(HopVfs.getFilename(fileObject));
+          if (fileObject.isFile()) {
+            dialog.setFilterPath(HopVfs.getFilename(fileObject.getParent()));
+          } else {
+            dialog.setFilterPath(HopVfs.getFilename(fileObject));
+          }
         }
-
       } catch (FileSystemException fse) {
         // This wasn't a valid filename, ignore the error to reduce spamming
       }

Reply via email to