Lines 25-31
Link Here
|
25 |
import java.lang.ref.WeakReference; |
25 |
import java.lang.ref.WeakReference; |
26 |
import java.util.ArrayList; |
26 |
import java.util.ArrayList; |
27 |
import java.util.Collections; |
27 |
import java.util.Collections; |
28 |
import java.util.Iterator; |
|
|
29 |
import java.util.List; |
28 |
import java.util.List; |
30 |
import javax.swing.Icon; |
29 |
import javax.swing.Icon; |
31 |
import javax.swing.ImageIcon; |
30 |
import javax.swing.ImageIcon; |
Lines 41-46
Link Here
|
41 |
import org.netbeans.spi.project.support.ant.AntProjectHelper; |
40 |
import org.netbeans.spi.project.support.ant.AntProjectHelper; |
42 |
import org.netbeans.spi.project.support.ant.PropertyEvaluator; |
41 |
import org.netbeans.spi.project.support.ant.PropertyEvaluator; |
43 |
import org.netbeans.spi.project.support.ant.PropertyUtils; |
42 |
import org.netbeans.spi.project.support.ant.PropertyUtils; |
|
|
43 |
import org.netbeans.spi.project.ui.support.UILookupMergerSupport; |
44 |
import org.openide.ErrorManager; |
44 |
import org.openide.ErrorManager; |
45 |
import org.openide.filesystems.FileObject; |
45 |
import org.openide.filesystems.FileObject; |
46 |
import org.openide.util.Lookup; |
46 |
import org.openide.util.Lookup; |
Lines 90-96
Link Here
|
90 |
helper().createCacheDirectoryProvider(), // CacheDirectoryProvider |
90 |
helper().createCacheDirectoryProvider(), // CacheDirectoryProvider |
91 |
new Subprojects(this), // SubprojectProvider |
91 |
new Subprojects(this), // SubprojectProvider |
92 |
new ArtifactProvider(this), // AntArtifactProvider |
92 |
new ArtifactProvider(this), // AntArtifactProvider |
93 |
new LookupMergerImpl(), // LookupMerger |
93 |
new LookupMergerImpl(), // LookupMerger or ActionProvider |
|
|
94 |
UILookupMergerSupport.createPrivilegedTemplatesMerger(), |
94 |
new FreeformProjectOperations(this), |
95 |
new FreeformProjectOperations(this), |
95 |
new FreeformSharabilityQuery(helper()), //SharabilityQueryImplementation |
96 |
new FreeformSharabilityQuery(helper()), //SharabilityQueryImplementation |
96 |
new ProjectAccessor(this) //Access to AntProjectHelper and PropertyEvaluator |
97 |
new ProjectAccessor(this) //Access to AntProjectHelper and PropertyEvaluator |
Lines 187-193
Link Here
|
187 |
private final FreeformProject project; |
188 |
private final FreeformProject project; |
188 |
private final AuxiliaryConfiguration aux; |
189 |
private final AuxiliaryConfiguration aux; |
189 |
private Lookup.Result<LookupMerger> mergers; |
190 |
private Lookup.Result<LookupMerger> mergers; |
|
|
191 |
private Lookup.Result<org.netbeans.spi.project.LookupMerger> mergers2; |
190 |
private Reference<LookupListener> listenerRef; |
192 |
private Reference<LookupListener> listenerRef; |
|
|
193 |
private Reference<LookupListener> listenerRef2; |
191 |
|
194 |
|
192 |
//#68623: the proxy lookup fires changes only if someone listens on a particular template: |
195 |
//#68623: the proxy lookup fires changes only if someone listens on a particular template: |
193 |
private List<Lookup.Result<?>> results; |
196 |
private List<Lookup.Result<?>> results; |
Lines 226-232
Link Here
|
226 |
//merge: |
229 |
//merge: |
227 |
List<Class<?>> filteredClasses = new ArrayList<Class<?>>(); |
230 |
List<Class<?>> filteredClasses = new ArrayList<Class<?>>(); |
228 |
List<Object> mergedInstances = new ArrayList<Object>(); |
231 |
List<Object> mergedInstances = new ArrayList<Object>(); |
229 |
LookupListener l = listenerRef != null ? listenerRef.get() : null; |
232 |
//first comes the new project API's LookupMerger |
|
|
233 |
//merge: |
234 |
LookupListener l = listenerRef2 != null ? listenerRef2.get() : null; |
235 |
if (l != null) { |
236 |
mergers2.removeLookupListener(l); |
237 |
} |
238 |
mergers2 = lkp.lookupResult(org.netbeans.spi.project.LookupMerger.class); |
239 |
l = WeakListeners.create(LookupListener.class, this, mergers2); |
240 |
listenerRef2 = new WeakReference<LookupListener>(l); |
241 |
mergers2.addLookupListener(l); |
242 |
for (org.netbeans.spi.project.LookupMerger lm : mergers2.allInstances()) { |
243 |
Class<?> c = lm.getMergeableClass(); |
244 |
if (filteredClasses.contains(c)) { |
245 |
ErrorManager.getDefault().log(ErrorManager.WARNING, |
246 |
"Two LookupMerger registered for class " + c + |
247 |
". Only first one will be used"); // NOI18N |
248 |
continue; |
249 |
} |
250 |
filteredClasses.add(c); |
251 |
mergedInstances.add(lm.merge(lkp)); |
252 |
|
253 |
Lookup.Result<?> result = lkp.lookupResult(c); |
254 |
|
255 |
result.addLookupListener(this); |
256 |
results.add(result); |
257 |
} |
258 |
|
259 |
// keep old deprecated LookupMerger classes support in here.. |
260 |
l = listenerRef != null ? listenerRef.get() : null; |
230 |
if (l != null) { |
261 |
if (l != null) { |
231 |
mergers.removeLookupListener(l); |
262 |
mergers.removeLookupListener(l); |
232 |
} |
263 |
} |