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 103106
Collapse All | Expand All

(-)projects/projectuiapi/apichanges.xml (+15 lines)
Lines 81-86 Link Here
81
    <!-- ACTUAL CHANGES BEGIN HERE: -->
81
    <!-- ACTUAL CHANGES BEGIN HERE: -->
82
82
83
    <changes>
83
    <changes>
84
        <change id="project-open-hook-merger">
85
            <api name="general"/>
86
            <summary>Add <code>LookupMerger</code>implementation for <code>ProjectOpenedHook</code></summary>
87
            <version major="1" minor="24"/>
88
            <date day="4" month="5" year="2007"/>
89
            <author login="mkleint"/>
90
            <compatibility addition="yes" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="compatible" source="compatible"/>
91
            <description>
92
               New method <code>UILookupMergerSupport.createProjectOpenHookMerger(ProjectOpenedHook)</code> creates an instance of 
93
               <code>LookupMerger</code> that ensures that from the <code>ProjectOpenedHook</code> instances in project's lookup, the 
94
               project's own is always called first.
95
            </description>
96
            <class package="org.netbeans.spi.project.ui.support" name="UILookupMergerSupport"/>
97
            <issue number="103106"/>
98
        </change>
84
        <change id="project-license-property">
99
        <change id="project-license-property">
85
            <api name="general"/>
100
            <api name="general"/>
86
            <summary>Adding template attribute <code>project.license</code></summary>
101
            <summary>Adding template attribute <code>project.license</code></summary>
(-)projects/projectuiapi/nbproject/project.properties (-1 / +1 lines)
Lines 17-23 Link Here
17
17
18
javac.compilerargs=-Xlint -Xlint:-serial
18
javac.compilerargs=-Xlint -Xlint:-serial
19
javac.source=1.5
19
javac.source=1.5
20
spec.version.base=1.23.0
20
spec.version.base=1.24.0
21
is.autoload=true
21
is.autoload=true
22
javadoc.arch=${basedir}/arch.xml
22
javadoc.arch=${basedir}/arch.xml
23
javadoc.apichanges=${basedir}/apichanges.xml
23
javadoc.apichanges=${basedir}/apichanges.xml
(-)projects/projectuiapi/src/org/netbeans/spi/project/ui/support/UILookupMergerSupport.java (+69 lines)
Lines 23-30 Link Here
23
import java.util.Arrays;
23
import java.util.Arrays;
24
import java.util.LinkedHashSet;
24
import java.util.LinkedHashSet;
25
import java.util.Set;
25
import java.util.Set;
26
import org.netbeans.modules.project.uiapi.ProjectOpenedTrampoline;
26
import org.netbeans.spi.project.LookupMerger;
27
import org.netbeans.spi.project.LookupMerger;
27
import org.netbeans.spi.project.ui.PrivilegedTemplates;
28
import org.netbeans.spi.project.ui.PrivilegedTemplates;
29
import org.netbeans.spi.project.ui.ProjectOpenedHook;
28
import org.netbeans.spi.project.ui.RecommendedTemplates;
30
import org.netbeans.spi.project.ui.RecommendedTemplates;
29
import org.openide.util.Lookup;
31
import org.openide.util.Lookup;
30
32
Lines 59-64 Link Here
59
        return new PrivilegedMerger();
61
        return new PrivilegedMerger();
60
    }
62
    }
61
    
63
    
64
    /**
65
     * Create a {@link org.netbeans.spi.project.LookupMerger} instance 
66
     * for {@link org.netbeans.spi.project.ui.ProjectOpenedHook}. The merger makes sure all registered
67
     * <code>ProjectOpenedHook</code> instances are called and that the default instance is called first.
68
     * @param defaultInstance - the default {@link org.netbeans.spi.project.ui.ProjectOpenedHook} instance or null if
69
     * a default privileged instance is not required.
70
     * @return instance to include in project lookup
71
     * @since org.netbeans.modules.projectuiapi 1.24
72
     */
73
    public static LookupMerger createProjectOpenHookMerger(ProjectOpenedHook defaultInstance) {
74
        return new OpenMerger(defaultInstance);
75
    }
76
    
