# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /Users/mkleint/src/core-main # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: maven/src/org/netbeans/modules/maven/queries/MavenFileOwnerQueryImpl.java --- maven/src/org/netbeans/modules/maven/queries/MavenFileOwnerQueryImpl.java Base (BASE) +++ maven/src/org/netbeans/modules/maven/queries/MavenFileOwnerQueryImpl.java Locally Modified (Based On LOCAL) @@ -50,6 +50,7 @@ import java.net.URISyntaxException; import java.net.URL; import java.util.Collections; +import java.util.concurrent.atomic.AtomicReference; import java.util.logging.Level; import java.util.logging.Logger; import java.util.prefs.BackingStoreException; @@ -62,6 +63,9 @@ import org.netbeans.api.annotations.common.CheckForNull; import org.netbeans.api.project.Project; import org.netbeans.api.project.ProjectManager; +import org.netbeans.api.project.ui.OpenProjects; +import org.netbeans.api.project.ui.ProjectGroupChangeEvent; +import org.netbeans.api.project.ui.ProjectGroupChangeListener; import org.netbeans.modules.maven.NbMavenProjectImpl; import org.netbeans.modules.maven.api.NbMavenProject; import org.netbeans.modules.maven.embedder.EmbedderFactory; @@ -84,8 +88,11 @@ public class MavenFileOwnerQueryImpl implements FileOwnerQueryImplementation { private final PropertyChangeListener projectListener; + private final ProjectGroupChangeListener groupListener; private final ChangeSupport cs = new ChangeSupport(this); + private static final AtomicReference prefs = new AtomicReference(NbPreferences.forModule(MavenFileOwnerQueryImpl.class).node("externalOwners")); + private static final Logger LOG = Logger.getLogger(MavenFileOwnerQueryImpl.class.getName()); public MavenFileOwnerQueryImpl() { @@ -98,8 +105,24 @@ } } }; + groupListener = new ProjectGroupChangeListener() { + + @Override + public void projectGroupChanging(ProjectGroupChangeEvent event) { + Preferences old = prefs(); + Preferences n = event.getNewGroup() != null ? event.getNewGroup().preferencesForPackage(MavenFileOwnerQueryImpl.class).node("externalOwners") : NbPreferences.forModule(MavenFileOwnerQueryImpl.class).node("externalOwners"); + prefs.compareAndSet(old, n); } + @Override + public void projectGroupChanged(ProjectGroupChangeEvent event) { + //TODO should we check what projects were kept open and register them with current group? + } + }; + //not worth making weak, both are singletons kept forever + OpenProjects.getDefault().addProjectGroupChangeListener(groupListener); + } + public static MavenFileOwnerQueryImpl getInstance() { return Lookup.getDefault().lookup(MavenFileOwnerQueryImpl.class); } @@ -368,6 +391,6 @@ } static Preferences prefs() { - return NbPreferences.forModule(MavenFileOwnerQueryImpl.class).node("externalOwners"); // NOI18N + return prefs.get(); } }