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

(-)a/java.api.common/apichanges.xml (+17 lines)
Lines 105-110 Link Here
105
105
106
    <!-- ACTUAL CHANGES BEGIN HERE: -->
106
    <!-- ACTUAL CHANGES BEGIN HERE: -->
107
    <changes>
107
    <changes>
108
        <change id="CustomizerProvider3">
109
            <api name="java-api-common"/>
110
            <summary>Enable programmatical closing of project customizer dialog.</summary>
111
            <version major="1" minor="47"/>
112
            <date day="29" month="4" year="2013"/>
113
            <author login="psomol"/>
114
            <compatibility addition="yes"/>
115
            <description>
116
                <p>
117
                    Addded interface <code>CustomizerProvider3</code> extending <code>CustomizerProvider2</code>
118
                    that enables to close project's customizer if it is currently open using
119
                    method <code>closeCustomizer()</code>.
120
                </p>
121
            </description>
122
            <class package="org.netbeans.modules.java.api.common.ui" name="PlatformUiSupport"/>
123
            <issue number="229161"/>
124
        </change>
108
        <change id="jre-profiles">
125
        <change id="jre-profiles">
109
            <api name="java-api-common"/>
126
            <api name="java-api-common"/>
110
            <summary>Added UI support for JRE profiles.</summary>
127
            <summary>Added UI support for JRE profiles.</summary>
