[yocto] [RFCv2 5/7] plugins/sdk.ide: Renamed template process

Atanas Gegov atanas.gegov.oss at gmail.com
Thu Apr 25 05:32:31 PDT 2013


From: Atanas Gegov <atanas.gegov at bmw-carit.de>

The original name of the class had two drawbacks:
firstly, it suggested that it applies only for C
projects and secondly, it did not state that this
is a process.
---
 plugins/org.yocto.sdk.ide/plugin.xml               |    2 +-
 .../sdk/ide/wizard/NewYoctoCProjectTemplate.java   |  251 --------------------
 .../ide/wizard/NewYoctoProjectTemplateProcess.java |  251 ++++++++++++++++++++
 3 files changed, 252 insertions(+), 252 deletions(-)
 delete mode 100644 plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java
 create mode 100644 plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoProjectTemplateProcess.java

diff --git a/plugins/org.yocto.sdk.ide/plugin.xml b/plugins/org.yocto.sdk.ide/plugin.xml
index 2d6b941..7ea55c7 100644
--- a/plugins/org.yocto.sdk.ide/plugin.xml
+++ b/plugins/org.yocto.sdk.ide/plugin.xml
@@ -156,7 +156,7 @@
          point="org.eclipse.cdt.core.templateProcessTypes">
       <processType
             name="NewYoctoProject"
-            processRunner="org.yocto.sdk.ide.wizard.NewYoctoCProjectTemplate">
+            processRunner="org.yocto.sdk.ide.wizard.NewYoctoProjectTemplateProcess">
          <simple
                name="name">
          </simple>
diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java
deleted file mode 100644
index dc9bca5..0000000
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoCProjectTemplate.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 Intel Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Intel - initial API and implementation
- *******************************************************************************/
-package org.yocto.sdk.ide.wizard;
-
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.templateengine.TemplateCore;
-import org.eclipse.cdt.core.templateengine.process.ProcessArgument;
-import org.eclipse.cdt.core.templateengine.process.ProcessFailureException;
-import org.eclipse.cdt.core.templateengine.process.ProcessRunner;
-import org.eclipse.cdt.core.templateengine.process.processes.Messages;
-import org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfigurationManager;
-import org.eclipse.cdt.make.core.MakeCorePlugin;
-import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager;
-import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo;
-import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerProjectDiscoveredPathInfo;
-import org.eclipse.cdt.make.internal.core.scannerconfig.util.SymbolEntry;
-import org.eclipse.cdt.managedbuilder.core.BuildException;
-import org.eclipse.cdt.managedbuilder.core.IConfiguration;
-import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
-import org.eclipse.cdt.managedbuilder.core.IOption;
-import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
-import org.eclipse.cdt.managedbuilder.templateengine.ProjectCreatedActions;
-import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.cdt.ui.wizards.CDTMainWizardPage;
-import org.eclipse.cdt.internal.ui.wizards.ICDTCommonProjectWizard;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceDescription;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.yocto.sdk.ide.YoctoGeneralException;
-import org.yocto.sdk.ide.YoctoProfileElement;
-import org.yocto.sdk.ide.YoctoSDKChecker;
-import org.yocto.sdk.ide.YoctoSDKMessages;
-import org.yocto.sdk.ide.YoctoSDKPlugin;
-import org.yocto.sdk.ide.YoctoUIElement;
-import org.yocto.sdk.ide.natures.YoctoSDKAutotoolsProjectNature;
-import org.yocto.sdk.ide.natures.YoctoSDKCMakeProjectNature;
-import org.yocto.sdk.ide.natures.YoctoSDKEmptyProjectNature;
-import org.yocto.sdk.ide.natures.YoctoSDKNatureUtils;
-import org.yocto.sdk.ide.natures.YoctoSDKProjectNature;
-import org.yocto.sdk.ide.utils.YoctoSDKUtils;
-
-
- at SuppressWarnings("restriction")
-public class NewYoctoCProjectTemplate extends ProcessRunner {
-	protected boolean savedAutoBuildingValue;
-	protected ProjectCreatedActions pca;
-	protected IManagedBuildInfo info;
-	protected List<Character> illegalChars = Arrays.asList('$', '"','#','%','&','\'','(',')','*', '+', ',','.','/',':',';','<','=','>','?','@','[','\\',']','^','`','{','|','}','~');
-	private static final String PROJECT_NAME_ERROR = "Wizard.SDK.Error.ProjectName";
-	
-	public NewYoctoCProjectTemplate() {
-		pca = new ProjectCreatedActions();
-	}
-	private String printIllegalChars(){
-		String print = "";
-		for (Character ch : illegalChars)
-			print += ch + ", ";
-		print = print.substring(0, print.length() - 2);
-		return print;
-	}
-	public void process(TemplateCore template, ProcessArgument[] args, String processId, IProgressMonitor monitor) throws ProcessFailureException {
-
-		String projectName = args[0].getSimpleValue();
-		String location = args[1].getSimpleValue();
-		String artifactExtension = args[2].getSimpleValue();
-		String isCProjectValue = args[3].getSimpleValue();
-		String isEmptyProjetValue = args[4].getSimpleValue();
-		String isAutotoolsProjectValue = args[5].getSimpleValue();
-		String isCMakeProjectValue = args[6].getSimpleValue();
-		boolean isCProject = Boolean.valueOf(isCProjectValue).booleanValue();
-		boolean isEmptyProject = Boolean.valueOf(isEmptyProjetValue).booleanValue();
-		boolean isAutotoolsProject = Boolean.valueOf(isAutotoolsProjectValue).booleanValue();
-		boolean isCMakeProject = Boolean.valueOf(isCMakeProjectValue).booleanValue();
-
-		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
-		try {
-			if (!isValidProjectName(projectName)) {
-				
-				IWizardPage[] pages = MBSCustomPageManager.getPages();
-				if(pages != null && pages.length > 0) {
-					CDTMainWizardPage cdtMainPage = (CDTMainWizardPage)pages[0];
-					cdtMainPage.setPageComplete(false);
-					ICDTCommonProjectWizard wizard = (ICDTCommonProjectWizard) pages[0].getWizard();
-					wizard.performCancel();
-
-					project.delete(true, null);
-				}
-				throw new ProcessFailureException(YoctoSDKMessages.getFormattedString(PROJECT_NAME_ERROR, new Object[]{projectName, printIllegalChars()}));
-			}
-			if (!project.exists()) {
-				IWorkspace workspace = ResourcesPlugin.getWorkspace();
-				turnOffAutoBuild(workspace);
-
-				IPath locationPath = null;
-				if (location != null && !location.trim().equals("")) { //$NON-NLS-1$
-					locationPath = Path.fromPortableString(location);
-				}
-
-				List<?> configs = template.getTemplateInfo().getConfigurations();
-				if (configs == null || configs.size() == 0) {
-					throw new ProcessFailureException(Messages.getString("NewManagedProject.4") + projectName); //$NON-NLS-1$
-				}
-
-				pca.setProject(project);
-				pca.setProjectLocation(locationPath);
-				pca.setConfigs((IConfiguration[]) configs.toArray(new IConfiguration[configs.size()]));
-				pca.setArtifactExtension(artifactExtension);
-				info = pca.createProject(monitor, CCorePlugin.DEFAULT_INDEXER, isCProject);
-
-				addNatures(project, false, isEmptyProject, isAutotoolsProject, isCMakeProject, monitor);
-
-				info.setValid(true);
-				ManagedBuildManager.saveBuildInfo(project, true);
-
-				restoreAutoBuild(workspace);
-			} else {
-				
-				IWorkspace workspace = ResourcesPlugin.getWorkspace();
-				turnOffAutoBuild(workspace);
-
-				YoctoSDKChecker.checkIfGloballySelectedYoctoProfileIsValid();
-
-				addNatures(project, true, isEmptyProject, isAutotoolsProject, isCMakeProject, monitor);
-
-				//restoreAutoBuild(workspace);
-				IDiscoveredPathManager manager = MakeCorePlugin.getDefault().getDiscoveryManager();
-				IDiscoveredPathInfo pathInfo = manager.getDiscoveredInfo(project);
-				if (pathInfo instanceof IPerProjectDiscoveredPathInfo) {
-				    IPerProjectDiscoveredPathInfo projectPathInfo =
-				    	(IPerProjectDiscoveredPathInfo) pathInfo;
-				    projectPathInfo.setIncludeMap(new LinkedHashMap<String, Boolean>());
-				    projectPathInfo.setSymbolMap(new LinkedHashMap<String, SymbolEntry>());
-				    manager.removeDiscoveredInfo(project);    
-				}
-			}
-		}
-		catch (CoreException e)
-		{
-			throw new ProcessFailureException(Messages.getString("NewManagedProject.3") + e.getMessage(), e); //$NON-NLS-1$
-		} 
-		catch (BuildException e)
-		{
-			throw new ProcessFailureException(Messages.getString("NewManagedProject.3") + e.getMessage()); //$NON-NLS-1$
-		}
-		catch (YoctoGeneralException e)
-		{
-			try {
-				project.delete(true, monitor);
-			} catch (CoreException err) {
-				throw new ProcessFailureException(Messages.getString("NewManagedProject.3") + e.getMessage() + " " + err.getMessage()); 
-			}
-			throw new OperationCanceledException(Messages.getString("NewManagedProject.3") + e.getMessage());
-		}
-	}
-	private boolean isValidProjectName(String projectName) {
-		Pattern pattern = Pattern.compile("^[a-zA-Z][a-zA-Z0-9_\\-]*$");
-		Matcher matcher = pattern.matcher(projectName);
-		return matcher.find();
-}
-
-	private void addNatures(IProject project, boolean projectExists, boolean isEmptyProject,
-			boolean isAutotoolsProject, boolean isCMakeProject, IProgressMonitor monitor)
-					throws CoreException, YoctoGeneralException {
-		YoctoSDKNatureUtils.addNature(project, YoctoSDKProjectNature.YoctoSDK_NATURE_ID, monitor);
-
-		YoctoSDKChecker.checkIfGloballySelectedYoctoProfileIsValid();
-
-		YoctoProfileElement profileElement = YoctoSDKUtils.getProfilesFromDefaultStore();
-		YoctoSDKUtils.saveProfilesToProjectPreferences(profileElement, project);
-
-		IPreferenceStore selecteProfileStore = YoctoSDKPlugin.getProfilePreferenceStore(profileElement.getSelectedProfile());
-		YoctoUIElement elem = YoctoSDKUtils.getElemFromStore(selecteProfileStore);
-		YoctoSDKUtils.setEnvironmentVariables(project, elem);
-
-		if (isEmptyProject) {
-			YoctoSDKNatureUtils.addNature(project, YoctoSDKEmptyProjectNature.YoctoSDK_EMPTY_NATURE_ID, monitor);
-		}
-
-		if (isAutotoolsProject) {
-			AutotoolsNewProjectNature.addAutotoolsNature(project, monitor);
-
-			if (!projectExists) {
-				// For each IConfiguration, create a corresponding Autotools Configuration
-				for (IConfiguration cfg : pca.getConfigs()) {
-					AutotoolsConfigurationManager.getInstance().getConfiguration(project, cfg.getName(), true);
-				}
-				AutotoolsConfigurationManager.getInstance().saveConfigs(project);
-			}
-
-			YoctoSDKNatureUtils.addNature(project, YoctoSDKAutotoolsProjectNature.YoctoSDK_AUTOTOOLS_NATURE_ID, monitor);
-			YoctoSDKAutotoolsProjectNature.configureAutotoolsOptions(project);
-		} else if (isCMakeProject) {
-			YoctoSDKNatureUtils.addNature(project, YoctoSDKCMakeProjectNature.YoctoSDK_CMAKE_NATURE_ID, monitor);
-			YoctoSDKCMakeProjectNature.extendProjectEnvironmentForCMake(project);
-		}
-	}
-
-	protected final void turnOffAutoBuild(IWorkspace workspace) throws CoreException {
-		IWorkspaceDescription workspaceDesc = workspace.getDescription();
-		savedAutoBuildingValue = workspaceDesc.isAutoBuilding();
-		workspaceDesc.setAutoBuilding(false);
-		workspace.setDescription(workspaceDesc);
-	}
-	
-	protected final void restoreAutoBuild(IWorkspace workspace) throws CoreException {
-		IWorkspaceDescription workspaceDesc = workspace.getDescription();
-		workspaceDesc.setAutoBuilding(savedAutoBuildingValue);
-		workspace.setDescription(workspaceDesc);
-	}
-	
-	/**
-	 * setOptionValue
-	 * @param config
-	 * @param option
-	 * @param val
-	 * @throws BuildException
-	 */
-	protected void setOptionValue(IConfiguration config, IOption option, String val) throws BuildException {
-		if (val != null) {
-			if (!option.isExtensionElement()) {
-				option.setValue(val);
-			} else {
-				IOption newOption = config.getToolChain().createOption(option, option.getId() + "." + ManagedBuildManager.getRandomNumber(), option.getName(), false); //$NON-NLS-1$
-				newOption.setValue(val);
-			}
-		}
-	}
-}
diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoProjectTemplateProcess.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoProjectTemplateProcess.java
new file mode 100644
index 0000000..bf89488
--- /dev/null
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/wizard/NewYoctoProjectTemplateProcess.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Intel Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Intel - initial API and implementation
+ *******************************************************************************/
+package org.yocto.sdk.ide.wizard;
+
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.cdt.autotools.core.AutotoolsNewProjectNature;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.templateengine.TemplateCore;
+import org.eclipse.cdt.core.templateengine.process.ProcessArgument;
+import org.eclipse.cdt.core.templateengine.process.ProcessFailureException;
+import org.eclipse.cdt.core.templateengine.process.ProcessRunner;
+import org.eclipse.cdt.core.templateengine.process.processes.Messages;
+import org.eclipse.cdt.internal.autotools.core.configure.AutotoolsConfigurationManager;
+import org.eclipse.cdt.make.core.MakeCorePlugin;
+import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager;
+import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo;
+import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerProjectDiscoveredPathInfo;
+import org.eclipse.cdt.make.internal.core.scannerconfig.util.SymbolEntry;
+import org.eclipse.cdt.managedbuilder.core.BuildException;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.templateengine.ProjectCreatedActions;
+import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.cdt.ui.wizards.CDTMainWizardPage;
+import org.eclipse.cdt.internal.ui.wizards.ICDTCommonProjectWizard;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.yocto.sdk.ide.YoctoGeneralException;
+import org.yocto.sdk.ide.YoctoProfileElement;
+import org.yocto.sdk.ide.YoctoSDKChecker;
+import org.yocto.sdk.ide.YoctoSDKMessages;
+import org.yocto.sdk.ide.YoctoSDKPlugin;
+import org.yocto.sdk.ide.YoctoUIElement;
+import org.yocto.sdk.ide.natures.YoctoSDKAutotoolsProjectNature;
+import org.yocto.sdk.ide.natures.YoctoSDKCMakeProjectNature;
+import org.yocto.sdk.ide.natures.YoctoSDKEmptyProjectNature;
+import org.yocto.sdk.ide.natures.YoctoSDKNatureUtils;
+import org.yocto.sdk.ide.natures.YoctoSDKProjectNature;
+import org.yocto.sdk.ide.utils.YoctoSDKUtils;
+
+
+ at SuppressWarnings("restriction")
+public class NewYoctoProjectTemplateProcess extends ProcessRunner {
+	protected boolean savedAutoBuildingValue;
+	protected ProjectCreatedActions pca;
+	protected IManagedBuildInfo info;
+	protected List<Character> illegalChars = Arrays.asList('$', '"','#','%','&','\'','(',')','*', '+', ',','.','/',':',';','<','=','>','?','@','[','\\',']','^','`','{','|','}','~');
+	private static final String PROJECT_NAME_ERROR = "Wizard.SDK.Error.ProjectName";
+	
+	public NewYoctoProjectTemplateProcess() {
+		pca = new ProjectCreatedActions();
+	}
+	private String printIllegalChars(){
+		String print = "";
+		for (Character ch : illegalChars)
+			print += ch + ", ";
+		print = print.substring(0, print.length() - 2);
+		return print;
+	}
+	public void process(TemplateCore template, ProcessArgument[] args, String processId, IProgressMonitor monitor) throws ProcessFailureException {
+
+		String projectName = args[0].getSimpleValue();
+		String location = args[1].getSimpleValue();
+		String artifactExtension = args[2].getSimpleValue();
+		String isCProjectValue = args[3].getSimpleValue();
+		String isEmptyProjetValue = args[4].getSimpleValue();
+		String isAutotoolsProjectValue = args[5].getSimpleValue();
+		String isCMakeProjectValue = args[6].getSimpleValue();
+		boolean isCProject = Boolean.valueOf(isCProjectValue).booleanValue();
+		boolean isEmptyProject = Boolean.valueOf(isEmptyProjetValue).booleanValue();
+		boolean isAutotoolsProject = Boolean.valueOf(isAutotoolsProjectValue).booleanValue();
+		boolean isCMakeProject = Boolean.valueOf(isCMakeProjectValue).booleanValue();
+
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+		try {
+			if (!isValidProjectName(projectName)) {
+				
+				IWizardPage[] pages = MBSCustomPageManager.getPages();
+				if(pages != null && pages.length > 0) {
+					CDTMainWizardPage cdtMainPage = (CDTMainWizardPage)pages[0];
+					cdtMainPage.setPageComplete(false);
+					ICDTCommonProjectWizard wizard = (ICDTCommonProjectWizard) pages[0].getWizard();
+					wizard.performCancel();
+
+					project.delete(true, null);
+				}
+				throw new ProcessFailureException(YoctoSDKMessages.getFormattedString(PROJECT_NAME_ERROR, new Object[]{projectName, printIllegalChars()}));
+			}
+			if (!project.exists()) {
+				IWorkspace workspace = ResourcesPlugin.getWorkspace();
+				turnOffAutoBuild(workspace);
+
+				IPath locationPath = null;
+				if (location != null && !location.trim().equals("")) { //$NON-NLS-1$
+					locationPath = Path.fromPortableString(location);
+				}
+
+				List<?> configs = template.getTemplateInfo().getConfigurations();
+				if (configs == null || configs.size() == 0) {
+					throw new ProcessFailureException(Messages.getString("NewManagedProject.4") + projectName); //$NON-NLS-1$
+				}
+
+				pca.setProject(project);
+				pca.setProjectLocation(locationPath);
+				pca.setConfigs((IConfiguration[]) configs.toArray(new IConfiguration[configs.size()]));
+				pca.setArtifactExtension(artifactExtension);
+				info = pca.createProject(monitor, CCorePlugin.DEFAULT_INDEXER, isCProject);
+
+				addNatures(project, false, isEmptyProject, isAutotoolsProject, isCMakeProject, monitor);
+
+				info.setValid(true);
+				ManagedBuildManager.saveBuildInfo(project, true);
+
+				restoreAutoBuild(workspace);
+			} else {
+				
+				IWorkspace workspace = ResourcesPlugin.getWorkspace();
+				turnOffAutoBuild(workspace);
+
+				YoctoSDKChecker.checkIfGloballySelectedYoctoProfileIsValid();
+
+				addNatures(project, true, isEmptyProject, isAutotoolsProject, isCMakeProject, monitor);
+
+				//restoreAutoBuild(workspace);
+				IDiscoveredPathManager manager = MakeCorePlugin.getDefault().getDiscoveryManager();
+				IDiscoveredPathInfo pathInfo = manager.getDiscoveredInfo(project);
+				if (pathInfo instanceof IPerProjectDiscoveredPathInfo) {
+				    IPerProjectDiscoveredPathInfo projectPathInfo =
+				    	(IPerProjectDiscoveredPathInfo) pathInfo;
+				    projectPathInfo.setIncludeMap(new LinkedHashMap<String, Boolean>());
+				    projectPathInfo.setSymbolMap(new LinkedHashMap<String, SymbolEntry>());
+				    manager.removeDiscoveredInfo(project);    
+				}
+			}
+		}
+		catch (CoreException e)
+		{
+			throw new ProcessFailureException(Messages.getString("NewManagedProject.3") + e.getMessage(), e); //$NON-NLS-1$
+		} 
+		catch (BuildException e)
+		{
+			throw new ProcessFailureException(Messages.getString("NewManagedProject.3") + e.getMessage()); //$NON-NLS-1$
+		}
+		catch (YoctoGeneralException e)
+		{
+			try {
+				project.delete(true, monitor);
+			} catch (CoreException err) {
+				throw new ProcessFailureException(Messages.getString("NewManagedProject.3") + e.getMessage() + " " + err.getMessage()); 
+			}
+			throw new OperationCanceledException(Messages.getString("NewManagedProject.3") + e.getMessage());
+		}
+	}
+	private boolean isValidProjectName(String projectName) {
+		Pattern pattern = Pattern.compile("^[a-zA-Z][a-zA-Z0-9_\\-]*$");
+		Matcher matcher = pattern.matcher(projectName);
+		return matcher.find();
+}
+
+	private void addNatures(IProject project, boolean projectExists, boolean isEmptyProject,
+			boolean isAutotoolsProject, boolean isCMakeProject, IProgressMonitor monitor)
+					throws CoreException, YoctoGeneralException {
+		YoctoSDKNatureUtils.addNature(project, YoctoSDKProjectNature.YoctoSDK_NATURE_ID, monitor);
+
+		YoctoSDKChecker.checkIfGloballySelectedYoctoProfileIsValid();
+
+		YoctoProfileElement profileElement = YoctoSDKUtils.getProfilesFromDefaultStore();
+		YoctoSDKUtils.saveProfilesToProjectPreferences(profileElement, project);
+
+		IPreferenceStore selecteProfileStore = YoctoSDKPlugin.getProfilePreferenceStore(profileElement.getSelectedProfile());
+		YoctoUIElement elem = YoctoSDKUtils.getElemFromStore(selecteProfileStore);
+		YoctoSDKUtils.setEnvironmentVariables(project, elem);
+
+		if (isEmptyProject) {
+			YoctoSDKNatureUtils.addNature(project, YoctoSDKEmptyProjectNature.YoctoSDK_EMPTY_NATURE_ID, monitor);
+		}
+
+		if (isAutotoolsProject) {
+			AutotoolsNewProjectNature.addAutotoolsNature(project, monitor);
+
+			if (!projectExists) {
+				// For each IConfiguration, create a corresponding Autotools Configuration
+				for (IConfiguration cfg : pca.getConfigs()) {
+					AutotoolsConfigurationManager.getInstance().getConfiguration(project, cfg.getName(), true);
+				}
+				AutotoolsConfigurationManager.getInstance().saveConfigs(project);
+			}
+
+			YoctoSDKNatureUtils.addNature(project, YoctoSDKAutotoolsProjectNature.YoctoSDK_AUTOTOOLS_NATURE_ID, monitor);
+			YoctoSDKAutotoolsProjectNature.configureAutotoolsOptions(project);
+		} else if (isCMakeProject) {
+			YoctoSDKNatureUtils.addNature(project, YoctoSDKCMakeProjectNature.YoctoSDK_CMAKE_NATURE_ID, monitor);
+			YoctoSDKCMakeProjectNature.extendProjectEnvironmentForCMake(project);
+		}
+	}
+
+	protected final void turnOffAutoBuild(IWorkspace workspace) throws CoreException {
+		IWorkspaceDescription workspaceDesc = workspace.getDescription();
+		savedAutoBuildingValue = workspaceDesc.isAutoBuilding();
+		workspaceDesc.setAutoBuilding(false);
+		workspace.setDescription(workspaceDesc);
+	}
+	
+	protected final void restoreAutoBuild(IWorkspace workspace) throws CoreException {
+		IWorkspaceDescription workspaceDesc = workspace.getDescription();
+		workspaceDesc.setAutoBuilding(savedAutoBuildingValue);
+		workspace.setDescription(workspaceDesc);
+	}
+	
+	/**
+	 * setOptionValue
+	 * @param config
+	 * @param option
+	 * @param val
+	 * @throws BuildException
+	 */
+	protected void setOptionValue(IConfiguration config, IOption option, String val) throws BuildException {
+		if (val != null) {
+			if (!option.isExtensionElement()) {
+				option.setValue(val);
+			} else {
+				IOption newOption = config.getToolChain().createOption(option, option.getId() + "." + ManagedBuildManager.getRandomNumber(), option.getName(), false); //$NON-NLS-1$
+				newOption.setValue(val);
+			}
+		}
+	}
+}
-- 
1.7.9.5




More information about the yocto mailing list