1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

Add New Empty CMake project wizard.

Change-Id: I6f4fc0db27a863700eafcac751fa168dc32d96d5
This commit is contained in:
Doug Schaefer 2016-10-19 10:43:55 -04:00 committed by Gerrit Code Review @ Eclipse.org
parent fbccef3ff1
commit 78ba80e1d5
3 changed files with 82 additions and 15 deletions

View file

@ -27,6 +27,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Path;
import org.eclipse.tools.templates.freemarker.FMProjectGenerator; import org.eclipse.tools.templates.freemarker.FMProjectGenerator;
import org.eclipse.tools.templates.freemarker.SourceRoot; import org.eclipse.tools.templates.freemarker.SourceRoot;
import org.eclipse.tools.templates.freemarker.TemplateManifest;
import org.osgi.framework.Bundle; import org.osgi.framework.Bundle;
public class CMakeProjectGenerator extends FMProjectGenerator { public class CMakeProjectGenerator extends FMProjectGenerator {
@ -54,25 +55,29 @@ public class CMakeProjectGenerator extends FMProjectGenerator {
public void generate(Map<String, Object> model, IProgressMonitor monitor) throws CoreException { public void generate(Map<String, Object> model, IProgressMonitor monitor) throws CoreException {
super.generate(model, monitor); super.generate(model, monitor);
// Create the source folders
IProject project = getProject();
List<IPathEntry> entries = new ArrayList<>(); List<IPathEntry> entries = new ArrayList<>();
List<SourceRoot> srcRoots = getManifest().getSrcRoots(); IProject project = getProject();
if (srcRoots != null && !srcRoots.isEmpty()) {
for (SourceRoot srcRoot : srcRoots) { // Create the source folders
IFolder sourceFolder = project.getFolder(srcRoot.getDir()); TemplateManifest manifest = getManifest();
if (!sourceFolder.exists()) { if (manifest != null) {
sourceFolder.create(true, true, monitor); List<SourceRoot> srcRoots = getManifest().getSrcRoots();
if (srcRoots != null && !srcRoots.isEmpty()) {
for (SourceRoot srcRoot : srcRoots) {
IFolder sourceFolder = project.getFolder(srcRoot.getDir());
if (!sourceFolder.exists()) {
sourceFolder.create(true, true, monitor);
}
entries.add(CoreModel.newSourceEntry(sourceFolder.getFullPath()));
} }
} else {
entries.add(CoreModel.newSourceEntry(sourceFolder.getFullPath())); entries.add(CoreModel.newSourceEntry(getProject().getFullPath()));
} }
} else {
entries.add(CoreModel.newSourceEntry(getProject().getFullPath()));
} }
entries.add(CoreModel.newOutputEntry(getProject().getFolder("build").getFullPath(), entries.add(CoreModel.newOutputEntry(getProject().getFolder("build").getFullPath(), //$NON-NLS-1$
new IPath[] { new Path("**/CMakeFiles/**") })); new IPath[] { new Path("**/CMakeFiles/**") })); //$NON-NLS-1$
CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]), CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]),
monitor); monitor);
} }

View file

@ -37,7 +37,7 @@
</tag> </tag>
<template <template
icon="icons/cmake_logo-main.png" icon="icons/cmake_logo-main.png"
id="org.eclipse.cdt.cmake.ui.emptyProjectTemplate" id="org.eclipse.cdt.cmake.ui.newProjectTemplate"
label="CMake Project" label="CMake Project"
wizard="org.eclipse.cdt.cmake.ui.internal.NewCMakeProjectWizard"> wizard="org.eclipse.cdt.cmake.ui.internal.NewCMakeProjectWizard">
<description> <description>
@ -50,6 +50,21 @@
id="org.eclipse.cdt.cmake.ui.tag"> id="org.eclipse.cdt.cmake.ui.tag">
</tagReference> </tagReference>
</template> </template>
<template
icon="icons/cmake_logo-main.png"
id="org.eclipse.cdt.cmake.ui.emptyProjectTemplate"
label="Empty or Existing CMake Project"
wizard="org.eclipse.cdt.cmake.ui.internal.EmptyCMakeProjectWizard">
<description>
Create a CMake project with no files. Can be used to create one over existing content.
</description>
<tagReference
id="org.eclipse.cdt.ui.cdtTag">
</tagReference>
<tagReference
id="org.eclipse.cdt.cmake.ui.tag">
</tagReference>
</template>
</extension> </extension>
<extension <extension
point="org.eclipse.cdt.launch.coreBuildTab"> point="org.eclipse.cdt.launch.coreBuildTab">

View file

@ -0,0 +1,47 @@
/*******************************************************************************
* Copyright (c) 2016 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
*******************************************************************************/
package org.eclipse.cdt.cmake.ui.internal;
import org.eclipse.cdt.cmake.core.CMakeProjectGenerator;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.tools.templates.core.IGenerator;
import org.eclipse.tools.templates.ui.TemplateWizard;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
public class EmptyCMakeProjectWizard extends TemplateWizard {
private WizardNewProjectCreationPage mainPage;
@Override
public void addPages() {
mainPage = new WizardNewProjectCreationPage("basicNewProjectPage") { //$NON-NLS-1$
@Override
public void createControl(Composite parent) {
super.createControl(parent);
createWorkingSetGroup((Composite) getControl(), getSelection(),
new String[] { "org.eclipse.ui.resourceWorkingSetPage" }); //$NON-NLS-1$
Dialog.applyDialogFont(getControl());
}
};
mainPage.setTitle("New CMake Project"); //$NON-NLS-1$
mainPage.setDescription("Specify properties of new CMake project."); //$NON-NLS-1$
this.addPage(mainPage);
}
@Override
protected IGenerator getGenerator() {
CMakeProjectGenerator generator = new CMakeProjectGenerator(null);
generator.setProjectName(mainPage.getProjectName());
if (!mainPage.useDefaults()) {
generator.setLocationURI(mainPage.getLocationURI());
}
return generator;
}
}