Lines 50-55
Link Here
|
50 |
import java.net.URISyntaxException; |
50 |
import java.net.URISyntaxException; |
51 |
import java.net.URL; |
51 |
import java.net.URL; |
52 |
import java.util.Collections; |
52 |
import java.util.Collections; |
|
|
53 |
import java.util.concurrent.atomic.AtomicReference; |
53 |
import java.util.logging.Level; |
54 |
import java.util.logging.Level; |
54 |
import java.util.logging.Logger; |
55 |
import java.util.logging.Logger; |
55 |
import java.util.prefs.BackingStoreException; |
56 |
import java.util.prefs.BackingStoreException; |
Lines 62-67
Link Here
|
62 |
import org.netbeans.api.annotations.common.CheckForNull; |
63 |
import org.netbeans.api.annotations.common.CheckForNull; |
63 |
import org.netbeans.api.project.Project; |
64 |
import org.netbeans.api.project.Project; |
64 |
import org.netbeans.api.project.ProjectManager; |
65 |
import org.netbeans.api.project.ProjectManager; |
|
|
66 |
import org.netbeans.api.project.ui.OpenProjects; |
67 |
import org.netbeans.api.project.ui.ProjectGroupChangeEvent; |
68 |
import org.netbeans.api.project.ui.ProjectGroupChangeListener; |
65 |
import org.netbeans.modules.maven.NbMavenProjectImpl; |
69 |
import org.netbeans.modules.maven.NbMavenProjectImpl; |
66 |
import org.netbeans.modules.maven.api.NbMavenProject; |
70 |
import org.netbeans.modules.maven.api.NbMavenProject; |
67 |
import org.netbeans.modules.maven.embedder.EmbedderFactory; |
71 |
import org.netbeans.modules.maven.embedder.EmbedderFactory; |
Lines 84-91
Link Here
|
84 |
public class MavenFileOwnerQueryImpl implements FileOwnerQueryImplementation { |
88 |
public class MavenFileOwnerQueryImpl implements FileOwnerQueryImplementation { |
85 |
|
89 |
|
86 |
private final PropertyChangeListener projectListener; |
90 |
private final PropertyChangeListener projectListener; |
|
|
91 |
private final ProjectGroupChangeListener groupListener; |
87 |
private final ChangeSupport cs = new ChangeSupport(this); |
92 |
private final ChangeSupport cs = new ChangeSupport(this); |
88 |
|
93 |
|
|
|
94 |
private static final AtomicReference<Preferences> prefs = new AtomicReference<Preferences>(NbPreferences.forModule(MavenFileOwnerQueryImpl.class).node("externalOwners")); |
95 |
|
89 |
private static final Logger LOG = Logger.getLogger(MavenFileOwnerQueryImpl.class.getName()); |
96 |
private static final Logger LOG = Logger.getLogger(MavenFileOwnerQueryImpl.class.getName()); |
90 |
|
97 |
|
91 |
public MavenFileOwnerQueryImpl() { |
98 |
public MavenFileOwnerQueryImpl() { |
Lines 98-105
Link Here
|
98 |
} |
105 |
} |
99 |
} |
106 |
} |
100 |
}; |
107 |
}; |
|
|
108 |
groupListener = new ProjectGroupChangeListener() { |
109 |
|
110 |
@Override |
111 |
public void projectGroupChanging(ProjectGroupChangeEvent event) { |
112 |
Preferences old = prefs(); |
113 |
Preferences n = event.getNewGroup() != null ? event.getNewGroup().preferencesForPackage(MavenFileOwnerQueryImpl.class).node("externalOwners") : NbPreferences.forModule(MavenFileOwnerQueryImpl.class).node("externalOwners"); |
114 |
prefs.compareAndSet(old, n); |
101 |
} |
115 |
} |
102 |
|
116 |
|
|
|
117 |
@Override |
118 |
public void projectGroupChanged(ProjectGroupChangeEvent event) { |
119 |
//TODO should we check what projects were kept open and register them with current group? |
120 |
} |
121 |
}; |
122 |
//not worth making weak, both are singletons kept forever |
123 |
OpenProjects.getDefault().addProjectGroupChangeListener(groupListener); |
124 |
} |
125 |
|
103 |
public static MavenFileOwnerQueryImpl getInstance() { |
126 |
public static MavenFileOwnerQueryImpl getInstance() { |
104 |
return Lookup.getDefault().lookup(MavenFileOwnerQueryImpl.class); |
127 |
return Lookup.getDefault().lookup(MavenFileOwnerQueryImpl.class); |
105 |
} |
128 |
} |
Lines 368-373
Link Here
|
368 |
} |
391 |
} |
369 |
|
392 |
|
370 |
static Preferences prefs() { |
393 |
static Preferences prefs() { |
371 |
return NbPreferences.forModule(MavenFileOwnerQueryImpl.class).node("externalOwners"); // NOI18N |
394 |
return prefs.get(); |
372 |
} |
395 |
} |
373 |
} |
396 |
} |