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

(-)projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java (+4 lines)
Lines 254-259 Link Here
254
    
254
    
255
    public void setMainProject( Project mainProject ) {
255
    public void setMainProject( Project mainProject ) {
256
        synchronized ( this ) {
256
        synchronized ( this ) {
257
            if (!openProjects.contains(mainProject)) {
258
                throw new IllegalArgumentException("Project " + ProjectUtils.getInformation(mainProject).getDisplayName() + " is not open and cannot be set as main.");
259
            }
260
        
257
            this.mainProject = mainProject;
261
            this.mainProject = mainProject;
258
            saveMainProject( mainProject );
262
            saveMainProject( mainProject );
259
        }
263
        }
(-)projectui/src/org/netbeans/modules/project/ui/OpenProjectsTrampolineImpl.java (+8 lines)
Lines 62-65 Link Here
62
        }
62
        }
63
    }
63
    }
64
        
64
        
65
    public Project getMainProject() {
66
        return OpenProjectList.getDefault().getMainProject();
67
    }
68
    
69
    public void setMainProject(Project project) {
70
        OpenProjectList.getDefault().setMainProject(project);
71
    }
72
    
65
}
73
}
(-)projectui/test/unit/src/org/netbeans/modules/project/ui/OpenProjectListTest.java (+63 lines)
Lines 213-218 Link Here
213
        assertFalse("project2 is not in recent projects list", OpenProjectList.getDefault().getRecentProjects().contains(project2));
213
        assertFalse("project2 is not in recent projects list", OpenProjectList.getDefault().getRecentProjects().contains(project2));
214
    }
214
    }
215
    
215
    
216
    public void testMainProject() throws Exception {
217
        FileObject workDir = FileUtil.toFileObject (getWorkDir ());
218
        
219
        FileObject p1 = workDir.createFolder("p1");
220
        FileObject p1TestProject = p1.createFolder("testproject");
221
        
222
        Project project1 = ProjectManager.getDefault().findProject(p1);
223
        
224
        assertNotNull("project1 is recognized", project1);
225
        
226
        FileObject p2 = workDir.createFolder("p2");
227
        FileObject p2TestProject = p2.createFolder("testproject");
228
        
229
        Project project2 = ProjectManager.getDefault().findProject(p2);
230
        
231
        assertNotNull("project2 is recognized", project2);
232
        
233
        FileObject p3 = workDir.createFolder("p3");
234
        FileObject p3TestProject = p3.createFolder("testproject");
235
        
236
        Project project3 = ProjectManager.getDefault().findProject(p3);
237
        
238
        assertNotNull("project3 is recognized", project3);
239
        
240
        assertNull("no main project set when OPL is empty", OpenProjectList.getDefault().getMainProject());
241
        
242
        OpenProjectList.getDefault().open(project1);
243
        
244
        assertNull("open project does not change main project", OpenProjectList.getDefault().getMainProject());
245
        
246
        OpenProjectList.getDefault().setMainProject(project1);
247
        
248
        assertTrue("main project correctly set", OpenProjectList.getDefault().getMainProject() == project1);
249
        
250
        OpenProjectList.getDefault().open(project2);
251
        
252
        assertTrue("open project does not change main project", OpenProjectList.getDefault().getMainProject() == project1);
253
        
254
        OpenProjectList.getDefault().close(new Project[] {project1});
255
        
256
        assertNull("no main project set when main project is closed", OpenProjectList.getDefault().getMainProject());
257
        
258
        boolean exceptionThrown = false;
259
        
260
        try {
261
            OpenProjectList.getDefault().setMainProject(project3);
262
        } catch (IllegalArgumentException e) {
263
            exceptionThrown = true;
264
        }
265
        
266
        assertTrue("IAE thrown when trying to set main project that is not opened", exceptionThrown);
267
        
268
        //the same for a previously opened project:
269
        exceptionThrown = false;
270
        
271
        try {
272
            OpenProjectList.getDefault().setMainProject(project1);
273
        } catch (IllegalArgumentException e) {
274
            exceptionThrown = true;
275
        }
276
        
277
        assertTrue("IAE thrown when trying to set main project that is not opened", exceptionThrown);
278
    }