(-)a/java.api.common/manifest.mf (-1 / +1 lines)
Lines 1-4 Link Here
1
Manifest-Version: 1.0
1
Manifest-Version: 1.0
2
OpenIDE-Module: org.netbeans.modules.java.api.common/0
2
OpenIDE-Module: org.netbeans.modules.java.api.common/0
3
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/java/api/common/resources/Bundle.properties
3
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/java/api/common/resources/Bundle.properties
4
OpenIDE-Module-Specification-Version: 1.46
4
OpenIDE-Module-Specification-Version: 1.47
(-)a/java.api.common/src/org/netbeans/modules/java/api/common/project/ui/customizer/CustomizerProvider3.java (+58 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2013 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2013 Sun Microsystems, Inc.
41
 */
42
package org.netbeans.modules.java.api.common.project.ui.customizer;
43
44
/**
45
 * CustomizerProvider enhanced with ability to explicitly close a customizer
46
 * that may be currently opened
47
 * 
48
 * @author Petr Somol
49
 * @since 
50
 */
51
public interface CustomizerProvider3 extends CustomizerProvider2 {
52
    
53
    /**
54
     * Close customizer if it is currently opened as if it was cancelled
55
     */
56
    void closeCustomizer();
57
    
58
}
(-)a/java.api.common/test/unit/src/org/netbeans/modules/java/api/common/project/ui/customizer/CustomizerProvider3Test.java (+145 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2013 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2013 Sun Microsystems, Inc.
41
 */
42
package org.netbeans.modules.java.api.common.project.ui.customizer;
43
44
import java.util.HashMap;
45
import java.util.Map;
46
import org.junit.BeforeClass;
47
import org.junit.Test;
48
import static org.junit.Assert.*;
49
import org.netbeans.junit.MockServices;
50
import org.openide.util.Lookup;
51
52
/**
53
 * Test of SPI class org.netbeans.modules.java.api.common.project.ui.customizer.CustomizerProvider3
54
 *
55
 * @author Petr Somol
56
 */
57
public class CustomizerProvider3Test {
58
59
    public CustomizerProvider3Test() {
60
    }
61
    
62
    @BeforeClass
63
    public static void setUpClass() throws Exception {
64
        MockServices.setServices(CustomizerProvider3Test.MockCustomizerProvider.class);
65
    }
66
67
    @Test
68
    public void testShowCustomizer() {
69
         CustomizerProvider3 provider = Lookup.getDefault().lookup(CustomizerProvider3.class);
70
         assertNotNull(provider);
71
         MockCustomizerProvider mockProvider = (MockCustomizerProvider)provider;
72
         assertFalse(mockProvider.customizerOpen());
73
         
74
         provider.showCustomizer();
75
         
76
         assertTrue(mockProvider.customizerOpen());
77
    }
78
    
79
    @Test
80
    public void testCloseCancelCustomizer() {
81
         CustomizerProvider3 provider = Lookup.getDefault().lookup(CustomizerProvider3.class);
82
         assertNotNull(provider);
83
         MockCustomizerProvider mockProvider = (MockCustomizerProvider)provider;
84
         assertTrue(mockProvider.customizerOpen());
85
86
         MockCustomizer.invokeProjectModifyingAction();
87
         
88
         assertFalse(mockProvider.customizerOpen());
89
    }
90
91
    public static final class MockCustomizerProvider implements CustomizerProvider3 {
92
93
        private MockCustomizer customizerDialog = null;
94
        private Map<String,String> props = new HashMap<>();
95
        
96
        public MockCustomizerProvider() {
97
        }
98
        
99
        @Override
100
        public void closeCustomizer() {
101
            customizerDialog = null;
102
        }
103
104
        @Override
105
        public void showCustomizer(String preselectedCategory, String preselectedSubCategory) {
106
            showCustomizer();
107
        }
108
109
        @Override
110
        public void showCustomizer() {
111
            customizerDialog = new MockCustomizer();
112
        }
113
        
114
        public void loadProperties(Map<String,String> properties) {
115
            this.props.putAll(properties);
116
        }
117
        
118
        public void saveProperties(Map<String,String> properties) {
119
            properties.putAll(this.props);
120
        }
121
        
122
        public boolean customizerOpen() {
123
            return customizerDialog != null;
124
        }
125
        
126
    }
127
    
128
    /**
129
     *
130
     */
131
    public static final class MockCustomizer{
132
133
        // user invokes an action that changes
134
        // project metafiles to such extent that project
135
        // properties dialog needs to be closed
136
        // before making changes to project metafiles
137
        public static void invokeProjectModifyingAction() {
138
            CustomizerProvider3 provider = Lookup.getDefault().lookup(CustomizerProvider3.class);
139
            provider.closeCustomizer();
140
            // ..do whatever is needed
141
        }
142
        
143
    }
144
    
145
}
(-)a/java.j2seproject/nbproject/project.properties (-1 / +1 lines)
Lines 42-48 Link Here
42
42
43
javac.compilerargs=-Xlint -Xlint:-serial
43
javac.compilerargs=-Xlint -Xlint:-serial
44
javac.source=1.7
44
javac.source=1.7
45
spec.version.base=1.61.0
45
spec.version.base=1.64.0
46
46
47
javadoc.arch=${basedir}/arch.xml
47
javadoc.arch=${basedir}/arch.xml
48
javadoc.apichanges=${basedir}/apichanges.xml
48
javadoc.apichanges=${basedir}/apichanges.xml
(-)a/java.j2seproject/nbproject/project.xml (-1 / +1 lines)
Lines 142-148 Link Here
142
                    <compile-dependency/>
142
                    <compile-dependency/>
143
                    <run-dependency>
143
                    <run-dependency>
144
                        <release-version>0-1</release-version>
144
                        <release-version>0-1</release-version>
145
                        <specification-version>1.45</specification-version>
145
                        <specification-version>1.47</specification-version>
146
                    </run-dependency>
146
                    </run-dependency>
147
                </dependency>
147
                </dependency>
148
                <dependency>
148
                <dependency>
(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/ui/customizer/CustomizerProviderImpl.java (-3 / +13 lines)
Lines 60-66 Link Here
60
import org.netbeans.api.project.Project;
60
import org.netbeans.api.project.Project;
61
import org.netbeans.api.project.ProjectUtils;
61
import org.netbeans.api.project.ProjectUtils;
62
import org.netbeans.modules.java.api.common.ant.UpdateHelper;
62
import org.netbeans.modules.java.api.common.ant.UpdateHelper;
63
import org.netbeans.modules.java.api.common.project.ui.customizer.CustomizerProvider2;
63
import org.netbeans.modules.java.api.common.project.ui.customizer.CustomizerProvider3;
64
import org.netbeans.modules.java.j2seproject.J2SEProject;
64
import org.netbeans.modules.java.j2seproject.J2SEProject;
65
import org.netbeans.modules.java.api.common.project.ui.customizer.ProjectSharability;
65
import org.netbeans.modules.java.api.common.project.ui.customizer.ProjectSharability;
66
import org.netbeans.spi.project.support.ant.GeneratedFilesHelper;
66
import org.netbeans.spi.project.support.ant.GeneratedFilesHelper;
Lines 76-84 Link Here
76
76
77
/** Customization of J2SE project
77
/** Customization of J2SE project
78
 *
78
 *
79
 * @author Petr Hrebejk
79
 * @author Petr Hrebejk, Petr Somol
80
 */
80
 */
81
public class CustomizerProviderImpl implements CustomizerProvider2, ProjectSharability {
81
public class CustomizerProviderImpl implements CustomizerProvider3, ProjectSharability {
82
    
82
    
83
    private final J2SEProject project;
83
    private final J2SEProject project;
84
    private final UpdateHelper updateHelper;
84
    private final UpdateHelper updateHelper;
Lines 154-159 Link Here
154
        createJ2SEProjectProperties().makeSharable();
156
        createJ2SEProjectProperties().makeSharable();
155
    }
157
    }
156
158
159
    @Override
160
    public void closeCustomizer() {
161
        Dialog dialog = project2Dialog.get(project);
162
        if ( dialog != null ) {            
163
            dialog.setVisible(false);
164
            dialog.dispose();
165
            project2Dialog.remove( project );
166
        }
167
    }
168
157
    private class StoreListener implements ActionListener {
169
    private class StoreListener implements ActionListener {
158
    
170
    
159
        private Project project;
171
        private Project project;
(-)a/javafx2.project/nbproject/project.xml (-2 / +2 lines)
Lines 73-79 Link Here
73
                    <compile-dependency/>
73
                    <compile-dependency/>
74
                    <run-dependency>
74
                    <run-dependency>
75
                        <release-version>0-1</release-version>
75
                        <release-version>0-1</release-version>
76
                        <specification-version>1.24</specification-version>
76
                        <specification-version>1.47</specification-version>
77
                    </run-dependency>
77
                    </run-dependency>
78
                </dependency>
78
                </dependency>
79
                <dependency>
79
                <dependency>
Lines 82-88 Link Here
82
                    <compile-dependency/>
82
                    <compile-dependency/>
83
                    <run-dependency>
83
                    <run-dependency>
84
                        <release-version>1</release-version>
84
                        <release-version>1</release-version>
85
                        <specification-version>1.60</specification-version>
85
                        <specification-version>1.64</specification-version>
86
                    </run-dependency>
86
                    </run-dependency>
87
                </dependency>
87
                </dependency>
88
                <dependency>
88
                <dependency>

Return to bug 229161