From ee3db7db18c173f28f2cc5388cf36000f1fb18ad Mon Sep 17 00:00:00 2001 From: Neil C Smith Date: Wed, 4 Feb 2026 11:50:17 +0000 Subject: [PATCH 1/2] Only open Favorites when a file is first opened for editing. Use TopComponent.Registry and only open Favorites on first open of a file editing component. Do not open for non-file TopComponents like Dashboard. --- .../netbeans/modules/favorites/Module.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/platform/favorites/src/org/netbeans/modules/favorites/Module.java b/platform/favorites/src/org/netbeans/modules/favorites/Module.java index 90bd2cd0159b..0726ce1ef6a0 100644 --- a/platform/favorites/src/org/netbeans/modules/favorites/Module.java +++ b/platform/favorites/src/org/netbeans/modules/favorites/Module.java @@ -32,9 +32,10 @@ import org.netbeans.swing.plaf.LFCustoms; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; +import org.openide.loaders.DataObject; import org.openide.util.NbPreferences; -import org.openide.windows.Mode; import org.openide.windows.OnShowing; +import org.openide.windows.TopComponent; import org.openide.windows.WindowManager; /** @@ -73,19 +74,20 @@ private void registerFavAppenderFunction() { UIManager.put(LFCustoms.FILECHOOSER_SHORTCUTS_FILESFUNCTION, favAppender); } - // very first on-editor-open event will also open the Favorites tab + // very first file editor opened will also open the Favorites tab private void attachFirstEditorOpenListener() { Preferences prefs = NbPreferences.forModule(Module.class); if (prefs.getBoolean(INITIAL_OPEN_DONE_KEY, false)) { return; } - WindowManager wm = WindowManager.getDefault(); - wm.addPropertyChangeListener(new PropertyChangeListener() { + TopComponent.Registry registry = TopComponent.getRegistry(); + registry.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - if ("activeMode".equals(evt.getPropertyName()) //NOI18N - && evt.getNewValue() instanceof Mode mode - && wm.isEditorMode(mode)) { + if (TopComponent.Registry.PROP_TC_OPENED.equals(evt.getPropertyName()) + && evt.getNewValue() instanceof TopComponent tc + && hasFileReference(tc) + && WindowManager.getDefault().isEditorTopComponent(tc)) { try { Tab favTab = Tab.findDefault(); if (favTab != null && !favTab.wasOpened() && !favTab.isOpened()) { @@ -95,13 +97,18 @@ public void propertyChange(PropertyChangeEvent evt) { prefs.putBoolean(INITIAL_OPEN_DONE_KEY, true); PropertyChangeListener thisListener = this; SwingUtilities.invokeLater(() -> { - wm.removePropertyChangeListener(thisListener); + registry.removePropertyChangeListener(thisListener); }); } } + } }); } + + private boolean hasFileReference(TopComponent tc) { + return tc.getLookup().lookup(DataObject.class) != null; + } } } From 0aef5059ccc84366905d64511b9fc7e07d414a7a Mon Sep 17 00:00:00 2001 From: Neil C Smith Date: Wed, 4 Feb 2026 12:08:47 +0000 Subject: [PATCH 2/2] Make initial opening of the Favorites tab easier to brand in platform. --- .../netbeans/modules/favorites/Bundle.properties | 3 +++ .../src/org/netbeans/modules/favorites/Module.java | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/platform/favorites/src/org/netbeans/modules/favorites/Bundle.properties b/platform/favorites/src/org/netbeans/modules/favorites/Bundle.properties index af71a113b450..08be9f58a4fa 100644 --- a/platform/favorites/src/org/netbeans/modules/favorites/Bundle.properties +++ b/platform/favorites/src/org/netbeans/modules/favorites/Bundle.properties @@ -50,3 +50,6 @@ OpenIDE-Module-Long-Description=Favorites module enables you to create a view of # Options Export Favorites.Options.Export.displayName=Favorites + +# Automatically open when first file opened for editing +Favorites.openOnFirstFile=true diff --git a/platform/favorites/src/org/netbeans/modules/favorites/Module.java b/platform/favorites/src/org/netbeans/modules/favorites/Module.java index 0726ce1ef6a0..80d5e7296916 100644 --- a/platform/favorites/src/org/netbeans/modules/favorites/Module.java +++ b/platform/favorites/src/org/netbeans/modules/favorites/Module.java @@ -33,6 +33,7 @@ import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.loaders.DataObject; +import org.openide.util.NbBundle; import org.openide.util.NbPreferences; import org.openide.windows.OnShowing; import org.openide.windows.TopComponent; @@ -40,17 +41,26 @@ /** * For lifecycle tasks. + * * @author mbien */ public final class Module { private static final String INITIAL_OPEN_DONE_KEY = "initial-open-done"; //NOI18N + private static final String INITIAL_OPEN_BRANDING_KEY = "Favorites.openOnFirstFile"; //NOI18N private Module() {} @OnShowing public final static class EDTInit implements Runnable { + private final boolean openOnFirstFile; + + public EDTInit() { + openOnFirstFile = Boolean.parseBoolean( + NbBundle.getMessage(Module.class, INITIAL_OPEN_BRANDING_KEY)); + } + @Override public void run() { registerFavAppenderFunction(); @@ -76,6 +86,9 @@ private void registerFavAppenderFunction() { // very first file editor opened will also open the Favorites tab private void attachFirstEditorOpenListener() { + if (!openOnFirstFile) { + return; + } Preferences prefs = NbPreferences.forModule(Module.class); if (prefs.getBoolean(INITIAL_OPEN_DONE_KEY, false)) { return;