From 67c5aa31db64ec19847d73f2cdc866e87ffe0b89 Mon Sep 17 00:00:00 2001 From: Neil C Smith Date: Tue, 23 Jun 2026 09:47:44 +0100 Subject: [PATCH] Open files from imported projects on first run after update. --- .../modules/project/ui/OpenProjectList.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/ide/projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java b/ide/projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java index e505183f69d5..f7c92e9e35ed 100644 --- a/ide/projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java +++ b/ide/projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java @@ -56,6 +56,7 @@ import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; +import java.util.prefs.Preferences; import javax.swing.Icon; import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.annotations.common.NullAllowed; @@ -428,15 +429,37 @@ private void updateGlobalState() { } }); - INSTANCE.pchSupport.firePropertyChange(PROPERTY_OPEN_PROJECTS, new Project[0], lazilyOpenedProjects.toArray(new Project[0])); + Project[] opened = lazilyOpenedProjects.toArray(Project[]::new); + INSTANCE.pchSupport.firePropertyChange(PROPERTY_OPEN_PROJECTS, new Project[0], opened); Project main = INSTANCE.mainProject; if (main != null) { // else PROPERTY_MAIN_PROJECT would be fired spuriously INSTANCE.pchSupport.firePropertyChange(PROPERTY_MAIN_PROJECT, null, main); } + if (checkFirstRun() && opened.length > 0) { + OPENING_RP.execute(() -> { + for (Project p : opened) { + Project del = p.getLookup().lookup(Project.class); + ProjectUtilities.openProjectFiles(del == null ? p : del); + } + }); + } + log(Level.FINER, "updateGlobalState, done, notified"); // NOI18N } + private boolean checkFirstRun() { + Preferences prefs = OpenProjectListSettings.getInstance().getPreferences(); + String prefKey = "projectListVersion"; // NOI18N + String build = System.getProperty("netbeans.buildnumber", "0"); // NOI18N + if (!prefs.get(prefKey, "").equals(build)) { + prefs.put(prefKey, build); + return true; + } else { + return false; + } + } + boolean closeBeforeOpen(final Project[] arr) { return OpenProjectList.MUTEX.writeAccess(new Mutex.Action() { public @Override Boolean run() {