62
    private static class PrivilegedMerger implements LookupMerger<PrivilegedTemplates> {
77
    private static class PrivilegedMerger implements LookupMerger<PrivilegedTemplates> {
63
        public Class<PrivilegedTemplates> getMergeableClass() {
78
        public Class<PrivilegedTemplates> getMergeableClass() {
64
            return PrivilegedTemplates.class;
79
            return PrivilegedTemplates.class;
Lines 80-85 Link Here
80
        }
95
        }
81
    }
96
    }
82
    
97
    
98
    private static class OpenMerger implements LookupMerger<ProjectOpenedHook> {
99
        private ProjectOpenedHook defaultInstance;
100
101
        OpenMerger(ProjectOpenedHook def) {
102
            defaultInstance = def;
103
        }
104
        public Class<ProjectOpenedHook> getMergeableClass() {
105
            return ProjectOpenedHook.class;
106
        }
107
108
        public ProjectOpenedHook merge(Lookup lookup) {
109
            return new OpenHookImpl(defaultInstance, lookup);
110
        }
111
        
112
    }
113
    
83
    private static class PrivilegedTemplatesImpl implements PrivilegedTemplates {
114
    private static class PrivilegedTemplatesImpl implements PrivilegedTemplates {
84
        
115
        
85
        private Lookup lkp;
116
        private Lookup lkp;
Lines 111-116 Link Here
111
                templates.addAll(Arrays.asList(pt.getRecommendedTypes()));
142
                templates.addAll(Arrays.asList(pt.getRecommendedTypes()));
112
            }
143
            }
113
            return templates.toArray(new String[templates.size()]);
144
            return templates.toArray(new String[templates.size()]);
145
        }
146
        
147
    }
148
    
149
    private static class OpenHookImpl extends ProjectOpenedHook {
150
151
        private ProjectOpenedHook defaultInstance;
152
        private Lookup lkp;        
153
        
154
        OpenHookImpl(ProjectOpenedHook def, Lookup lkp) {
155
            defaultInstance = def;
156
            this.lkp = lkp; 
157
            //shall we listen on ProjectOpenedHook instance changes in lookup and 
158
            // call close on the disappearing ones?
159
        }
160
        
161
        protected void projectOpened() {
162
            if (defaultInstance != null) {
163
                ProjectOpenedTrampoline.DEFAULT.projectOpened(defaultInstance);
164
            }
165
            for (ProjectOpenedHook poh : lkp.lookupAll(ProjectOpenedHook.class)) {
166
                // just to make sure..
167
                if (poh != defaultInstance) {
168
                    ProjectOpenedTrampoline.DEFAULT.projectOpened(poh);
169
                }
170
            }
171
        }
172
173
        protected void projectClosed() {
174
            if (defaultInstance != null) {
175
                ProjectOpenedTrampoline.DEFAULT.projectClosed(defaultInstance);
176
            }
177
            for (ProjectOpenedHook poh : lkp.lookupAll(ProjectOpenedHook.class)) {
178
                // just to make sure..
179
                if (poh != defaultInstance) {
180
                    ProjectOpenedTrampoline.DEFAULT.projectClosed(poh);
181
                }
182
            }
114
        }
183
        }
115
        
184
        
116
    }
185
    }
(-)java/j2seproject/nbproject/project.xml (-1 / +1 lines)
Lines 146-152 Link Here
146
                    <compile-dependency/>
146
                    <compile-dependency/>
147
                    <run-dependency>
147
                    <run-dependency>
148
                        <release-version>1</release-version>
148
                        <release-version>1</release-version>
149
                        <specification-version>1.19</specification-version>
149
                        <specification-version>1.24</specification-version>
150
                    </run-dependency>
150
                    </run-dependency>
151
                </dependency>
151
                </dependency>
152
                <dependency>
152
                <dependency>
(-)java/j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProject.java (-1 / +1 lines)
Lines 237-243 Link Here
237
            new JavadocForBinaryQueryImpl(this.helper, evaluator()), //Does not use APH to get/put properties/cfgdata
237
            new JavadocForBinaryQueryImpl(this.helper, evaluator()), //Does not use APH to get/put properties/cfgdata
238
            new AntArtifactProviderImpl(),
238
            new AntArtifactProviderImpl(),
239
            new ProjectXmlSavedHookImpl(),
