Index: freeform/apichanges.xml =================================================================== RCS file: /cvs/ant/freeform/apichanges.xml,v retrieving revision 1.4 diff -u -r1.4 apichanges.xml --- freeform/apichanges.xml 11 Aug 2006 12:14:58 -0000 1.4 +++ freeform/apichanges.xml 9 Oct 2006 14:02:01 -0000 @@ -82,6 +82,22 @@ + + Deprecate LookupMerger + + + + + +

+ Deprecated class org.netbeans.modules.ant.freeform.spi.LookupMerger + and replaced by org.netbeans.spi.project.LookupMerger +

+
+ + +
+ Class HelpIDFragmentProvider added Index: freeform/manifest.mf =================================================================== RCS file: /cvs/ant/freeform/manifest.mf,v retrieving revision 1.14 diff -u -r1.14 manifest.mf --- freeform/manifest.mf 11 Aug 2006 12:14:58 -0000 1.14 +++ freeform/manifest.mf 9 Oct 2006 14:02:01 -0000 @@ -1,5 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.ant.freeform/1 -OpenIDE-Module-Specification-Version: 1.12 +OpenIDE-Module-Specification-Version: 1.13 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ant/freeform/Bundle.properties Index: freeform/nbproject/project.xml =================================================================== RCS file: /cvs/ant/freeform/nbproject/project.xml,v retrieving revision 1.23 diff -u -r1.23 project.xml --- freeform/nbproject/project.xml 23 Aug 2006 12:03:06 -0000 1.23 +++ freeform/nbproject/project.xml 9 Oct 2006 14:02:01 -0000 @@ -47,7 +47,7 @@ 1 - 1.6 + 1.12 @@ -56,7 +56,7 @@ 1 - 1.8 + 1.19 Index: freeform/src/org/netbeans/modules/ant/freeform/FreeformProject.java =================================================================== RCS file: /cvs/ant/freeform/src/org/netbeans/modules/ant/freeform/FreeformProject.java,v retrieving revision 1.43 diff -u -r1.43 FreeformProject.java --- freeform/src/org/netbeans/modules/ant/freeform/FreeformProject.java 4 Aug 2006 21:36:50 -0000 1.43 +++ freeform/src/org/netbeans/modules/ant/freeform/FreeformProject.java 9 Oct 2006 14:02:01 -0000 @@ -25,7 +25,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Collections; -import java.util.Iterator; import java.util.List; import javax.swing.Icon; import javax.swing.ImageIcon; @@ -41,6 +40,7 @@ import org.netbeans.spi.project.support.ant.AntProjectHelper; import org.netbeans.spi.project.support.ant.PropertyEvaluator; import org.netbeans.spi.project.support.ant.PropertyUtils; +import org.netbeans.spi.project.ui.support.UILookupMergerSupport; import org.openide.ErrorManager; import org.openide.filesystems.FileObject; import org.openide.util.Lookup; @@ -90,7 +90,8 @@ helper().createCacheDirectoryProvider(), // CacheDirectoryProvider new Subprojects(this), // SubprojectProvider new ArtifactProvider(this), // AntArtifactProvider - new LookupMergerImpl(), // LookupMerger + new LookupMergerImpl(), // LookupMerger or ActionProvider + UILookupMergerSupport.createPrivilegedTemplatesMerger(), new FreeformProjectOperations(this), new FreeformSharabilityQuery(helper()), //SharabilityQueryImplementation new ProjectAccessor(this) //Access to AntProjectHelper and PropertyEvaluator @@ -187,7 +188,9 @@ private final FreeformProject project; private final AuxiliaryConfiguration aux; private Lookup.Result mergers; + private Lookup.Result mergers2; private Reference listenerRef; + private Reference listenerRef2; //#68623: the proxy lookup fires changes only if someone listens on a particular template: private List> results; @@ -226,7 +229,35 @@ //merge: List> filteredClasses = new ArrayList>(); List mergedInstances = new ArrayList(); - LookupListener l = listenerRef != null ? listenerRef.get() : null; + //first comes the new project API's LookupMerger + //merge: + LookupListener l = listenerRef2 != null ? listenerRef2.get() : null; + if (l != null) { + mergers2.removeLookupListener(l); + } + mergers2 = lkp.lookupResult(org.netbeans.spi.project.LookupMerger.class); + l = WeakListeners.create(LookupListener.class, this, mergers2); + listenerRef2 = new WeakReference(l); + mergers2.addLookupListener(l); + for (org.netbeans.spi.project.LookupMerger lm : mergers2.allInstances()) { + Class c = lm.getMergeableClass(); + if (filteredClasses.contains(c)) { + ErrorManager.getDefault().log(ErrorManager.WARNING, + "Two LookupMerger registered for class " + c + + ". Only first one will be used"); // NOI18N + continue; + } + filteredClasses.add(c); + mergedInstances.add(lm.merge(lkp)); + + Lookup.Result result = lkp.lookupResult(c); + + result.addLookupListener(this); + results.add(result); + } + + // keep old deprecated LookupMerger classes support in here.. + l = listenerRef != null ? listenerRef.get() : null; if (l != null) { mergers.removeLookupListener(l); } Index: freeform/src/org/netbeans/modules/ant/freeform/LookupMergerImpl.java =================================================================== RCS file: /cvs/ant/freeform/src/org/netbeans/modules/ant/freeform/LookupMergerImpl.java,v retrieving revision 1.6 diff -u -r1.6 LookupMergerImpl.java --- freeform/src/org/netbeans/modules/ant/freeform/LookupMergerImpl.java 10 Aug 2006 18:48:11 -0000 1.6 +++ freeform/src/org/netbeans/modules/ant/freeform/LookupMergerImpl.java 9 Oct 2006 14:02:01 -0000 @@ -24,55 +24,30 @@ import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; -import org.netbeans.modules.ant.freeform.spi.LookupMerger; import org.netbeans.spi.project.ActionProvider; +import org.netbeans.spi.project.LookupMerger; import org.netbeans.spi.project.ui.PrivilegedTemplates; import org.openide.util.Lookup; /** - * Merges PrivilegedTemplates - all unique templates are returned. - * Order is undefined - depends on the lookup. + * Merges ActionProvider * - * @author David Konecny + * @author David Konecny, Milos Kleint */ -public class LookupMergerImpl implements LookupMerger { +public class LookupMergerImpl implements LookupMerger { - public LookupMergerImpl() {} - - public Class[] getMergeableClasses() { - return new Class[] { - PrivilegedTemplates.class, - ActionProvider.class, - }; + public LookupMergerImpl() { } - public Object merge(Lookup lookup, Class clazz) throws IllegalArgumentException { - if (clazz == PrivilegedTemplates.class) { - return new PrivilegedTemplatesImpl(lookup); - } else if (clazz == ActionProvider.class) { - return new ActionProviderImpl(lookup); - } else { - throw new IllegalArgumentException("merging of " + clazz + " is not supported"); // NOI18N - } + + public Class getMergeableClass() { + return ActionProvider.class; } - - private static class PrivilegedTemplatesImpl implements PrivilegedTemplates { - - private Lookup lkp; - - public PrivilegedTemplatesImpl(Lookup lkp) { - this.lkp = lkp; - } - - public String[] getPrivilegedTemplates() { - Set templates = new LinkedHashSet(); - for (PrivilegedTemplates pt : lkp.lookupAll(PrivilegedTemplates.class)) { - templates.addAll(Arrays.asList(pt.getPrivilegedTemplates())); - } - return templates.toArray(new String[templates.size()]); - } - + + public ActionProvider merge(Lookup lookup) { + return new ActionProviderImpl(lookup); } + /** * Permits any nature to add actions to the project. Index: freeform/src/org/netbeans/modules/ant/freeform/spi/LookupMerger.java =================================================================== RCS file: /cvs/ant/freeform/src/org/netbeans/modules/ant/freeform/spi/LookupMerger.java,v retrieving revision 1.4 diff -u -r1.4 LookupMerger.java --- freeform/src/org/netbeans/modules/ant/freeform/spi/LookupMerger.java 4 Aug 2006 21:36:51 -0000 1.4 +++ freeform/src/org/netbeans/modules/ant/freeform/spi/LookupMerger.java 9 Oct 2006 14:02:01 -0000 @@ -49,6 +49,8 @@ * bound in project.xml according to the schema, and this provider is always first.

* * @author David Konecny + * + * @deprecated use {@link org.netbeans.spi.project.LookupMerger} instead */ public interface LookupMerger {