This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 86680
Collapse All | Expand All

(-)freeform/apichanges.xml (+16 lines)
Lines 82-87 Link Here
82
82
83
    <changes>
83
    <changes>
84
84
85
        <change id="deprecate_LookupMerger">
86
            <summary>Deprecate LookupMerger</summary>
87
            <version major="1" minor="13"/>
88
            <date day="11" month="10" year="2006"/>
89
            <author login="mkleint"/>
90
            <compatibility binary="compatible" source="compatible" semantic="compatible" addition="no" />
91
            <description>
92
                <p>
93
                    Deprecated class <code>org.netbeans.modules.ant.freeform.spi.LookupMerger</code>
94
                    and replaced by <code>org.netbeans.spi.project.LookupMerger</code>
95
                </p>
96
            </description>
97
             <class package="org.netbeans.modules.ant.freeform.spi" name="LookupMerger"/>
98
            <issue number="86680" />
99
        </change>
100
        
85
        <change id="HelpIDFragmentProvider">
101
        <change id="HelpIDFragmentProvider">
86
            <summary>Class HelpIDFragmentProvider added</summary>
102
            <summary>Class HelpIDFragmentProvider added</summary>
87
            <version major="1" minor="11" subminor="1"/>
103
            <version major="1" minor="11" subminor="1"/>
(-)freeform/manifest.mf (-1 / +1 lines)
Lines 1-5 Link Here
1
Manifest-Version: 1.0
1
Manifest-Version: 1.0
2
OpenIDE-Module: org.netbeans.modules.ant.freeform/1
2
OpenIDE-Module: org.netbeans.modules.ant.freeform/1
3
OpenIDE-Module-Specification-Version: 1.12
3
OpenIDE-Module-Specification-Version: 1.13
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ant/freeform/Bundle.properties
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ant/freeform/Bundle.properties
5
5
(-)freeform/nbproject/project.xml (-2 / +2 lines)
Lines 47-53 Link Here
47
                    <compile-dependency/>
47
                    <compile-dependency/>
48
                    <run-dependency>
48
                    <run-dependency>
49
                        <release-version>1</release-version>
49
                        <release-version>1</release-version>
50
                        <specification-version>1.6</specification-version>
50
                        <specification-version>1.12</specification-version>
51
                    </run-dependency>
51
                    </run-dependency>
52
                </dependency>
52
                </dependency>
53
                <dependency>
53
                <dependency>
Lines 56-62 Link Here
56
                    <compile-dependency/>
56
                    <compile-dependency/>
57
                    <run-dependency>
57
                    <run-dependency>
58
                        <release-version>1</release-version>
58
                        <release-version>1</release-version>
59
                        <specification-version>1.8</specification-version>
59
                        <specification-version>1.19</specification-version>
60
                    </run-dependency>
60
                    </run-dependency>
61
                </dependency>
61
                </dependency>
62
                <dependency>
62
                <dependency>
(-)freeform/src/org/netbeans/modules/ant/freeform/FreeformProject.java (-3 / +34 lines)
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
            }
(-)freeform/src/org/netbeans/modules/ant/freeform/LookupMergerImpl.java (-37 / +12 lines)
Lines 24-78 Link Here
24
import java.util.HashSet;
24
import java.util.HashSet;
25
import java.util.LinkedHashSet;
25
import java.util.LinkedHashSet;
26
import java.util.Set;
26
import java.util.Set;
27
import org.netbeans.modules.ant.freeform.spi.LookupMerger;
28
import org.netbeans.spi.project.ActionProvider;
27
import org.netbeans.spi.project.ActionProvider;
28
import org.netbeans.spi.project.LookupMerger;
29
import org.netbeans.spi.project.ui.PrivilegedTemplates;
29
import org.netbeans.spi.project.ui.PrivilegedTemplates;
30
import org.openide.util.Lookup;
30
import org.openide.util.Lookup;
31
31
32
/**
32
/**
33
 * Merges PrivilegedTemplates - all unique templates are returned.
33
 * Merges ActionProvider 
34
 * Order is undefined - depends on the lookup.
35
 *
34
 *
36
 * @author David Konecny
35
 * @author David Konecny, Milos Kleint
37
 */
36
 */
38
public class LookupMergerImpl implements LookupMerger {
37
public class LookupMergerImpl implements LookupMerger<ActionProvider> {
39
38
40
    public LookupMergerImpl() {}
39
    public LookupMergerImpl() {
41
    
42
    public Class<?>[] getMergeableClasses() {
43
        return new Class<?>[] {
44
            PrivilegedTemplates.class,
45
            ActionProvider.class,
46
        };
47
    }
40
    }
48
    
41
    
49
    public Object merge(Lookup lookup, Class<?> clazz) throws IllegalArgumentException {
42
50
        if (clazz == PrivilegedTemplates.class) {
43
    public Class<ActionProvider> getMergeableClass() {
51
            return new PrivilegedTemplatesImpl(lookup);
44
        return ActionProvider.class;
52
        } else if (clazz == ActionProvider.class) {
53
            return new ActionProviderImpl(lookup);
54
        } else {
55
            throw new IllegalArgumentException("merging of " + clazz + " is not supported"); // NOI18N
56
        }
57
    }
45
    }
58
    
46
59
    private static class PrivilegedTemplatesImpl implements PrivilegedTemplates {
47
    public ActionProvider merge(Lookup lookup) {
60
        
48
        return new ActionProviderImpl(lookup);
61
        private Lookup lkp;
62
        
63
        public PrivilegedTemplatesImpl(Lookup lkp) {
64
            this.lkp = lkp;
65
        }
66
        
67
        public String[] getPrivilegedTemplates() {
68
            Set<String> templates = new LinkedHashSet<String>();
69
            for (PrivilegedTemplates pt : lkp.lookupAll(PrivilegedTemplates.class)) {
70
                templates.addAll(Arrays.asList(pt.getPrivilegedTemplates()));
71
            }
72
            return templates.toArray(new String[templates.size()]);
73
        }
74
        
75
    }
49
    }
50
    
76
51
77
    /**
52
    /**
78
     * Permits any nature to add actions to the project.
53
     * Permits any nature to add actions to the project.
(-)freeform/src/org/netbeans/modules/ant/freeform/spi/LookupMerger.java (+2 lines)
Lines 49-54 Link Here
49
 * bound in <code>project.xml</code> according to the schema, and this provider is always first.</p></dd>
49
 * bound in <code>project.xml</code> according to the schema, and this provider is always first.</p></dd>
50
 * </dl>
50
 * </dl>
51
 * @author David Konecny
51
 * @author David Konecny
52
 * 
53
 * @deprecated use {@link org.netbeans.spi.project.LookupMerger} instead
52
 */
54
 */
53
public interface LookupMerger {
55
public interface LookupMerger {
54
    
56
    

Return to bug 86680