216
    // helper code
279
    // helper code
217
280
218
    private static class MySubprojectProvider implements SubprojectProvider {
281
    private static class MySubprojectProvider implements SubprojectProvider {
(-)projectuiapi/apichanges.xml (+14 lines)
Lines 76-81 Link Here
76
76
77
    <changes>
77
    <changes>
78
        
78
        
79
        <change id="getSetMainProject">
80
            <api name="general"/>
81
            <summary>Ability to get and set main project</summary>
82
            <version major="1" minor="10"/>
83
            <date day="29" month="7" year="2005"/>
84
            <author login="jlahoda"/>
85
            <compatibility addition="yes" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="compatible" source="compatible">
86
            </compatibility>
87
            <description>
88
                Added <code>getMainProject</code> and <code>setMainProject</code> methods to OpenProjects.
89
            </description>
90
            <issue number="58461"/>
91
        </change>
92
        
79
        <change id="ProjectCustomizer.Category.errorMessage">
93
        <change id="ProjectCustomizer.Category.errorMessage">
80
            <api name="general"/>
94
            <api name="general"/>
81
            <summary>Added ability to set an error message for project customizer's categories.</summary>
95
            <summary>Added ability to set an error message for project customizer's categories.</summary>
(-)projectuiapi/nbproject/project.properties (-1 / +1 lines)
Lines 9-15 Link Here
9
# Code is Sun Microsystems, Inc. Portions Copyright 1997-2005 Sun
9
# Code is Sun Microsystems, Inc. Portions Copyright 1997-2005 Sun
10
# Microsystems, Inc. All Rights Reserved.
10
# Microsystems, Inc. All Rights Reserved.
11
11
12
spec.version.base=1.9.0
12
spec.version.base=1.10.0
13
is.autoload=true
13
is.autoload=true
14
javadoc.title=Project UI API
14
javadoc.title=Project UI API
15
javadoc.arch=${basedir}/arch.xml
15
javadoc.arch=${basedir}/arch.xml
(-)projectuiapi/src/org/netbeans/api/project/ui/OpenProjects.java (+20 lines)
Lines 102-107 Link Here
102
        trampoline.closeAPI (projects);
102
        trampoline.closeAPI (projects);
103
    }
103
    }
104
104
105
    /**Retrieves the current main project set in the IDE.
106
     *
107
     * @return the current main project or null if none
108
     * @since 1.10
109
     */
110
    public Project getMainProject() {
111
        return trampoline.getMainProject();
112
    }
113
    
114
    /**Sets the main project.
115
     *
116
     * @param project project to set as main project (must be open), or
117
     *                <code>null</code> to set none project as main.
118
     * @throws IllegalArgumentException if the project is not opened.
119
     * @since 1.10
120
     */
121
    public void setMainProject(Project project) throws IllegalArgumentException {
122
        trampoline.setMainProject(project);
123
    }
124
    
105
    /**
125
    /**
106
     * Adds a listener to changes in the set of open projects.
126
     * Adds a listener to changes in the set of open projects.
107
     * As this class is a singleton and is not subject to garbage collection,
127
     * As this class is a singleton and is not subject to garbage collection,
(-)projectuiapi/src/org/netbeans/modules/project/uiapi/OpenProjectsTrampoline.java (+4 lines)
Lines 32-35 Link Here
32
    
32
    
33
    public void removePropertyChangeListenerAPI( PropertyChangeListener listener );
33
    public void removePropertyChangeListenerAPI( PropertyChangeListener listener );
34
    
34
    
35
    public Project getMainProject();
36
    
37
    public void setMainProject(Project project);
38
    
35
}
39
}

Return to bug 58461