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

(-)projectui/nbproject/project.properties (-1 / +1 lines)
Lines 42-48 Link Here
42
42
43
javac.compilerargs=-Xlint:unchecked
43
javac.compilerargs=-Xlint:unchecked
44
javac.source=1.6
44
javac.source=1.6
45
spec.version.base=1.36.0
45
spec.version.base=1.37.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
(-)projectui/src/org/netbeans/modules/project/ui/OpenProjectList.java (+44 lines)
Lines 91-96 Link Here
91
import org.netbeans.api.project.ProjectInformation;
91
import org.netbeans.api.project.ProjectInformation;
92
import org.netbeans.api.project.ProjectManager;
92
import org.netbeans.api.project.ProjectManager;
93
import org.netbeans.api.project.ProjectUtils;
93
import org.netbeans.api.project.ProjectUtils;
94
import org.netbeans.api.project.ui.ProjectGroup;
95
import org.netbeans.api.project.ui.ProjectGroupChangeEvent;
96
import org.netbeans.api.project.ui.ProjectGroupChangeListener;
94
import static org.netbeans.modules.project.ui.Bundle.*;
97
import static org.netbeans.modules.project.ui.Bundle.*;
95
import org.netbeans.modules.project.ui.api.UnloadedProjectInformation;
98
import org.netbeans.modules.project.ui.api.UnloadedProjectInformation;
96
import org.netbeans.modules.project.ui.groups.Group;
99
import org.netbeans.modules.project.ui.groups.Group;
Lines 184-189 Link Here
184
    
187
    
185
    private PropertyChangeListener infoListener;
188
    private PropertyChangeListener infoListener;
186
    private final LoadOpenProjects LOAD;
189
    private final LoadOpenProjects LOAD;
190
    private final ArrayList<ProjectGroupChangeListener> projectGroupSupport;
187
    
191
    
188
    OpenProjectList() {
192
    OpenProjectList() {
189
        LOAD = new LoadOpenProjects(0);
193
        LOAD = new LoadOpenProjects(0);
Lines 200-205 Link Here
200
        pchSupport = new PropertyChangeSupport( this );
204
        pchSupport = new PropertyChangeSupport( this );
201
        recentProjects = new RecentProjectList(10); // #47134
205
        recentProjects = new RecentProjectList(10); // #47134
202
        recentTemplates = new ArrayList<String>();
206
        recentTemplates = new ArrayList<String>();
207
        projectGroupSupport = new ArrayList<ProjectGroupChangeListener>();
203
    }
208
    }
204
    
209
    
205
           
210
           
Lines 263-268 Link Here
263
        return recentTemplates;
268
        return recentTemplates;
264
    }
269
    }
265
    
270
    
271
272
    void addProjectGroupChangeListener(ProjectGroupChangeListener listener) {
273
        synchronized (projectGroupSupport) {
274
            projectGroupSupport.add(listener);
275
        }
276
    }
277
    
278
    void removeProjectGroupChangeListener(ProjectGroupChangeListener listener) {
279
        synchronized (projectGroupSupport) {
280
            projectGroupSupport.remove(listener);
281
        }
282
    }
283
    
284
    public void fireProjectGroupChanging(Group oldGroup, Group newGroup) {
285
        List<ProjectGroupChangeListener> list = new ArrayList<ProjectGroupChangeListener>();
286
        synchronized (projectGroupSupport) {
287
            list.addAll(projectGroupSupport);
288
        }
289
        ProjectGroup o = oldGroup != null ? org.netbeans.modules.project.uiapi.Utilities.ACCESSOR.createGroup(oldGroup.getName(), oldGroup.prefs()) : null;
290
        ProjectGroup n = newGroup != null ? org.netbeans.modules.project.uiapi.Utilities.ACCESSOR.createGroup(newGroup.getName(), newGroup.prefs()) : null;
291
        ProjectGroupChangeEvent event = new ProjectGroupChangeEvent(o, n);
292
        for (ProjectGroupChangeListener l : list) {
293
            l.projectGroupChanging(event);
294
        }
295
    }
296
    