239
            new ProjectXmlSavedHookImpl(),
240
            new ProjectOpenedHookImpl(),
240
            UILookupMergerSupport.createProjectOpenHookMerger(new ProjectOpenedHookImpl()),
241
            new UnitTestForSourceQueryImpl(getSourceRoots(),getTestSourceRoots()),
241
            new UnitTestForSourceQueryImpl(getSourceRoots(),getTestSourceRoots()),
242
            new SourceLevelQueryImpl(evaluator()),
242
            new SourceLevelQueryImpl(evaluator()),
243
            new J2SESources (this.helper, evaluator(), getSourceRoots(), getTestSourceRoots()),
243
            new J2SESources (this.helper, evaluator(), getSourceRoots(), getTestSourceRoots()),
(-)web/project/nbproject/project.xml (-1 / +1 lines)
Lines 221-227 Link Here
221
                    <compile-dependency/>
221
                    <compile-dependency/>
222
                    <run-dependency>
222
                    <run-dependency>
223
                        <release-version>1</release-version>
223
                        <release-version>1</release-version>
224
                        <specification-version>1.19</specification-version>
224
                        <specification-version>1.24</specification-version>
225
                    </run-dependency>
225
                    </run-dependency>
226
                </dependency>
226
                </dependency>
227
                <dependency>
227
                <dependency>
(-)web/project/src/org/netbeans/modules/web/project/WebProject.java (-2 / +2 lines)
Lines 335-341 Link Here
335
            new JavadocForBinaryQueryImpl(this.helper, evaluator()),
335
            new JavadocForBinaryQueryImpl(this.helper, evaluator()),
336
            new AntArtifactProviderImpl(),
336
            new AntArtifactProviderImpl(),
337
            new ProjectXmlSavedHookImpl(),
337
            new ProjectXmlSavedHookImpl(),
338
            new ProjectOpenedHookImpl(),
338
            UILookupMergerSupport.createProjectOpenHookMerger(new ProjectOpenedHookImpl()),
339
            new UnitTestForSourceQueryImpl(getSourceRoots(),getTestSourceRoots()),
339
            new UnitTestForSourceQueryImpl(getSourceRoots(),getTestSourceRoots()),
340
            new SourceLevelQueryImpl(evaluator()),
340
            new SourceLevelQueryImpl(evaluator()),
341
            new WebSources (this.helper, evaluator(), getSourceRoots(), getTestSourceRoots()),
341
            new WebSources (this.helper, evaluator(), getSourceRoots(), getTestSourceRoots()),
Lines 699-705 Link Here
699
                }
699
                }
700
                
700
                
701
                // Register copy on save support
701
                // Register copy on save support
702
                css.initialize();
702
                css.initialize();
703
                
703
                
704
                
704
                
705
                // Check up on build scripts.
705
                // Check up on build scripts.
(-)j2ee/ejbjarproject/nbproject/project.xml (-1 / +1 lines)
Lines 231-237 Link Here
231
                    <compile-dependency/>
231
                    <compile-dependency/>
232
                    <run-dependency>
232
                    <run-dependency>
233
                        <release-version>1</release-version>
233
                        <release-version>1</release-version>
234
                        <specification-version>1.19</specification-version>
234
                        <specification-version>1.24</specification-version>
235
                    </run-dependency>
235
                    </run-dependency>
236
                </dependency>
236
                </dependency>
237
                <dependency>
237
                <dependency>
(-)j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java (-1 / +1 lines)
Lines 315-321 Link Here
315
                new JavadocForBinaryQueryImpl(helper, evaluator()),
315
                new JavadocForBinaryQueryImpl(helper, evaluator()),
316
                new AntArtifactProviderImpl(),
316
                new AntArtifactProviderImpl(),
317
                new ProjectXmlSavedHookImpl(),
317
                new ProjectXmlSavedHookImpl(),
318
                new ProjectOpenedHookImpl(),
318
                UILookupMergerSupport.createProjectOpenHookMerger(new ProjectOpenedHookImpl()),
319
                new UnitTestForSourceQueryImpl(getSourceRoots(),getTestSourceRoots()),
319
                new UnitTestForSourceQueryImpl(getSourceRoots(),getTestSourceRoots()),
320
                new SourceLevelQueryImpl(helper, evaluator()),
