16 */ |
16 */ |
17 |
17 |
18 package com.nokia.carbide.cpp.internal.pi.wizards.ui; |
18 package com.nokia.carbide.cpp.internal.pi.wizards.ui; |
19 |
19 |
20 import java.io.IOException; |
20 import java.io.IOException; |
|
21 import java.text.MessageFormat; |
21 import java.util.ArrayList; |
22 import java.util.ArrayList; |
22 import java.util.HashMap; |
23 import java.util.HashMap; |
23 import java.util.List; |
24 import java.util.List; |
24 import java.util.Map; |
25 import java.util.Map; |
25 import java.util.Set; |
|
26 import java.util.Map.Entry; |
26 import java.util.Map.Entry; |
27 |
27 |
28 import org.eclipse.core.resources.IFile; |
28 import org.eclipse.core.resources.IFile; |
29 import org.eclipse.core.resources.IProject; |
29 import org.eclipse.core.resources.IProject; |
30 import org.eclipse.core.runtime.CoreException; |
30 import org.eclipse.core.runtime.CoreException; |
31 import org.eclipse.core.runtime.IConfigurationElement; |
31 import org.eclipse.core.runtime.IConfigurationElement; |
32 import org.eclipse.core.runtime.IPath; |
32 import org.eclipse.core.runtime.IPath; |
|
33 import org.eclipse.core.runtime.IProgressMonitor; |
|
34 import org.eclipse.core.runtime.SubProgressMonitor; |
33 import org.eclipse.jface.dialogs.DialogSettings; |
35 import org.eclipse.jface.dialogs.DialogSettings; |
34 import org.eclipse.jface.dialogs.IDialogSettings; |
36 import org.eclipse.jface.dialogs.IDialogSettings; |
|
37 import org.eclipse.jface.operation.IRunnableWithProgress; |
35 import org.eclipse.jface.viewers.IStructuredSelection; |
38 import org.eclipse.jface.viewers.IStructuredSelection; |
36 import org.eclipse.jface.wizard.IWizardPage; |
39 import org.eclipse.jface.wizard.IWizardPage; |
37 import org.eclipse.jface.wizard.Wizard; |
40 import org.eclipse.jface.wizard.Wizard; |
38 import org.eclipse.swt.widgets.Composite; |
41 import org.eclipse.swt.widgets.Composite; |
39 import org.eclipse.swt.widgets.Display; |
42 import org.eclipse.swt.widgets.Display; |
40 import org.eclipse.ui.IImportWizard; |
43 import org.eclipse.ui.IImportWizard; |
41 import org.eclipse.ui.INewWizard; |
44 import org.eclipse.ui.INewWizard; |
42 import org.eclipse.ui.IWorkbench; |
45 import org.eclipse.ui.IWorkbench; |
|
46 import org.eclipse.ui.PlatformUI; |
|
47 import org.eclipse.ui.progress.IProgressService; |
43 |
48 |
44 import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder; |
49 import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder; |
45 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration; |
50 import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration; |
46 import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo; |
51 import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo; |
47 import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext; |
52 import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext; |
|
53 import com.nokia.carbide.cpp.internal.pi.analyser.AnalyserDataProcessor; |
|
54 import com.nokia.carbide.cpp.internal.pi.utils.PIUtilities; |
48 import com.nokia.carbide.cpp.internal.pi.wizards.ui.util.IPkgEntry; |
55 import com.nokia.carbide.cpp.internal.pi.wizards.ui.util.IPkgEntry; |
49 import com.nokia.carbide.cpp.internal.pi.wizards.ui.util.RofsObySymbolPair; |
56 import com.nokia.carbide.cpp.internal.pi.wizards.ui.util.RofsObySymbolPair; |
50 import com.nokia.carbide.cpp.pi.button.BupEventMapManager; |
57 import com.nokia.carbide.cpp.pi.button.BupEventMapManager; |
51 import com.nokia.carbide.cpp.pi.button.ButtonPlugin; |
58 import com.nokia.carbide.cpp.pi.button.ButtonPlugin; |
52 import com.nokia.carbide.cpp.pi.importer.SampleImporter; |
59 import com.nokia.carbide.cpp.pi.importer.SampleImporter; |
|
60 import com.nokia.carbide.cpp.pi.util.GeneralMessages; |
53 import com.nokia.carbide.cpp.pi.wizards.WizardsPlugin; |
61 import com.nokia.carbide.cpp.pi.wizards.WizardsPlugin; |
54 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext; |
62 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext; |
55 import com.nokia.carbide.cpp.ui.CarbideUIPlugin; |
63 import com.nokia.carbide.cpp.ui.CarbideUIPlugin; |
56 import com.nokia.carbide.cpp.ui.ICarbideSharedImages; |
64 import com.nokia.carbide.cpp.ui.ICarbideSharedImages; |
57 import com.nokia.cpp.internal.api.utils.core.Check; |
65 import com.nokia.cpp.internal.api.utils.core.Check; |
74 private NewPIWizardPageRomSubTask pageObySym; |
82 private NewPIWizardPageRomSubTask pageObySym; |
75 private NewPIWizardPageCustomTask pageCustom; |
83 private NewPIWizardPageCustomTask pageCustom; |
76 private NewPIWizardPageBupMapTask pageBupMap; |
84 private NewPIWizardPageBupMapTask pageBupMap; |
77 private NewPIWizardPageOutputTask pageOutput; |
85 private NewPIWizardPageOutputTask pageOutput; |
78 private ArrayList<IFile> tmpPkgList = new ArrayList<IFile>(); |
86 private ArrayList<IFile> tmpPkgList = new ArrayList<IFile>(); |
79 private Set<Integer> traceSet; |
|
80 |
87 |
81 protected IProject piProject; |
88 protected IProject piProject; |
82 IWorkbench workbench; |
89 IWorkbench workbench; |
83 |
90 |
84 NewPIWizardSettings wizardSettings = NewPIWizardSettings.getInstance(); |
91 NewPIWizardSettings wizardSettings = NewPIWizardSettings.getInstance(); |
|
92 |
|
93 private List<ProfilerDataPlugins> profilerDataPlugins; |
85 |
94 |
86 /** |
95 /** |
87 * Constructor for NewPIWizard. |
96 * Constructor for NewPIWizard. |
88 */ |
97 */ |
89 public NewPIWizard() { |
98 public NewPIWizard() { |
204 } |
212 } |
205 tmpPkgList.clear(); |
213 tmpPkgList.clear(); |
206 } |
214 } |
207 |
215 |
208 private void createNewProject() { |
216 private void createNewProject() { |
209 SampleImporter sampleImporter = SampleImporter.getInstance(); |
217 |
|
218 final SampleImporter sampleImporter = SampleImporter.getInstance(); |
210 NewPIWizardSettings wizardSettings = NewPIWizardSettings.getInstance(); |
219 NewPIWizardSettings wizardSettings = NewPIWizardSettings.getInstance(); |
211 Map<Object, IFile> preprocessedMap = new HashMap<Object, IFile>(); |
220 Map<Object, IFile> preprocessedMap = new HashMap<Object, IFile>(); |
212 sampleImporter.clear(); |
221 sampleImporter.clear(); |
213 |
222 |
214 sampleImporter.setDatFileName(wizardSettings.sampleFileName); |
|
215 String container = wizardSettings.outputContainer.getFullPath().toString(); |
223 String container = wizardSettings.outputContainer.getFullPath().toString(); |
216 if (container.startsWith("/")) //$NON-NLS-1$ |
224 if (container.startsWith("/")) //$NON-NLS-1$ |
217 container = container.substring(1, container.length()); |
225 container = container.substring(1, container.length()); |
218 sampleImporter.setProjectName(container); |
226 sampleImporter.setProjectName(container); |
219 sampleImporter.setPiFileName(wizardSettings.piFileName); |
227 sampleImporter.setPiFileName(wizardSettings.piFileName); |
303 sampleImporter.setBupMapSymbianSDKId(""); //$NON-NLS-1$ |
311 sampleImporter.setBupMapSymbianSDKId(""); //$NON-NLS-1$ |
304 sampleImporter.setBupMapIsBuiltIn(false); |
312 sampleImporter.setBupMapIsBuiltIn(false); |
305 sampleImporter.setBupMapIsWorkspace(true); |
313 sampleImporter.setBupMapIsWorkspace(true); |
306 } |
314 } |
307 } |
315 } |
308 |
|
309 sampleImporter.importSamples(false); // not waiting NPI save complete for responsive UI, save NPI on background |
|
310 |
316 |
|
317 |
|
318 if(profilerDataPlugins.size() <= 1){ |
|
319 for(ProfilerDataPlugins pdp : profilerDataPlugins){ |
|
320 sampleImporter.setDatFileName(pdp.getProfilerDataPath().toString()); |
|
321 // due to PI shortcomings (i.e. plugins that create pages have to come first) |
|
322 // the plugins have to be sorted by trace id |
|
323 sampleImporter.importSamples(false, PIUtilities.sortPlugins(pdp.getSelectedPlugins()), true, null, null); |
|
324 break; |
|
325 } |
|
326 } |
|
327 else{ |
|
328 final int[] i={1}; |
|
329 final int count = profilerDataPlugins.size(); |
|
330 IProgressService progressService = PlatformUI.getWorkbench().getProgressService(); |
|
331 IRunnableWithProgress runnable= new IRunnableWithProgress() { |
|
332 |
|
333 public void run(IProgressMonitor progressMonitor) { |
|
334 progressMonitor.beginTask("", count*AnalyserDataProcessor.TOTAL_PROGRESS_COUNT); //$NON-NLS-1$ |
|
335 String suffixTaskName; |
|
336 for (ProfilerDataPlugins pdp : profilerDataPlugins) { |
|
337 if(progressMonitor.isCanceled()){ |
|
338 break; |
|
339 } |
|
340 suffixTaskName = MessageFormat.format(Messages.getString("NewPIWizard.suffixTaskName"), i[0]++, count); //$NON-NLS-1$ |
|
341 sampleImporter.setDatFileName(pdp.getProfilerDataPath().toString()); |
|
342 sampleImporter.importSamples(false, PIUtilities |
|
343 .sortPlugins(pdp.getSelectedPlugins()), false, suffixTaskName, |
|
344 new SubProgressMonitor(progressMonitor, AnalyserDataProcessor.TOTAL_PROGRESS_COUNT)); |
|
345 } |
|
346 } |
|
347 |
|
348 }; |
|
349 try { |
|
350 progressService.busyCursorWhile(runnable); |
|
351 } catch (Exception e) { |
|
352 GeneralMessages.showErrorMessage(e.getMessage()); |
|
353 } |
|
354 } |
311 cleanTempPkgFile(); |
355 cleanTempPkgFile(); |
312 } |
356 } |
313 |
357 |
314 public void init(IWorkbench workbench, IStructuredSelection selection) { |
358 public void init(IWorkbench workbench, IStructuredSelection selection) { |
315 this.workbench = workbench; |
359 this.workbench = workbench; |
338 } |
382 } |
339 // after ending page |
383 // after ending page |
340 return true; |
384 return true; |
341 } |
385 } |
342 |
386 |
343 // all trace ID, we can check this for trace specific handling |
|
344 public Set<Integer> getTraceSet() { |
|
345 return traceSet; |
|
346 } |
|
347 |
|
348 // all trace ID, we can do trace specific handling later |
|
349 public void setTraceSet(Set<Integer> myTraceSet) { |
|
350 traceSet = myTraceSet; |
|
351 } |
|
352 |
|
353 public IWizardPage getPreviousPage (IWizardPage page) { |
387 public IWizardPage getPreviousPage (IWizardPage page) { |
354 NewPIWizardSettings settings = NewPIWizardSettings.getInstance(); |
388 NewPIWizardSettings settings = NewPIWizardSettings.getInstance(); |
355 if (page == pageOutput && settings.enableCust == false) { |
389 if (page == pageOutput && settings.enableCust == false) { |
356 return getPreviousPage(pageCustom); |
390 return getPreviousPage(pageCustom); |
357 } else if (page == pageCustom && getTraceSet().contains(ButtonPlugin.getDefault().getTraceId()) == false){ |
391 } else if (page == pageCustom && isButtonPluginUsed() == false){ |
358 return getPreviousPage(pageBupMap); |
392 return getPreviousPage(pageBupMap); |
359 } else if (page == pageBupMap && wizardSettings.haveRomOnly == false && wizardSettings.haveAppRom == false) { |
393 } else if (page == pageBupMap && wizardSettings.haveRomOnly == false && wizardSettings.haveAppRom == false) { |
360 return getPreviousPage(pageObySym); |
394 return getPreviousPage(pageObySym); |
361 } else if (page == pageObySym && wizardSettings.haveAppOnly == false && wizardSettings.haveAppRom == false) { |
395 } else if (page == pageObySym && wizardSettings.haveAppOnly == false && wizardSettings.haveAppRom == false) { |
362 return getPreviousPage(pagePkgList); |
396 return getPreviousPage(pagePkgList); |
368 public IWizardPage getNextPage (IWizardPage page) { |
402 public IWizardPage getNextPage (IWizardPage page) { |
369 if (page == pageConfigSelector && wizardSettings.haveAppOnly == false && wizardSettings.haveAppRom == false) { |
403 if (page == pageConfigSelector && wizardSettings.haveAppOnly == false && wizardSettings.haveAppRom == false) { |
370 return getNextPage(pagePkgList); |
404 return getNextPage(pagePkgList); |
371 } else if (page == pagePkgList && wizardSettings.haveRomOnly == false && wizardSettings.haveAppRom == false) { |
405 } else if (page == pagePkgList && wizardSettings.haveRomOnly == false && wizardSettings.haveAppRom == false) { |
372 return getNextPage(pageObySym); |
406 return getNextPage(pageObySym); |
373 } else if (page == pageObySym && getTraceSet().contains(ButtonPlugin.getDefault().getTraceId()) == false) { |
407 } else if (page == pageObySym && isButtonPluginUsed() == false) { |
374 return getNextPage(pageBupMap); |
408 return getNextPage(pageBupMap); |
375 } else if (page == pageBupMap && wizardSettings.enableCust == false) { |
409 } else if (page == pageBupMap && wizardSettings.enableCust == false) { |
376 return getNextPage(pageCustom); |
410 return getNextPage(pageCustom); |
377 } |
411 } |
378 return super.getNextPage(page); |
412 return super.getNextPage(page); |
379 } |
413 } |
|
414 |
|
415 public void setProfilerDataFiles(List<ProfilerDataPlugins> profilerDataPlugins){ |
|
416 this.profilerDataPlugins = profilerDataPlugins; |
|
417 } |
|
418 |
|
419 private boolean isButtonPluginUsed(){ |
|
420 if(profilerDataPlugins != null){ |
|
421 for(ProfilerDataPlugins pdp : profilerDataPlugins){ |
|
422 if(pdp.getSelectedPlugins().contains(ButtonPlugin.getDefault())){ |
|
423 return true; |
|
424 } |
|
425 } |
|
426 } |
|
427 return false; |
|
428 } |
380 |
429 |
381 } |
430 } |