297
    public void fireProjectGroupChanged(Group oldGroup, Group newGroup) {
298
        List<ProjectGroupChangeListener> list = new ArrayList<ProjectGroupChangeListener>();
299
        synchronized (projectGroupSupport) {
300
            list.addAll(projectGroupSupport);
301
        }
302
        ProjectGroup o = oldGroup != null ? org.netbeans.modules.project.uiapi.Utilities.ACCESSOR.createGroup(oldGroup.getName(), oldGroup.prefs()) : null;
303
        ProjectGroup n = newGroup != null ? org.netbeans.modules.project.uiapi.Utilities.ACCESSOR.createGroup(newGroup.getName(), newGroup.prefs()) : null;
304
        ProjectGroupChangeEvent event = new ProjectGroupChangeEvent(o, n);
305
        for (ProjectGroupChangeListener l : list) {
306
            l.projectGroupChanged(event);
307
        }
308
    }
309
    
266
    private final class LoadOpenProjects implements Runnable, LookupListener, Future<Project[]> {
310
    private final class LoadOpenProjects implements Runnable, LookupListener, Future<Project[]> {
267
        final RequestProcessor RP = new RequestProcessor("Load Open Projects"); // NOI18N
311
        final RequestProcessor RP = new RequestProcessor("Load Open Projects"); // NOI18N
268
        final RequestProcessor.Task TASK = RP.create(this);
312
        final RequestProcessor.Task TASK = RP.create(this);
(-)projectui/src/org/netbeans/modules/project/ui/OpenProjectListSettings.java (-2 / +35 lines)
Lines 53-58 Link Here
53
import java.io.File;
53
import java.io.File;
54
import java.util.prefs.Preferences;
54
import java.util.prefs.Preferences;
55
import javax.swing.filechooser.FileSystemView;
55
import javax.swing.filechooser.FileSystemView;
56
import org.netbeans.api.project.ui.OpenProjects;
57
import org.netbeans.api.project.ui.ProjectGroup;
58
import org.netbeans.modules.project.ui.groups.Group;
56
import org.openide.filesystems.FileUtil;
59
import org.openide.filesystems.FileUtil;
57
import org.openide.util.Exceptions;
60
import org.openide.util.Exceptions;
58
import org.openide.util.NbBundle;
61
import org.openide.util.NbBundle;
Lines 101-106 Link Here
101
        return getPreferences().get(key, null);
104
        return getPreferences().get(key, null);
102
    }    
105
    }    
103
    
106
    
107
    private String getGroupedProperty(String key) {
108
        ProjectGroup act = OpenProjects.getDefault().getActiveProjectGroup();
109
        if (act != null) {
110
            return getGroupPreferences(act).get(key, null);
111
        }
112
        return getProperty(key);
113
    }
114
    
115
    private String putGroupedProperty(String key, String value, boolean notify) {
116
        ProjectGroup act = OpenProjects.getDefault().getActiveProjectGroup();
117
        if (act != null) {
118
            Preferences prefs = getGroupPreferences(act);
119
            String retvalue = prefs.get(key, null);
120
            if (value != null) {
121
                prefs.put(key, value);
122
            } else {
123
                prefs.remove(key);
124
            }
125
            return retvalue;
126
        }
127
        return putProperty(key, value, notify);
128
        
129
    }
130
    
131
    
104
    protected final List<URL> getURLList(String key) {
132
    protected final List<URL> getURLList(String key) {
105
        List<String> strs = getStringList(key);
133
        List<String> strs = getStringList(key);
106
        List<URL> toRet = new ArrayList<URL>();
134
        List<URL> toRet = new ArrayList<URL>();
Lines 196-201 Link Here
196
        return NbPreferences.forModule(OpenProjectListSettings.class);
224
        return NbPreferences.forModule(OpenProjectListSettings.class);
197
    }
225
    }
198
226
227
    protected final Preferences getGroupPreferences(ProjectGroup group) {
228
        return group.preferencesForPackage(OpenProjectListSettings.class);
229
    }
230
    
231
199
    public List<URL> getOpenProjectsURLs() {
232
    public List<URL> getOpenProjectsURLs() {
200
        return getURLList(OPEN_PROJECTS_URLS);
233
        return getURLList(OPEN_PROJECTS_URLS);
201
    }
234
    }
Lines 254-260 Link Here
254
    }
287
    }
255
    
288
    
