Lines 45-51
Link Here
|
45 |
import org.netbeans.api.progress.ProgressHandle; |
45 |
import org.netbeans.api.progress.ProgressHandle; |
46 |
import org.netbeans.api.progress.ProgressHandleFactory; |
46 |
import org.netbeans.api.progress.ProgressHandleFactory; |
47 |
import org.netbeans.api.project.Project; |
47 |
import org.netbeans.api.project.Project; |
48 |
import org.netbeans.api.project.ProjectManager; |
|
|
49 |
import org.netbeans.lib.profiler.ProfilerLogger; |
48 |
import org.netbeans.lib.profiler.ProfilerLogger; |
50 |
import org.netbeans.lib.profiler.common.Profiler; |
49 |
import org.netbeans.lib.profiler.common.Profiler; |
51 |
import org.netbeans.lib.profiler.common.ProfilingSettings; |
50 |
import org.netbeans.lib.profiler.common.ProfilingSettings; |
Lines 63-68
Link Here
|
63 |
import org.openide.filesystems.FileObject; |
62 |
import org.openide.filesystems.FileObject; |
64 |
import org.openide.filesystems.FileUtil; |
63 |
import org.openide.filesystems.FileUtil; |
65 |
import org.openide.modules.InstalledFileLocator; |
64 |
import org.openide.modules.InstalledFileLocator; |
|
|
65 |
import org.openide.util.Exceptions; |
66 |
import org.openide.util.NbBundle; |
66 |
import org.openide.util.NbBundle; |
67 |
import org.openide.util.RequestProcessor; |
67 |
import org.openide.util.RequestProcessor; |
68 |
import org.openide.windows.TopComponent; |
68 |
import org.openide.windows.TopComponent; |
Lines 75-87
Link Here
|
75 |
import java.io.InputStream; |
75 |
import java.io.InputStream; |
76 |
import java.io.OutputStream; |
76 |
import java.io.OutputStream; |
77 |
import java.lang.reflect.InvocationTargetException; |
77 |
import java.lang.reflect.InvocationTargetException; |
|
|
78 |
import java.net.URL; |
78 |
import java.text.MessageFormat; |
79 |
import java.text.MessageFormat; |
79 |
import java.util.*; |
80 |
import java.util.*; |
80 |
import javax.swing.*; |
81 |
import javax.swing.*; |
81 |
import javax.swing.border.EmptyBorder; |
82 |
import javax.swing.border.EmptyBorder; |
82 |
import javax.swing.event.ListSelectionEvent; |
83 |
import javax.swing.event.ListSelectionEvent; |
83 |
import javax.swing.event.ListSelectionListener; |
84 |
import javax.swing.event.ListSelectionListener; |
|
|
85 |
import org.netbeans.api.project.FileOwnerQuery; |
86 |
import org.netbeans.api.project.ProjectManager; |
87 |
import org.netbeans.api.project.ProjectUtils; |
84 |
import org.netbeans.modules.profiler.utilities.queries.SettingsFolderQuery; |
88 |
import org.netbeans.modules.profiler.utilities.queries.SettingsFolderQuery; |
|
|
89 |
import org.openide.filesystems.URLMapper; |
85 |
|
90 |
|
86 |
|
91 |
|
87 |
/** |
92 |
/** |
Lines 112-118
Link Here
|
112 |
private static final String LIST_ACCESS_NAME = NbBundle.getMessage(IDEUtils.class, "IDEUtils_ListAccessName"); //NOI18N |
117 |
private static final String LIST_ACCESS_NAME = NbBundle.getMessage(IDEUtils.class, "IDEUtils_ListAccessName"); //NOI18N |
113 |
private static final String OK_BUTTON_TEXT = NbBundle.getMessage(IDEUtils.class, "IDEUtils_OkButtonText"); //NOI18N |
118 |
private static final String OK_BUTTON_TEXT = NbBundle.getMessage(IDEUtils.class, "IDEUtils_OkButtonText"); //NOI18N |
114 |
// ----- |
119 |
// ----- |
115 |
public static final String SETTINGS_DIR = "org-netbeans-modules-profiler"; //NOI18N |
120 |
private static final String SETTINGS_FOR_ATTR = "settingsFor"; |
116 |
private static final RequestProcessor profilerRequestProcessor = new RequestProcessor("Profiler Request Processor", 1); // NOI18N |
121 |
private static final RequestProcessor profilerRequestProcessor = new RequestProcessor("Profiler Request Processor", 1); // NOI18N |
117 |
private static final ErrorManager profilerErrorManager = ErrorManager.getDefault().getInstance("org.netbeans.modules.profiler"); // NOI18N |
122 |
private static final ErrorManager profilerErrorManager = ErrorManager.getDefault().getInstance("org.netbeans.modules.profiler"); // NOI18N |
118 |
|
123 |
|
Lines 282-314
Link Here
|
282 |
} |
287 |
} |
283 |
|
288 |
|
284 |
public static Project getProjectFromSettingsFolder(FileObject settingsFolder) { |
289 |
public static Project getProjectFromSettingsFolder(FileObject settingsFolder) { |
285 |
if ((settingsFolder == null) || !settingsFolder.getName().equals("profiler")) { |
290 |
Object o = settingsFolder.getAttribute(SETTINGS_FOR_ATTR); |
286 |
return null; // NOI18N |
291 |
if (o instanceof URL) { |
|
|
292 |
FileObject d = URLMapper.findFileObject((URL) o); |
293 |
if (d != null && d.isFolder()) { |
294 |
try { |
295 |
return ProjectManager.getDefault().findProject(d); |
296 |
} catch (IOException ex) { |
297 |
Exceptions.printStackTrace(ex); |
298 |
} |
299 |
} |
287 |
} |
300 |
} |
288 |
|
301 |
Project p = FileOwnerQuery.getOwner(settingsFolder); |
289 |
FileObject privateFolder = settingsFolder.getParent(); |
302 |
try { |
290 |
|
303 |
if (p != null && getProjectSettingsFolder(p, false) == settingsFolder) { |
291 |
if ((privateFolder == null) || !privateFolder.getName().equals("private")) { |
304 |
return p; |
292 |
return null; // NOI18N |
305 |
} |
|
|
306 |
} catch (IOException ex) { |
307 |
Exceptions.printStackTrace(ex); |
293 |
} |
308 |
} |
294 |
|
309 |
return null; |
295 |
FileObject nbprojectFolder = privateFolder.getParent(); |
|
|
296 |
|
297 |
if ((nbprojectFolder == null) || !nbprojectFolder.getName().equals("nbproject")) { |
298 |
return null; // NOI18N |
299 |
} |
300 |
|
301 |
FileObject projectFolder = nbprojectFolder.getParent(); |
302 |
|
303 |
if (projectFolder == null) { |
304 |
return null; |
305 |
} |
306 |
|
307 |
try { |
308 |
return ProjectManager.getDefault().findProject(projectFolder); |
309 |
} catch (IOException e) { |
310 |
return null; |
311 |
} |
312 |
} |
310 |
} |
313 |
|
311 |
|
314 |
public static FileObject getProjectSettingsFolder(Project project, boolean create) |
312 |
public static FileObject getProjectSettingsFolder(Project project, boolean create) |
Lines 319-352
Link Here
|
319 |
} else { |
317 |
} else { |
320 |
// resolve 'nbproject' |
318 |
// resolve 'nbproject' |
321 |
FileObject nbproject = project.getProjectDirectory().getFileObject("nbproject"); // NOI18N |
319 |
FileObject nbproject = project.getProjectDirectory().getFileObject("nbproject"); // NOI18N |
322 |
|
320 |
FileObject d; |
323 |
if ((nbproject == null) && create) { |
321 |
if (nbproject != null) { |
324 |
nbproject = project.getProjectDirectory().createFolder("nbproject"); // NOI18N |
322 |
// For compatibility, continue to use nbproject/private/profiler for Ant-based projects. |
|
|
323 |
d = create ? FileUtil.createFolder(nbproject, "private/profiler") : nbproject.getFileObject("private/profiler"); // NOI18N |
324 |
} else { |
325 |
// Maven projects, autoprojects, etc. |
326 |
d = ProjectUtils.getCacheDirectory(project, IDEUtils.class); |
325 |
} |
327 |
} |
326 |
|
328 |
if (d != null) { |
327 |
if (nbproject == null) { |
329 |
d.setAttribute(SETTINGS_FOR_ATTR, project.getProjectDirectory().getURL()); // NOI18N |
328 |
return null; |
|
|
329 |
} |
330 |
} |
330 |
|
331 |
return d; |
331 |
// resolve 'private' |
|
|
332 |
FileObject privateFolder = nbproject.getFileObject("private"); // NOI18N |
333 |
|
334 |
if ((privateFolder == null) && create) { |
335 |
privateFolder = nbproject.createFolder("private"); // NOI18N |
336 |
} |
337 |
|
338 |
if (privateFolder == null) { |
339 |
return null; |
340 |
} |
341 |
|
342 |
// resolve 'profiler' |
343 |
FileObject prof = privateFolder.getFileObject("profiler"); // NOI18N |
344 |
|
345 |
if ((prof == null) && create) { |
346 |
prof = privateFolder.createFolder("profiler"); // NOI18N |
347 |
} |
348 |
|
349 |
return prof; |
350 |
} |
332 |
} |
351 |
} |
333 |
} |
352 |
|
334 |
|