tmf: Update copyright headers in tmf.ui
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / project / wizards / NewTmfProjectWizard.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2012 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.linuxtools.tmf.ui.project.wizards;
14
15 import java.net.URI;
16
17 import org.eclipse.core.resources.IFolder;
18 import org.eclipse.core.resources.IProject;
19 import org.eclipse.core.resources.IProjectDescription;
20 import org.eclipse.core.resources.IWorkspace;
21 import org.eclipse.core.resources.IWorkspaceRoot;
22 import org.eclipse.core.resources.ResourcesPlugin;
23 import org.eclipse.core.runtime.CoreException;
24 import org.eclipse.core.runtime.IConfigurationElement;
25 import org.eclipse.core.runtime.IExecutableExtension;
26 import org.eclipse.core.runtime.IProgressMonitor;
27 import org.eclipse.core.runtime.NullProgressMonitor;
28 import org.eclipse.jface.viewers.IStructuredSelection;
29 import org.eclipse.jface.wizard.Wizard;
30 import org.eclipse.linuxtools.internal.tmf.ui.Activator;
31 import org.eclipse.linuxtools.tmf.core.TmfCommonConstants;
32 import org.eclipse.linuxtools.tmf.core.TmfProjectNature;
33 import org.eclipse.linuxtools.tmf.ui.project.model.TmfExperimentFolder;
34 import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceFolder;
35 import org.eclipse.ui.INewWizard;
36 import org.eclipse.ui.IWorkbench;
37 import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;
38
39 /**
40 * Wizard implementation for creating a TMF tracing project.
41 *
42 * @version 1.0
43 * @author Francois Chouinard
44 */
45 public class NewTmfProjectWizard extends Wizard implements INewWizard, IExecutableExtension {
46
47 // ------------------------------------------------------------------------
48 // Constants
49 // ------------------------------------------------------------------------
50
51 /**
52 * The wizard id
53 *
54 * @since 2.0
55 */
56 public static final String ID = "org.eclipse.linuxtools.tmf.ui.views.ui.wizards.newProject"; //$NON-NLS-1$
57
58 // ------------------------------------------------------------------------
59 // Attributes
60 // ------------------------------------------------------------------------
61
62 private final String fTtitle;
63 private final String fDescription;
64
65 /**
66 * Wizard main page
67 */
68 protected NewTmfProjectMainWizardPage fMainPage;
69
70 /**
71 * The Project name
72 */
73 protected String fProjectName;
74
75 /**
76 * The project location
77 */
78
79 protected URI fProjectLocation;
80
81 /**
82 * The configuration element.
83 */
84 protected IConfigurationElement fConfigElement;
85
86 /**
87 * The project reference
88 */
89 protected IProject fProject;
90
91 // ------------------------------------------------------------------------
92 // Constructors
93 // ------------------------------------------------------------------------
94
95 /**
96 * Default constructor
97 */
98 public NewTmfProjectWizard() {
99 this(Messages.NewProjectWizard_DialogHeader, Messages.NewProjectWizard_DialogMessage);
100 }
101
102 /**
103 * Constructor
104 * @param title The tile string
105 * @param desc The description string
106 */
107 public NewTmfProjectWizard(String title, String desc) {
108 super();
109 setDialogSettings(Activator.getDefault().getDialogSettings());
110 setNeedsProgressMonitor(true);
111 setForcePreviousAndNextButtons(true);
112 setWindowTitle(title);
113 fTtitle = title;
114 fDescription = desc;
115 }
116
117 // ------------------------------------------------------------------------
118 // Wizard
119 // ------------------------------------------------------------------------
120
121 /*
122 * (non-Javadoc)
123 *
124 * @see org.eclipse.jface.wizard.Wizard#addPages()
125 */
126 @Override
127 public void addPages() {
128 fMainPage = new NewTmfProjectMainWizardPage(Messages.NewProjectWizard_DialogHeader);
129 fMainPage.setTitle(fTtitle);
130 fMainPage.setDescription(fDescription);
131 addPage(fMainPage);
132 }
133
134 /*
135 * (non-Javadoc)
136 *
137 * @see org.eclipse.jface.wizard.Wizard#performCancel()
138 */
139 @Override
140 public boolean performCancel() {
141 return true;
142 }
143
144 /*
145 * (non-Javadoc)
146 *
147 * @see org.eclipse.jface.wizard.Wizard#performFinish()
148 */
149 @Override
150 public boolean performFinish() {
151 fProjectName = fMainPage.getProjectName();
152 fProjectLocation = fMainPage.useDefaults() ? null : fMainPage.getLocationURI();
153 fProject = createProject(fProjectName, fProjectLocation, new NullProgressMonitor());
154 BasicNewProjectResourceWizard.updatePerspective(fConfigElement);
155 return true;
156 }
157
158 private static IProject createProject(String projectName, URI projectLocation, IProgressMonitor monitor) {
159
160 IWorkspace workspace = ResourcesPlugin.getWorkspace();
161 IWorkspaceRoot root = workspace.getRoot();
162 IProject project = root.getProject(projectName);
163
164 try {
165 if (!project.exists()) {
166 IProjectDescription description = workspace.newProjectDescription(project.getName());
167 if (projectLocation != null) {
168 description.setLocationURI(projectLocation);
169 }
170 project.create(description, monitor);
171 }
172
173 if (!project.isOpen()) {
174 project.open(monitor);
175 }
176
177 IProjectDescription description = project.getDescription();
178 description.setNatureIds(new String[] { TmfProjectNature.ID });
179 project.setDescription(description, null);
180
181 IFolder folder = project.getFolder(TmfTraceFolder.TRACE_FOLDER_NAME);
182 if (!folder.exists()) {
183 folder.create(true, true, null);
184 }
185
186 folder = project.getFolder(TmfExperimentFolder.EXPER_FOLDER_NAME);
187 if (!folder.exists()) {
188 folder.create(true, true, null);
189 }
190
191 // create folder for supplementary tracing files
192 folder = project.getFolder(TmfCommonConstants.TRACE_SUPPLEMENATARY_FOLDER_NAME);
193
194 if (!folder.exists()) {
195 folder.create(true, true, null);
196 }
197
198 return project;
199 } catch (CoreException e) {
200 Activator.getDefault().logError("Error creating TMF project " + project.getName(), e); //$NON-NLS-1$
201 }
202 return null;
203 }
204
205 // ------------------------------------------------------------------------
206 // INewWizard
207 // ------------------------------------------------------------------------
208
209 /* (non-Javadoc)
210 * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
211 */
212 @Override
213 public void init(IWorkbench iworkbench, IStructuredSelection istructuredselection) {
214 }
215
216 // ------------------------------------------------------------------------
217 // IExecutableExtension
218 // ------------------------------------------------------------------------
219
220 /*
221 * (non-Javadoc)
222 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
223 */
224 @Override
225 public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
226 fConfigElement = config;
227 }
228
229 }
This page took 0.035044 seconds and 5 git commands to generate.