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

(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/ui/LibrariesNodeFactory.java (+2 lines)
Lines 61-66 Link Here
61
import org.netbeans.spi.project.support.ant.ReferenceHelper;
61
import org.netbeans.spi.project.support.ant.ReferenceHelper;
62
import org.netbeans.spi.project.ui.support.NodeFactory;
62
import org.netbeans.spi.project.ui.support.NodeFactory;
63
import org.netbeans.spi.project.ui.support.NodeList;
63
import org.netbeans.spi.project.ui.support.NodeList;
64
import org.netbeans.spi.project.ui.support.RegisteredNodeFactory;
64
import org.openide.nodes.Node;
65
import org.openide.nodes.Node;
65
import org.openide.util.ChangeSupport;
66
import org.openide.util.ChangeSupport;
66
import org.openide.util.NbBundle;
67
import org.openide.util.NbBundle;
Lines 69-74 Link Here
69
 *
70
 *
70
 * @author mkleint
71
 * @author mkleint
71
 */
72
 */
73
@RegisteredNodeFactory(projectType="org-netbeans-modules-java-j2seproject", position=300)
72
public final class LibrariesNodeFactory implements NodeFactory {
74
public final class LibrariesNodeFactory implements NodeFactory {
73
    
75
    
74
    /** Creates a new instance of LibrariesNodeFactory */
76
    /** Creates a new instance of LibrariesNodeFactory */
(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/ui/SourceNodeFactory.java (+2 lines)
Lines 60-65 Link Here
60
import org.netbeans.spi.java.project.support.ui.PackageView;
60
import org.netbeans.spi.java.project.support.ui.PackageView;
61
import org.netbeans.spi.project.ui.support.NodeFactory;
61
import org.netbeans.spi.project.ui.support.NodeFactory;
62
import org.netbeans.spi.project.ui.support.NodeList;
62
import org.netbeans.spi.project.ui.support.NodeList;
63
import org.netbeans.spi.project.ui.support.RegisteredNodeFactory;
63
import org.openide.filesystems.FileObject;
64
import org.openide.filesystems.FileObject;
64
import org.openide.nodes.FilterNode;
65
import org.openide.nodes.FilterNode;
65
import org.openide.nodes.Node;
66
import org.openide.nodes.Node;
Lines 70-75 Link Here
70
 *
71
 *
71
 * @author mkleint
72
 * @author mkleint
72
 */
73
 */
74
@RegisteredNodeFactory(projectType="org-netbeans-modules-java-j2seproject", position=200)
73
public final class SourceNodeFactory implements NodeFactory {
75
public final class SourceNodeFactory implements NodeFactory {
74
    public SourceNodeFactory() {
76
    public SourceNodeFactory() {
75
    }
77
    }
(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/ui/customizer/J2SECompositePanelProvider.java (+7 lines)
Lines 148-177 Link Here
148
148
149
    }
149
    }
150
150
151
    @ProjectCustomizer.RegisteredCategory(projectType="org-netbeans-modules-java-j2seproject", position=100, id="Sources")
151
    public static J2SECompositePanelProvider createSources() {
152
    public static J2SECompositePanelProvider createSources() {
152
        return new J2SECompositePanelProvider(SOURCES);
153
        return new J2SECompositePanelProvider(SOURCES);
153
    }
154
    }
154
155
156
    @ProjectCustomizer.RegisteredCategory(projectType="org-netbeans-modules-java-j2seproject", position=200, id="Libraries")
155
    public static J2SECompositePanelProvider createLibraries() {
157
    public static J2SECompositePanelProvider createLibraries() {
156
        return new J2SECompositePanelProvider(LIBRARIES);
158
        return new J2SECompositePanelProvider(LIBRARIES);
157
    }
159
    }
158
160
161
    @ProjectCustomizer.RegisteredCategory(projectType="org-netbeans-modules-java-j2seproject", position=100, id="BuildCategory/Build")
159
    public static J2SECompositePanelProvider createBuild() {
162
    public static J2SECompositePanelProvider createBuild() {
160
        return new J2SECompositePanelProvider(BUILD);
163
        return new J2SECompositePanelProvider(BUILD);
161
    }
164
    }
162
165
166
    @ProjectCustomizer.RegisteredCategory(projectType="org-netbeans-modules-java-j2seproject", position=200, id="BuildCategory/Jar")
163
    public static J2SECompositePanelProvider createJar() {
167
    public static J2SECompositePanelProvider createJar() {
164
        return new J2SECompositePanelProvider(JAR);
168
        return new J2SECompositePanelProvider(JAR);
165
    }
169
    }
166
170
171
    @ProjectCustomizer.RegisteredCategory(projectType="org-netbeans-modules-java-j2seproject", position=300, id="BuildCategory/Javadoc")
167
    public static J2SECompositePanelProvider createJavadoc() {
172
    public static J2SECompositePanelProvider createJavadoc() {
168
        return new J2SECompositePanelProvider(JAVADOC);
173
        return new J2SECompositePanelProvider(JAVADOC);
169
    }
174
    }
170
175
176
    @ProjectCustomizer.RegisteredCategory(projectType="org-netbeans-modules-java-j2seproject", position=400, id="Run")
171
    public static J2SECompositePanelProvider createRun() {
177
    public static J2SECompositePanelProvider createRun() {
172
        return new J2SECompositePanelProvider(RUN);
178
        return new J2SECompositePanelProvider(RUN);
173
    }
179
    }
174
    
180
    
181
    @ProjectCustomizer.RegisteredCategory(projectType="org-netbeans-modules-java-j2seproject", position=0, id="Application/Self")
175
    public static J2SECompositePanelProvider createApplication() {
182
    public static J2SECompositePanelProvider createApplication() {
176
        return new J2SECompositePanelProvider(APPLICATION);
183
        return new J2SECompositePanelProvider(APPLICATION);
177
    }
184
    }
(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/ui/resources/layer.xml (-37 lines)
Lines 94-143 Link Here
94
    <folder name="Projects">
94
    <folder name="Projects">
95
        <folder name="org-netbeans-modules-java-j2seproject">
95
        <folder name="org-netbeans-modules-java-j2seproject">
96
            <folder name="Customizer">
96
            <folder name="Customizer">
97
                <file name="Sources.instance">
98
                    <attr name="instanceCreate" methodvalue="org.netbeans.modules.java.j2seproject.ui.customizer.J2SECompositePanelProvider.createSources"/>
99
                    <attr name="position" intvalue="100"/>
100
                </file>
101
                <file name="Libraries.instance">
102
                    <attr name="instanceCreate" methodvalue="org.netbeans.modules.java.j2seproject.ui.customizer.J2SECompositePanelProvider.createLibraries"/>
103
                    <attr name="position" intvalue="200"/>
104
                </file>
105
                <folder name="BuildCategory">
97
                <folder name="BuildCategory">
106
                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.java.j2seproject.ui.customizer.Bundle"/>
98
                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.java.j2seproject.ui.customizer.Bundle"/>
107
                    <attr name="position" intvalue="300"/>
99
                    <attr name="position" intvalue="300"/>
108
                    <file name="Build.instance">
109
                        <attr name="instanceCreate" methodvalue="org.netbeans.modules.java.j2seproject.ui.customizer.J2SECompositePanelProvider.createBuild"/>
110
                        <attr name="position" intvalue="100"/>
111
                    </file>
112
                    <file name="Jar.instance">
113
                        <attr name="instanceCreate" methodvalue="org.netbeans.modules.java.j2seproject.ui.customizer.J2SECompositePanelProvider.createJar"/>
114
                        <attr name="position" intvalue="200"/>
115
                    </file>
116
                    <file name="Javadoc.instance">
117
                        <attr name="instanceCreate" methodvalue="org.netbeans.modules.java.j2seproject.ui.customizer.J2SECompositePanelProvider.createJavadoc"/>
118
                        <attr name="position" intvalue="300"/>
119
                    </file>
120
                </folder>
100
                </folder>
121
                <file name="Run.instance">
122
                    <attr name="instanceCreate" methodvalue="org.netbeans.modules.java.j2seproject.ui.customizer.J2SECompositePanelProvider.createRun"/>
123
                    <attr name="position" intvalue="400"/>
124
                </file>
125
                <folder name="Application">
101
                <folder name="Application">
126
                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.java.j2seproject.ui.customizer.Bundle"/>
102
                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.java.j2seproject.ui.customizer.Bundle"/>
127
                    <file name="Self.instance">
128
                        <attr name="instanceCreate" methodvalue="org.netbeans.modules.java.j2seproject.ui.customizer.J2SECompositePanelProvider.createApplication"/>
129
                        <attr name="position" intvalue="0"/>
130
                    </file>
131
                </folder>
103
                </folder>
132
            </folder>
133
            
134
            <folder name="Nodes">
135
                <file name="org-netbeans-modules-java-j2seproject-ui-SourceNodeFactory.instance">
136
                    <attr name="position" intvalue="200"/>
137
                </file>
138
                <file name="org-netbeans-modules-java-j2seproject-ui-LibrariesNodeFactory.instance">
139
                    <attr name="position" intvalue="300"/>
140
                </file>
141
            </folder>
104
            </folder>
142
            
105
            
143
            <folder name="Lookup"/>
106
            <folder name="Lookup"/>
(-)a/projectuiapi/nbproject/project.properties (-1 / +1 lines)
Lines 43-46 Link Here
43
is.autoload=true
43
is.autoload=true
44
javadoc.arch=${basedir}/arch.xml
44
javadoc.arch=${basedir}/arch.xml
45
javadoc.apichanges=${basedir}/apichanges.xml
45
javadoc.apichanges=${basedir}/apichanges.xml
46
46
cp.extra=${nb_all}/libs.javacapi/external/javac-api-nb-7.0-b07.jar
(-)a/projectuiapi/src/org/netbeans/modules/project/uiapi/ProjectCustomizerCategoryProcessor.java (+80 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
5
 *
6
 * The contents of this file are subject to the terms of either the GNU
7
 * General Public License Version 2 only ("GPL") or the Common
8
 * Development and Distribution License("CDDL") (collectively, the
9
 * "License"). You may not use this file except in compliance with the
10
 * License. You can obtain a copy of the License at
11
 * http://www.netbeans.org/cddl-gplv2.html
12
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13
 * specific language governing permissions and limitations under the
14
 * License.  When distributing the software, include this License Header
15
 * Notice in each file and include the License file at
16
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
17
 * particular file as subject to the "Classpath" exception as provided
18
 * by Sun in the GPL Version 2 section of the License file that
19
 * accompanied this code. If applicable, add the following below the
20
 * License Header, with the fields enclosed by brackets [] replaced by
21
 * your own identifying information:
22
 * "Portions Copyrighted [year] [name of copyright owner]"
23
 *
24
 * If you wish your version of this file to be governed by only the CDDL
25
 * or only the GPL Version 2, indicate your decision by adding
26
 * "[Contributor] elects to include this software in this distribution
27
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
28
 * single choice of license, a recipient has the option to distribute
29
 * your version of this file under either the CDDL, the GPL Version 2 or
30
 * to extend the choice of license to its licensees as provided above.
31
 * However, if you add GPL Version 2 code and therefore, elected the GPL
32
 * Version 2 license, then the option applies only if the new code is
33
 * made subject to such option by the copyright holder.
34
 *
35
 * Contributor(s):
36
 *
37
 * Portions Copyrighted 2008 Sun Microsystems, Inc.
38
 */
39
40
package org.netbeans.modules.project.uiapi;
41
42
import java.util.Set;
43
import javax.annotation.processing.Processor;
44
import javax.annotation.processing.RoundEnvironment;
45
import javax.annotation.processing.SupportedAnnotationTypes;
46
import javax.annotation.processing.SupportedSourceVersion;
47
import javax.lang.model.SourceVersion;
48
import javax.lang.model.element.Element;
49
import javax.lang.model.element.TypeElement;
50
import javax.tools.Diagnostic.Kind;
51
import org.netbeans.spi.project.ui.support.ProjectCustomizer.CompositeCategoryProvider;
52
import org.netbeans.spi.project.ui.support.ProjectCustomizer.RegisteredCategory;
53
import org.openide.filesystems.annotations.LayerBuilder;
54
import org.openide.filesystems.annotations.LayerGeneratingProcessor;
55
import org.openide.util.lookup.Service;
56
57
@Service(Processor.class)
58
@SupportedSourceVersion(SourceVersion.RELEASE_6)
59
@SupportedAnnotationTypes("org.netbeans.spi.project.ui.support.ProjectCustomizer.RegisteredCategory")
60
public class ProjectCustomizerCategoryProcessor extends LayerGeneratingProcessor {
61
62
    @Override
63
    protected boolean doProcess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
64
        if (roundEnv.processingOver()) {
65
            return false;
66
        }
67
        for (Element e : roundEnv.getElementsAnnotatedWith(RegisteredCategory.class)) {
68
            RegisteredCategory rc = e.getAnnotation(RegisteredCategory.class);
69
            try {
70
                new LayerBuilder(layer(e)).instanceFile(e, "Projects/" + rc.projectType() + "/Customizer", rc.id(),
71
                        CompositeCategoryProvider.class, processingEnv).position(rc.position()).write();
72
            } catch (IllegalArgumentException x) {
73
                processingEnv.getMessager().printMessage(Kind.ERROR, x.getLocalizedMessage());
74
                continue;
75
            }
76
        }
77
        return true;
78
    }
79
80
}
(-)a/projectuiapi/src/org/netbeans/modules/project/uiapi/RegisteredNodeFactoryProcessor.java (+80 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
5
 *
6
 * The contents of this file are subject to the terms of either the GNU
7
 * General Public License Version 2 only ("GPL") or the Common
8
 * Development and Distribution License("CDDL") (collectively, the
9
 * "License"). You may not use this file except in compliance with the
10
 * License. You can obtain a copy of the License at
11
 * http://www.netbeans.org/cddl-gplv2.html
12
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13
 * specific language governing permissions and limitations under the
14
 * License.  When distributing the software, include this License Header
15
 * Notice in each file and include the License file at
16
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
17
 * particular file as subject to the "Classpath" exception as provided
18
 * by Sun in the GPL Version 2 section of the License file that
19
 * accompanied this code. If applicable, add the following below the
20
 * License Header, with the fields enclosed by brackets [] replaced by
21
 * your own identifying information:
22
 * "Portions Copyrighted [year] [name of copyright owner]"
23
 *
24
 * If you wish your version of this file to be governed by only the CDDL
25
 * or only the GPL Version 2, indicate your decision by adding
26
 * "[Contributor] elects to include this software in this distribution
27
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
28
 * single choice of license, a recipient has the option to distribute
29
 * your version of this file under either the CDDL, the GPL Version 2 or
30
 * to extend the choice of license to its licensees as provided above.
31
 * However, if you add GPL Version 2 code and therefore, elected the GPL
32
 * Version 2 license, then the option applies only if the new code is
33
 * made subject to such option by the copyright holder.
34
 *
35
 * Contributor(s):
36
 *
37
 * Portions Copyrighted 2008 Sun Microsystems, Inc.
38
 */
39
40
package org.netbeans.modules.project.uiapi;
41
42
import java.util.Set;
43
import javax.annotation.processing.Processor;
44
import javax.annotation.processing.RoundEnvironment;
45
import javax.annotation.processing.SupportedAnnotationTypes;
46
import javax.annotation.processing.SupportedSourceVersion;
47
import javax.lang.model.SourceVersion;
48
import javax.lang.model.element.Element;
49
import javax.lang.model.element.TypeElement;
50
import javax.tools.Diagnostic.Kind;
51
import org.netbeans.spi.project.ui.support.NodeFactory;
52
import org.netbeans.spi.project.ui.support.RegisteredNodeFactory;
53
import org.openide.filesystems.annotations.LayerBuilder;
54
import org.openide.filesystems.annotations.LayerGeneratingProcessor;
55
import org.openide.util.lookup.Service;
56
57
@Service(Processor.class)
58
@SupportedSourceVersion(SourceVersion.RELEASE_6)
59
@SupportedAnnotationTypes("org.netbeans.spi.project.ui.support.RegisteredNodeFactory")
60
public class RegisteredNodeFactoryProcessor extends LayerGeneratingProcessor {
61
62
    @Override
63
    protected boolean doProcess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
64
        if (roundEnv.processingOver()) {
65
            return false;
66
        }
67
        for (Element e : roundEnv.getElementsAnnotatedWith(RegisteredNodeFactory.class)) {
68
            RegisteredNodeFactory rnf = e.getAnnotation(RegisteredNodeFactory.class);
69
            try {
70
                new LayerBuilder(layer(e)).instanceFile(e, "Projects/" + rnf.projectType() + "/Nodes", null, NodeFactory.class, processingEnv).
71
                        position(rnf.position()).write();
72
            } catch (IllegalArgumentException x) {
73
                processingEnv.getMessager().printMessage(Kind.ERROR, x.getLocalizedMessage());
74
                continue;
75
            }
76
        }
77
        return true;
78
    }
79
80
}
(-)a/projectuiapi/src/org/netbeans/spi/project/ui/support/ProjectCustomizer.java (+6 lines)
Lines 322-327 Link Here
322
         */
322
         */
323
        JComponent createComponent (Category category, Lookup context );
323
        JComponent createComponent (Category category, Lookup context );
324
    }
324
    }
325
326
    public @interface RegisteredCategory {
327
        String projectType();
328
        String id();
329
        int position() default Integer.MAX_VALUE;
330
    }
325
    
331
    
326
    /** Describes category of properties to be customized by given component
332
    /** Describes category of properties to be customized by given component
327
     */
333
     */
(-)a/projectuiapi/src/org/netbeans/spi/project/ui/support/RegisteredNodeFactory.java (+57 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
5
 *
6
 * The contents of this file are subject to the terms of either the GNU
7
 * General Public License Version 2 only ("GPL") or the Common
8
 * Development and Distribution License("CDDL") (collectively, the
9
 * "License"). You may not use this file except in compliance with the
10
 * License. You can obtain a copy of the License at
11
 * http://www.netbeans.org/cddl-gplv2.html
12
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13
 * specific language governing permissions and limitations under the
14
 * License.  When distributing the software, include this License Header
15
 * Notice in each file and include the License file at
16
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
17
 * particular file as subject to the "Classpath" exception as provided
18
 * by Sun in the GPL Version 2 section of the License file that
19
 * accompanied this code. If applicable, add the following below the
20
 * License Header, with the fields enclosed by brackets [] replaced by
21
 * your own identifying information:
22
 * "Portions Copyrighted [year] [name of copyright owner]"
23
 *
24
 * If you wish your version of this file to be governed by only the CDDL
25
 * or only the GPL Version 2, indicate your decision by adding
26
 * "[Contributor] elects to include this software in this distribution
27
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
28
 * single choice of license, a recipient has the option to distribute
29
 * your version of this file under either the CDDL, the GPL Version 2 or
30
 * to extend the choice of license to its licensees as provided above.
31
 * However, if you add GPL Version 2 code and therefore, elected the GPL
32
 * Version 2 license, then the option applies only if the new code is
33
 * made subject to such option by the copyright holder.
34
 *
35
 * Contributor(s):
36
 *
37
 * Portions Copyrighted 2008 Sun Microsystems, Inc.
38
 */
39
40
package org.netbeans.spi.project.ui.support;
41
42
/**
43
 * Annotation to register a {@link NodeFactory} among a project type's nodes.
44
 */
45
public @interface RegisteredNodeFactory {
46
47
    /**
48
     * Project type identifier, e.g. {@code "org-netbeans-modules-java-j2seproject"}
49
     */
50
    String projectType();
51
52
    /**
53
     * Optional position to order this factory.
54
     */
55
    int position() default Integer.MAX_VALUE;
56
57
}

Return to bug 149136