From 98e5959c90e5bd3484445844e8e50478253b2a24 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Thu, 17 Jan 2013 15:20:49 -0500 Subject: [PATCH] Added template process to add nature. Added Qt nature. --- core/org.eclipse.cdt.core/plugin.xml | 10 ++++ .../process/processes/AddNature.java | 56 +++++++++++++++++++ .../process/processes/messages.properties | 2 + .../META-INF/MANIFEST.MF | 1 + qt/org.eclipse.cdt.qt.core/plugin.xml | 9 +++ .../src/org/eclipse/cdt/qt/core/QtNature.java | 40 +++++++++++++ .../project/helloWorld/qtQuick2/template.xml | 6 +- 7 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/AddNature.java create mode 100644 qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtNature.java diff --git a/core/org.eclipse.cdt.core/plugin.xml b/core/org.eclipse.cdt.core/plugin.xml index d65aa20c4ff..7cd1e698f09 100644 --- a/core/org.eclipse.cdt.core/plugin.xml +++ b/core/org.eclipse.cdt.core/plugin.xml @@ -771,6 +771,16 @@ + + + + + + diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/AddNature.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/AddNature.java new file mode 100644 index 00000000000..70e2d18cd8c --- /dev/null +++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/AddNature.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2013 QNX Software Systems and others. + * 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: + * Doug Schaefer (QNX) - Initial implementation + *******************************************************************************/ +package org.eclipse.cdt.core.templateengine.process.processes; + +import org.eclipse.cdt.core.CProjectNature; +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.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; + +/** + * @author dschaefer + * + */ +public class AddNature extends ProcessRunner { + + @Override + public void process(TemplateCore template, ProcessArgument[] args, String processId, IProgressMonitor monitor) throws ProcessFailureException { + IProject project = null; + String natureId = null; + + for (ProcessArgument arg : args) { + String argName = arg.getName(); + if (argName.equals("projectName")) //$NON-NLS-1$ + project = ResourcesPlugin.getWorkspace().getRoot().getProject(arg.getSimpleValue()); + else if (argName.equals("natureId")) //$NON-NLS-1$ + natureId = arg.getSimpleValue(); + } + + if (project == null) + throw new ProcessFailureException(getProcessMessage(processId, IStatus.ERROR, Messages.getString("AddNature.noProject"))); //$NON-NLS-1$ + + if (natureId == null) + throw new ProcessFailureException(getProcessMessage(processId, IStatus.ERROR, Messages.getString("AddNature.noNature"))); //$NON-NLS-1$ + + try { + CProjectNature.addNature(project, natureId, monitor); + } catch (CoreException e) { + throw new ProcessFailureException(e); + } + } + +} diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/messages.properties b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/messages.properties index d100e9797dd..ad8ca201f2d 100644 --- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/messages.properties +++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/process/processes/messages.properties @@ -55,3 +55,5 @@ Append.0=Add File failure: template source not found: Append.1=Copy failure: template source not found: Append.3=Copy failure: cannot read template source: Append.4=Append failure: failed while trying to append contents. +AddNature.noProject=Add nature failure: projectName not specified +AddNature.noNature=Add nature failure: nature not specified diff --git a/qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF b/qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF index 552ea94b6c2..b4ca9e8d545 100644 --- a/qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF +++ b/qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF @@ -6,6 +6,7 @@ Bundle-Version: 1.0.0.qualifier Bundle-Activator: org.eclipse.cdt.qt.core.Activator Bundle-Vendor: Eclipse CDT Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;bundle-version="3.8.100", org.eclipse.cdt.core Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ActivationPolicy: lazy diff --git a/qt/org.eclipse.cdt.qt.core/plugin.xml b/qt/org.eclipse.cdt.qt.core/plugin.xml index d0ab3f8001e..959e78450a5 100644 --- a/qt/org.eclipse.cdt.qt.core/plugin.xml +++ b/qt/org.eclipse.cdt.qt.core/plugin.xml @@ -41,4 +41,13 @@ priority="normal"> + + + + + + diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtNature.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtNature.java new file mode 100644 index 00000000000..f58e2cd190e --- /dev/null +++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtNature.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2013 QNX Software Systems and others. + * 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: + * Doug Schaefer (QNX) - Initial implementation + *******************************************************************************/ +package org.eclipse.cdt.qt.core; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectNature; +import org.eclipse.core.runtime.CoreException; + +public class QtNature implements IProjectNature { + public static final String ID = "org.eclipse.cdt.qt.core.qtNature"; + + private IProject project; + + @Override + public void configure() throws CoreException { + } + + @Override + public void deconfigure() throws CoreException { + } + + @Override + public IProject getProject() { + return project; + } + + @Override + public void setProject(IProject project) { + this.project = project; + } + +} diff --git a/qt/org.eclipse.cdt.qt.core/templates/project/helloWorld/qtQuick2/template.xml b/qt/org.eclipse.cdt.qt.core/templates/project/helloWorld/qtQuick2/template.xml index c80a589e17c..58bdd9e8b00 100644 --- a/qt/org.eclipse.cdt.qt.core/templates/project/helloWorld/qtQuick2/template.xml +++ b/qt/org.eclipse.cdt.qt.core/templates/project/helloWorld/qtQuick2/template.xml @@ -56,6 +56,10 @@ + + + + + -