320
                new SourceLevelQueryImpl(helper, evaluator()),
321
                new EjbJarSources (helper, evaluator(), getSourceRoots(), getTestSourceRoots()),
321
                new EjbJarSources (helper, evaluator(), getSourceRoots(), getTestSourceRoots()),
(-)j2ee/earproject/nbproject/project.xml (-1 / +1 lines)
Lines 175-181 Link Here
175
                    <compile-dependency/>
175
                    <compile-dependency/>
176
                    <run-dependency>
176
                    <run-dependency>
177
                        <release-version>1</release-version>
177
                        <release-version>1</release-version>
178
                        <specification-version>1.19</specification-version>
178
                        <specification-version>1.24</specification-version>
179
                    </run-dependency>
179
                    </run-dependency>
180
                </dependency>
180
                </dependency>
181
                <dependency>
181
                <dependency>
(-)j2ee/earproject/src/org/netbeans/modules/j2ee/earproject/EarProject.java (-1 / +1 lines)
Lines 173-179 Link Here
173
            new EarCustomizerProvider( this, helper, refHelper, abpt ),
173
            new EarCustomizerProvider( this, helper, refHelper, abpt ),
174
            new ClassPathProviderImpl(helper, evaluator()),
174
            new ClassPathProviderImpl(helper, evaluator()),
175
            new ProjectXmlSavedHookImpl(),
175
            new ProjectXmlSavedHookImpl(),
176
            new ProjectOpenedHookImpl(),
176
            UILookupMergerSupport.createProjectOpenHookMerger(new ProjectOpenedHookImpl()),
177
            new EarSources(helper, evaluator()),
177
            new EarSources(helper, evaluator()),
178
            new RecommendedTemplatesImpl(),
178
            new RecommendedTemplatesImpl(),
179
            helper.createSharabilityQuery(evaluator(),
179
            helper.createSharabilityQuery(evaluator(),
(-)j2ee/clientproject/nbproject/project.xml (-1 / +1 lines)
Lines 200-206 Link Here
200
                    <compile-dependency/>
200
                    <compile-dependency/>
201
                    <run-dependency>
201
                    <run-dependency>
202
                        <release-version>1</release-version>
202
                        <release-version>1</release-version>
203
                        <specification-version>1.19</specification-version>
203
                        <specification-version>1.24</specification-version>
204
                    </run-dependency>
204
                    </run-dependency>
205
                </dependency>
205
                </dependency>
206
                <dependency>
206
                <dependency>
(-)j2ee/clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProject.java (-1 / +1 lines)
Lines 229-235 Link Here
229
            new JavadocForBinaryQueryImpl(this.helper, evaluator()), //Does not use APH to get/put properties/cfgdata
229
            new JavadocForBinaryQueryImpl(this.helper, evaluator()), //Does not use APH to get/put properties/cfgdata
230
            new AntArtifactProviderImpl(),
230
            new AntArtifactProviderImpl(),
231
            new ProjectXmlSavedHookImpl(),
231
            new ProjectXmlSavedHookImpl(),
232
            new ProjectOpenedHookImpl(),
232
            UILookupMergerSupport.createProjectOpenHookMerger(new ProjectOpenedHookImpl()),
233
            new UnitTestForSourceQueryImpl(getSourceRoots(),getTestSourceRoots()),
233
            new UnitTestForSourceQueryImpl(getSourceRoots(),getTestSourceRoots()),
234
            new SourceLevelQueryImpl(evaluator()),
234
            new SourceLevelQueryImpl(evaluator()),
235
            new AppClientSources(this.helper, evaluator(), getSourceRoots(), getTestSourceRoots()),
235
            new AppClientSources(this.helper, evaluator(), getSourceRoots(), getTestSourceRoots()),
(-)j2ee/archiveproject/nbproject/project.xml (+1 lines)
Lines 154-159 Link Here
154
                    <compile-dependency/>
154
                    <compile-dependency/>
155
                    <run-dependency>
155
                    <run-dependency>
156
                        <release-version>1</release-version>
156
                        <release-version>1</release-version>
157
                        <specification-version>1.24</specification-version>
157
                    </run-dependency>
158
                    </run-dependency>
158
                </dependency>
159
                </dependency>
159
                <dependency>
160
                <dependency>
(-)j2ee/archiveproject/src/org/netbeans/modules/j2ee/archive/project/ArchiveProject.java (-1 / +2 lines)
Lines 66-71 Link Here
66
import org.openide.util.Utilities;
66
import org.openide.util.Utilities;
67
import org.openide.util.lookup.Lookups;
67
import org.openide.util.lookup.Lookups;
68
import org.netbeans.spi.project.ui.ProjectOpenedHook;
68
import org.netbeans.spi.project.ui.ProjectOpenedHook;
69
import org.netbeans.spi.project.ui.support.UILookupMergerSupport;
69
import org.w3c.dom.Element;
70
import org.w3c.dom.Element;
70
import org.w3c.dom.Node;
71
import org.w3c.dom.Node;
71
import org.w3c.dom.NodeList;
72
import org.w3c.dom.NodeList;
Lines 192-198 Link Here
192
                    new String[] {"${build.classes.dir}/*.class"}),
193
                    new String[] {"${build.classes.dir}/*.class"}),
