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

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


The following commit(s) were added to refs/heads/master by this push:
     new 9356ec1e58 Add file history to vfs-dialog, fixes #2222
     new a61e8d6fad Merge pull request #3101 from 
hansva/#2222-remember-filebrowser-location
9356ec1e58 is described below

commit 9356ec1e58e39f6e49ca8d413cebc96e3ce74728
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Mon Jul 24 11:54:46 2023 +0200

    Add file history to vfs-dialog, fixes #2222
---
 .../hop/projects/xp/HopGuiFileDefaultFolder.java   | 58 +++++++++++++++++-----
 .../main/java/org/apache/hop/ui/core/PropsUi.java  |  2 -
 2 files changed, 45 insertions(+), 15 deletions(-)

diff --git 
a/plugins/misc/projects/src/main/java/org/apache/hop/projects/xp/HopGuiFileDefaultFolder.java
 
b/plugins/misc/projects/src/main/java/org/apache/hop/projects/xp/HopGuiFileDefaultFolder.java
index cf6ad10137..eaf5049e5c 100644
--- 
a/plugins/misc/projects/src/main/java/org/apache/hop/projects/xp/HopGuiFileDefaultFolder.java
+++ 
b/plugins/misc/projects/src/main/java/org/apache/hop/projects/xp/HopGuiFileDefaultFolder.java
@@ -17,42 +17,74 @@
 
 package org.apache.hop.projects.xp;
 
+import java.util.ArrayList;
 import org.apache.hop.core.extension.IExtensionPoint;
 import org.apache.hop.core.logging.ILogChannel;
+import org.apache.hop.core.logging.LogChannel;
 import org.apache.hop.core.util.StringUtil;
 import org.apache.hop.core.variables.IVariables;
+import org.apache.hop.history.AuditList;
+import org.apache.hop.history.AuditManager;
 import org.apache.hop.projects.config.ProjectsConfig;
 import org.apache.hop.projects.config.ProjectsConfigSingleton;
 import org.apache.hop.projects.project.ProjectConfig;
+import org.apache.hop.ui.core.PropsUi;
 import org.apache.hop.ui.core.dialog.IFileDialog;
 import org.apache.hop.ui.core.gui.HopNamespace;
+import org.apache.hop.ui.hopgui.HopGui;
 import org.apache.hop.ui.hopgui.delegates.HopGuiFileDialogExtension;
 
 public class HopGuiFileDefaultFolder implements 
IExtensionPoint<HopGuiFileDialogExtension> {
 
+  public static final String BOOKMARKS_AUDIT_TYPE = "vfs-bookmarks";
+
   @Override
   public void callExtensionPoint(
       ILogChannel log, IVariables variables, HopGuiFileDialogExtension ext) {
 
-    // Is there an active project?
-    //
+    // return if no projectname
     String projectName = HopNamespace.getNamespace();
     if (StringUtil.isEmpty(projectName)) {
       return;
     }
+
+    ProjectsConfig config = ProjectsConfigSingleton.getConfig();
+    ProjectConfig projectConfig = config.findProjectConfig(projectName);
+    // return if no projectConfig is found
+    if (projectConfig == null) {
+      return;
+    }
+
+    // Get last known location from audit history
+    PropsUi props = PropsUi.getInstance();
+    String usedNamespace;
+    java.util.List<String> navigationHistory;
+    int navigationIndex;
+    String filterPath;
+
+    if (props.useGlobalFileBookmarks()) {
+      usedNamespace = HopGui.DEFAULT_HOP_GUI_NAMESPACE;
+    } else {
+      usedNamespace = HopNamespace.getNamespace();
+    }
+
     try {
-      ProjectsConfig config = ProjectsConfigSingleton.getConfig();
-      ProjectConfig projectConfig = config.findProjectConfig(projectName);
-      if (projectConfig == null) {
-        return;
-      }
-      String homeFolder = projectConfig.getProjectHome();
-      if (homeFolder != null) {
-        IFileDialog dialog = ext.getFileDialog();
-        dialog.setFilterPath(homeFolder);
-      }
+      AuditList auditList =
+          AuditManager.getActive().retrieveList(usedNamespace, 
BOOKMARKS_AUDIT_TYPE);
+      navigationHistory = auditList.getNames();
     } catch (Exception e) {
-      log.logError("Error setting default folder for project " + projectName, 
e);
+      LogChannel.GENERAL.logError("Error loading navigation history", e);
+      navigationHistory = new ArrayList<>();
     }
+
+    if (!navigationHistory.isEmpty()) {
+      navigationIndex = navigationHistory.size() - 1;
+      filterPath = navigationHistory.get(navigationIndex);
+    } else {
+      filterPath = projectConfig.getProjectHome();
+    }
+
+    IFileDialog dialog = ext.getFileDialog();
+    dialog.setFilterPath(filterPath);
   }
 }
diff --git a/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java 
b/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
index 81103f9390..97f49df384 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
@@ -213,8 +213,6 @@ public class PropsUi extends Props {
       setProperty(STRING_LINE_WIDTH, "" + getLineWidth());
       setProperty(STRING_MAX_UNDO, "" + getMaxUndo());
     }
-
-    setUseGlobalFileBookmarks(true);
   }
 
   public void setFixedFont(FontData fd) {

Reply via email to