256
    public String getLastOpenProjectDir() {
289
    public String getLastOpenProjectDir() {
257
        String result = getProperty( LAST_OPEN_PROJECT_DIR );
290
        String result = getGroupedProperty( LAST_OPEN_PROJECT_DIR );
258
        if (result == null) {
291
        if (result == null) {
259
            result = getProjectsFolder(/* #89624 */false).getAbsolutePath();
292
            result = getProjectsFolder(/* #89624 */false).getAbsolutePath();
260
        }
293
        }
Lines 262-268 Link Here
262
    }
295
    }
263
    
296
    
264
    public void setLastOpenProjectDir( String path ) {
297
    public void setLastOpenProjectDir( String path ) {
265
        putProperty( LAST_OPEN_PROJECT_DIR, path, true  );
298
        putGroupedProperty( LAST_OPEN_PROJECT_DIR, path, true  );
266
    }
299
    }
267
    
300
    
268
    public List<URL> getRecentProjectsURLs() {
301
    public List<URL> getRecentProjectsURLs() {
(-)projectui/src/org/netbeans/modules/project/ui/OpenProjectsTrampolineImpl.java (+22 lines)
Lines 50-55 Link Here
50
import java.util.concurrent.Future;
50
import java.util.concurrent.Future;
51
import org.netbeans.api.project.Project;
51
import org.netbeans.api.project.Project;
52
import org.netbeans.api.project.ui.OpenProjects;
52
import org.netbeans.api.project.ui.OpenProjects;
53
import org.netbeans.api.project.ui.ProjectGroup;
54
import org.netbeans.api.project.ui.ProjectGroupChangeListener;
55
import org.netbeans.modules.project.ui.groups.Group;
53
import org.netbeans.modules.project.uiapi.OpenProjectsTrampoline;
56
import org.netbeans.modules.project.uiapi.OpenProjectsTrampoline;
54
57
55
/**
58
/**
Lines 139-142 Link Here
139
        return OpenProjectList.getDefault().openProjectsAPI();
142
        return OpenProjectList.getDefault().openProjectsAPI();
140
}
143
}
141
    
144
    
145
    @Override
146
    public void addProjectGroupChangeListenerAPI(ProjectGroupChangeListener listener) {
147
        OpenProjectList.getDefault().addProjectGroupChangeListener(listener);
142
}
148
}
149
150
    @Override
151
    public void removeProjectGroupChangeListenerAPI(ProjectGroupChangeListener listener) {
152
        OpenProjectList.getDefault().removeProjectGroupChangeListener(listener);
153
    }
154
155
    @Override
156
    public ProjectGroup getActiveProjectGroupAPI() {
157
        Group gr = Group.getActiveGroup();
158
        if (gr != null) {
159
            return org.netbeans.modules.project.uiapi.Utilities.ACCESSOR.createGroup(gr.getName(), gr.prefs());
160
        }
161
        return null;
162
    }
163
    
164
}
(-)projectui/src/org/netbeans/modules/project/ui/groups/Group.java (-1 / +3 lines)
Lines 171-180 Link Here
171
        if (projectsLoaded) {
171
        if (projectsLoaded) {
172
            // OK if g == old; still want to fix open projects.
172
            // OK if g == old; still want to fix open projects.
173
            switchingGroup.set(true);
173
            switchingGroup.set(true);
174
            OpenProjectList.getDefault().fireProjectGroupChanging(old, getActiveGroup());
174
            try {
175
            try {
175
                open(nue);
176
                open(nue);
176
            } finally {
177
            } finally {
177
                switchingGroup.set(false);
178
                switchingGroup.set(false);
179
                OpenProjectList.getDefault().fireProjectGroupChanged(old, getActiveGroup());
178
            }
180
            }
179
        } else {
181
        } else {
180
            OpenProjectListSettings settings = OpenProjectListSettings.getInstance();
182
            OpenProjectListSettings settings = OpenProjectListSettings.getInstance();
Lines 252-258 Link Here
252
        assert id.indexOf('/') == -1;
254
        assert id.indexOf('/') == -1;
253
    }
255
    }
254
256
255
    protected Preferences prefs() {
257
    public Preferences prefs() {
256
        return NODE.node(id);
258
        return NODE.node(id);
257
    }
259
    }
258
260

Return to bug 91031