193
            helper.createSharabilityQuery(eval, new String[] {"${src.dir}"},
194
            helper.createSharabilityQuery(eval, new String[] {"${src.dir}"},
194
                    new String[] {"${build.dir}","${dist.dir}", "${proxy.project.dir}"}),
195
                    new String[] {"${build.dir}","${dist.dir}", "${proxy.project.dir}"}),
195
            new OpenCloseHook(),
196
            UILookupMergerSupport.createProjectOpenHookMerger(new OpenCloseHook()),
196
            new ProvidesAction(ArchiveProject.this),
197
            new ProvidesAction(ArchiveProject.this),
197
            new ProvidesLogicalView(ArchiveProject.this),
198
            new ProvidesLogicalView(ArchiveProject.this),
198
            helper,
199
            helper,
(-)apisupport/project/nbproject/project.xml (+1 lines)
Lines 133-138 Link Here
133
                    <compile-dependency/>
133
                    <compile-dependency/>
134
                    <run-dependency>
134
                    <run-dependency>
135
                        <release-version>1</release-version>
135
                        <release-version>1</release-version>
136
                        <specification-version>1.24</specification-version>
136
                    </run-dependency>
137
                    </run-dependency>
137
                </dependency>
138
                </dependency>
138
                <dependency>
139
                <dependency>
(-)apisupport/project/src/org/netbeans/modules/apisupport/project/NbModuleProject.java (-1 / +1 lines)
Lines 202-208 Link Here
202
            helper.createAuxiliaryConfiguration(),
202
            helper.createAuxiliaryConfiguration(),
203
            helper.createCacheDirectoryProvider(),
203
            helper.createCacheDirectoryProvider(),
204
            new SavedHook(),
204
            new SavedHook(),
205
            new OpenedHook(),
205
            UILookupMergerSupport.createProjectOpenHookMerger(new OpenedHook()),
206
            new ModuleActions(this),
206
            new ModuleActions(this),
207
            new ClassPathProviderImpl(this),
207
            new ClassPathProviderImpl(this),
208
            new SourceForBinaryImpl(this),
208
            new SourceForBinaryImpl(this),
(-)apisupport/project/src/org/netbeans/modules/apisupport/project/suite/SuiteProject.java (-1 / +1 lines)
Lines 92-98 Link Here
92
            helper.createAuxiliaryConfiguration(),
92
            helper.createAuxiliaryConfiguration(),
93
            helper.createCacheDirectoryProvider(),
93
            helper.createCacheDirectoryProvider(),
94
            new SavedHook(),
94
            new SavedHook(),
95
            new OpenedHook(),
95
            UILookupMergerSupport.createProjectOpenHookMerger(new OpenedHook()),
96
            helper.createSharabilityQuery(eval, new String[0], new String[] {"build", "dist"}), // NOI18N
96
            helper.createSharabilityQuery(eval, new String[0], new String[] {"build", "dist"}), // NOI18N
97
            new SuiteSubprojectProviderImpl(helper, eval),
97
            new SuiteSubprojectProviderImpl(helper, eval),
98
            new SuiteProviderImpl(),
98
            new SuiteProviderImpl(),

Return to bug 103106