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 b84b9e14d67..1a7116b75d4 100644 --- a/qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF +++ b/qt/org.eclipse.cdt.qt.core/META-INF/MANIFEST.MF @@ -20,7 +20,8 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.cdt.build.core;bundle-version="1.0.0", org.eclipse.cdt.build.gcc.core;bundle-version="1.0.0", org.eclipse.cdt.dsf.gdb;bundle-version="5.0.0", - org.eclipse.cdt.dsf;bundle-version="2.6.0" + org.eclipse.cdt.dsf;bundle-version="2.6.0", + org.eclipse.tools.templates.freemarker;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-Localization: plugin diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtNature.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtNature.java index 9b447650714..e98c3ce8188 100644 --- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtNature.java +++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/QtNature.java @@ -19,12 +19,16 @@ import org.eclipse.cdt.core.index.IIndexLinkage; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.internal.core.index.CIndex; import org.eclipse.cdt.internal.core.index.IIndexFragment; +import org.eclipse.cdt.internal.qt.core.build.QtBuilder; +import org.eclipse.core.resources.ICommand; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IProjectNature; +import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; @SuppressWarnings("restriction") public class QtNature implements IProjectNature { @@ -57,8 +61,15 @@ public class QtNature implements IProjectNature { @Override public void configure() throws CoreException { + IProjectDescription projDesc = project.getDescription(); + ICommand command = projDesc.newCommand(); + command.setBuilderName(QtBuilder.ID); + command.setBuilding(IncrementalProjectBuilder.AUTO_BUILD, false); + projDesc.setBuildSpec(new ICommand[] { command }); + project.setDescription(projDesc, new NullProgressMonitor()); } + // TODO no longer needed? public void configurex() throws CoreException { ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(project); if (cProject == null) diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuilder.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuilder.java index 1078f102c7d..688b0309a03 100644 --- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuilder.java +++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuilder.java @@ -56,7 +56,7 @@ public class QtBuilder extends IncrementalProjectBuilder { command.add(config); } - IFile projectFile = qtConfig.getProject().getFile("main.pro"); //$NON-NLS-1$ + IFile projectFile = qtConfig.getProject().getFile(project.getName() + ".pro"); //$NON-NLS-1$ command.add(projectFile.getLocation().toOSString()); ProcessBuilder processBuilder = new ProcessBuilder(command).directory(buildDir.toFile()); diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/project/QtProjectGenerator.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/project/QtProjectGenerator.java index 8b422f92b78..2cbd95f69bb 100644 --- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/project/QtProjectGenerator.java +++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/project/QtProjectGenerator.java @@ -7,72 +7,60 @@ *******************************************************************************/ package org.eclipse.cdt.internal.qt.core.project; -import java.util.HashMap; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import org.eclipse.cdt.core.CCProjectNature; import org.eclipse.cdt.core.CProjectNature; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.IPathEntry; +import org.eclipse.cdt.internal.qt.core.Activator; import org.eclipse.cdt.internal.qt.core.QtNature; -import org.eclipse.cdt.internal.qt.core.QtTemplateGenerator; import org.eclipse.cdt.internal.qt.core.build.QtBuilder; import org.eclipse.core.resources.ICommand; -import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.tools.templates.freemarker.FMProjectGenerator; +import org.eclipse.tools.templates.freemarker.SourceRoot; -public class QtProjectGenerator { +public class QtProjectGenerator extends FMProjectGenerator { - private final IProject project; + @Override + protected void initProjectDescription(IProjectDescription description) { + // Natures + description + .setNatureIds(new String[] { CProjectNature.C_NATURE_ID, CCProjectNature.CC_NATURE_ID, QtNature.ID }); - public QtProjectGenerator(IProject project) { - this.project = project; - } - - public void generate(IProgressMonitor monitor) throws CoreException { - // Generate the files - IFolder sourceFolder = project.getFolder("src"); //$NON-NLS-1$ - if (!sourceFolder.exists()) { - sourceFolder.create(true, true, monitor); - } - - QtTemplateGenerator templateGen = new QtTemplateGenerator(); - Map fmModel = new HashMap<>(); - fmModel.put("projectName", project.getName()); //$NON-NLS-1$ - - IFile sourceFile = sourceFolder.getFile("main.cpp"); //$NON-NLS-1$ - templateGen.generateFile(fmModel, "project2/appProject/main.cpp", sourceFile, monitor); //$NON-NLS-1$ - sourceFile = project.getFile("main.qml"); //$NON-NLS-1$ - templateGen.generateFile(fmModel, "project2/appProject/main.qml", sourceFile, monitor); //$NON-NLS-1$ - sourceFile = project.getFile("main.qrc"); //$NON-NLS-1$ - templateGen.generateFile(fmModel, "project2/appProject/main.qrc", sourceFile, monitor); //$NON-NLS-1$ - sourceFile = project.getFile("main.pro"); //$NON-NLS-1$ - templateGen.generateFile(fmModel, "project2/appProject/main.pro", sourceFile, monitor); //$NON-NLS-1$ - - // Set up the project - IProjectDescription projDesc = project.getDescription(); - String[] oldIds = projDesc.getNatureIds(); - String[] newIds = new String[oldIds.length + 3]; - System.arraycopy(oldIds, 0, newIds, 0, oldIds.length); - newIds[newIds.length - 3] = CProjectNature.C_NATURE_ID; - newIds[newIds.length - 2] = CCProjectNature.CC_NATURE_ID; - newIds[newIds.length - 1] = QtNature.ID; - projDesc.setNatureIds(newIds); - - ICommand command = projDesc.newCommand(); + // Builders + ICommand command = description.newCommand(); command.setBuilderName(QtBuilder.ID); command.setBuilding(IncrementalProjectBuilder.AUTO_BUILD, false); - projDesc.setBuildSpec(new ICommand[] { command }); + description.setBuildSpec(new ICommand[] { command }); + } - project.setDescription(projDesc, monitor); + @Override + public void generate(Map model, IProgressMonitor monitor) throws CoreException { + setBundle(Activator.getDefault().getBundle()); + super.generate(model, monitor); - IPathEntry[] entries = new IPathEntry[] { CoreModel.newOutputEntry(sourceFolder.getFullPath()) }; - CoreModel.getDefault().create(project).setRawPathEntries(entries, monitor); + // Create the sourcefolders + IProject project = getProject(); + List entries = new ArrayList<>(); + for (SourceRoot srcRoot : getManifest().getSrcRoots()) { + IFolder sourceFolder = project.getFolder(srcRoot.getDir()); + if (!sourceFolder.exists()) { + sourceFolder.create(true, true, monitor); + } + + entries.add(CoreModel.newSourceEntry(sourceFolder.getFullPath())); + } + CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]), + monitor); } } diff --git a/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.cpp b/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.cpp index d76049d67eb..b753bc9a3eb 100644 --- a/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.cpp +++ b/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.cpp @@ -6,7 +6,7 @@ int main(int argc, char *argv[]) QGuiApplication app(argc, argv); QQmlApplicationEngine engine; - engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); + engine.load(QUrl(QStringLiteral("qrc:/src/${projectName}.qml"))); return app.exec(); } diff --git a/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.pro b/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.pro index 370aca30e63..96847694ccd 100644 --- a/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.pro +++ b/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.pro @@ -3,4 +3,6 @@ TEMPLATE = app QT += qml quick CONFIG += c++11 -RESOURCES += main.qrc +RESOURCES += ${projectName}.qrc + +qml.files = src/${projectName}.qml diff --git a/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.qrc b/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.qrc index 5f6483ac33f..b86034ea7a5 100644 --- a/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.qrc +++ b/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/main.qrc @@ -1,5 +1,5 @@ - main.qml + src/${projectName}.qml diff --git a/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/manifest.xml b/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/manifest.xml new file mode 100644 index 00000000000..91eac749421 --- /dev/null +++ b/qt/org.eclipse.cdt.qt.core/templates/project2/appProject/manifest.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/qt/org.eclipse.cdt.qt.ui/META-INF/MANIFEST.MF b/qt/org.eclipse.cdt.qt.ui/META-INF/MANIFEST.MF index 6797403337d..238a0518e34 100644 --- a/qt/org.eclipse.cdt.qt.ui/META-INF/MANIFEST.MF +++ b/qt/org.eclipse.cdt.qt.ui/META-INF/MANIFEST.MF @@ -17,7 +17,11 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.debug.ui;bundle-version="3.11.100", org.eclipse.cdt.ui, org.eclipse.cdt.core, - org.eclipse.cdt.qt.core + org.eclipse.cdt.qt.core, + org.eclipse.tools.templates.ui;bundle-version="1.0.0", + org.eclipse.launchbar.core;bundle-version="2.0.0", + org.eclipse.launchbar.ui;bundle-version="2.0.0", + org.eclipse.tools.templates.freemarker;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Export-Package: org.eclipse.cdt.internal.qt.ui.assist;x-friends:="org.eclipse.cdt.qt.ui.tests", diff --git a/qt/org.eclipse.cdt.qt.ui/icons/HelloWorld48.png b/qt/org.eclipse.cdt.qt.ui/icons/HelloWorld48.png new file mode 100644 index 00000000000..c9ef3cd2842 Binary files /dev/null and b/qt/org.eclipse.cdt.qt.ui/icons/HelloWorld48.png differ diff --git a/qt/org.eclipse.cdt.qt.ui/icons/qt16.png b/qt/org.eclipse.cdt.qt.ui/icons/qt16.png new file mode 100644 index 00000000000..2a2112e6241 Binary files /dev/null and b/qt/org.eclipse.cdt.qt.ui/icons/qt16.png differ diff --git a/qt/org.eclipse.cdt.qt.ui/icons/sample.gif b/qt/org.eclipse.cdt.qt.ui/icons/sample.gif deleted file mode 100644 index 34fb3c9d8cb..00000000000 Binary files a/qt/org.eclipse.cdt.qt.ui/icons/sample.gif and /dev/null differ diff --git a/qt/org.eclipse.cdt.qt.ui/plugin.xml b/qt/org.eclipse.cdt.qt.ui/plugin.xml index 499cac7cf83..3392f1e27eb 100644 --- a/qt/org.eclipse.cdt.qt.ui/plugin.xml +++ b/qt/org.eclipse.cdt.qt.ui/plugin.xml @@ -39,9 +39,9 @@ point="org.eclipse.ui.newWizards"> @@ -124,4 +124,30 @@ targetId="org.eclipse.cdt.qt.ui.qml"> + + + + + + + + + diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/Activator.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/Activator.java index 3ce748a9adb..2f1f20995e5 100644 --- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/Activator.java +++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/Activator.java @@ -16,6 +16,7 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; +import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; @@ -29,15 +30,11 @@ public class Activator extends AbstractUIPlugin { // The plug-in ID public static final String PLUGIN_ID = "org.eclipse.cdt.qt.ui"; //$NON-NLS-1$ + public static final String IMG_QT_16 = "qt16"; //$NON-NLS-1$ + // The shared instance private static Activator plugin; - /** - * The constructor - */ - public Activator() { - } - public static Image getQtLogo() { return null; } @@ -51,12 +48,14 @@ public class Activator extends AbstractUIPlugin { super.start(context); plugin = this; + ImageRegistry imageRegistry = getImageRegistry(); + imageRegistry.put(IMG_QT_16, imageDescriptorFromPlugin(PLUGIN_ID, "icons/qt16.png")); //$NON-NLS-1$ + // Use a save participant to grab any changed resources while this // plugin was inactive QtResourceChangeListener resourceManager = new QtResourceChangeListener(); ISaveParticipant saveParticipant = new QtWorkspaceSaveParticipant(); - ISavedState lastState = ResourcesPlugin.getWorkspace().addSaveParticipant(Activator.PLUGIN_ID, - saveParticipant); + ISavedState lastState = ResourcesPlugin.getWorkspace().addSaveParticipant(Activator.PLUGIN_ID, saveParticipant); if (lastState != null) { lastState.processResourceChangeEvents(resourceManager); } @@ -125,4 +124,8 @@ public class Activator extends AbstractUIPlugin { return ref != null ? context.getService(ref) : null; } + public static Image getImage(String key) { + return plugin.getImageRegistry().get(key); + } + } diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/NewQtProjectWizard.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/NewQtProjectWizard.java deleted file mode 100644 index 5dfb6dfc16a..00000000000 --- a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/NewQtProjectWizard.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 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.internal.qt.ui; - -import java.lang.reflect.InvocationTargetException; - -import org.eclipse.cdt.internal.qt.core.Activator; -import org.eclipse.cdt.internal.qt.core.project.QtProjectGenerator; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation; -import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard; - -public class NewQtProjectWizard extends BasicNewProjectResourceWizard { - - @Override - public boolean performFinish() { - if (!super.performFinish()) { - return false; - } - - IRunnableWithProgress op = new WorkspaceModifyDelegatingOperation(new IRunnableWithProgress() { - @Override - public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { - try { - monitor.beginTask("Generating project", 1); - QtProjectGenerator generator = new QtProjectGenerator(getNewProject()); - generator.generate(monitor); - monitor.done(); - } catch (CoreException e) { - Activator.log(e); - } - } - }); - - try { - getContainer().run(false, true, op); - } catch (InvocationTargetException | InterruptedException e) { - return false; - } - return true; - } - -} diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/launch/QtLaunchDescriptorLabelProvider.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/launch/QtLaunchDescriptorLabelProvider.java new file mode 100644 index 00000000000..5654b46b2f6 --- /dev/null +++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/launch/QtLaunchDescriptorLabelProvider.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * 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.internal.qt.ui.launch; + +import org.eclipse.cdt.internal.qt.ui.Activator; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.launchbar.core.ILaunchDescriptor; +import org.eclipse.swt.graphics.Image; + +public class QtLaunchDescriptorLabelProvider extends LabelProvider { + + @Override + public String getText(Object element) { + if (element instanceof ILaunchDescriptor) { + return ((ILaunchDescriptor) element).getName(); + } + return super.getText(element); + } + + @Override + public Image getImage(Object element) { + return Activator.getImage(Activator.IMG_QT_16); + } + +} diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/wizards/HelloWorldWizard.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/wizards/HelloWorldWizard.java new file mode 100644 index 00000000000..2a0297d9351 --- /dev/null +++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/wizards/HelloWorldWizard.java @@ -0,0 +1,88 @@ +/******************************************************************************* + * 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.internal.qt.ui.wizards; + +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.cdt.internal.qt.core.project.QtProjectGenerator; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.jobs.ISchedulingRule; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.actions.WorkspaceModifyOperation; +import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; +import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard; + +public class HelloWorldWizard extends BasicNewResourceWizard { + + 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 Qt Project"); //$NON-NLS-1$ + mainPage.setDescription("Specify properties of new Qt project."); //$NON-NLS-1$ + this.addPage(mainPage); + } + + protected String getTemplateManifestPath() { + return "templates/project2/appProject/manifest.xml"; //$NON-NLS-1$ + } + + @Override + public boolean performFinish() { + QtProjectGenerator generator = new QtProjectGenerator(); + generator.setTemplateManifestPath(getTemplateManifestPath()); + generator.setProjectName(mainPage.getProjectName()); + if (!mainPage.useDefaults()) { + generator.setLocationURI(mainPage.getLocationURI()); + } + + Map model = new HashMap<>(); + + try { + getContainer().run(true, true, new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor monitor) + throws CoreException, InvocationTargetException, InterruptedException { + monitor.beginTask("Generating project", 1); //$NON-NLS-1$ + generator.generate(model, monitor); + monitor.done(); + } + + @Override + public ISchedulingRule getRule() { + return ResourcesPlugin.getWorkspace().getRoot(); + } + }); + } catch (InterruptedException | InvocationTargetException e) { + throw new RuntimeException(e); + } + return true; + } + + @Override + public void init(IWorkbench theWorkbench, IStructuredSelection currentSelection) { + super.init(theWorkbench, currentSelection); + } + +} diff --git a/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/wizards/NewQtProjectWizard.java b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/wizards/NewQtProjectWizard.java new file mode 100644 index 00000000000..2a7f9494a38 --- /dev/null +++ b/qt/org.eclipse.cdt.qt.ui/src/org/eclipse/cdt/internal/qt/ui/wizards/NewQtProjectWizard.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright (c) 2015, 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.internal.qt.ui.wizards; + +import org.eclipse.tools.templates.ui.TemplateSelectionPage; +import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard; + +public class NewQtProjectWizard extends BasicNewResourceWizard { + + private static final String QT_TAG_ID = "org.eclipse.cdt.qt.ui.tag"; //$NON-NLS-1$ + + private TemplateSelectionPage templateSelectionPage; + + @Override + public void addPages() { + templateSelectionPage = new TemplateSelectionPage("templateSelection", QT_TAG_ID); //$NON-NLS-1$ + templateSelectionPage.setTitle("Template for New Qt Project"); + this.addPage(templateSelectionPage); + } + + @Override + public boolean performFinish() { + return true; + } + +} diff --git a/releng/org.eclipse.cdt.repo/category.xml b/releng/org.eclipse.cdt.repo/category.xml index 7987c8c35cc..a8f7c5ca073 100644 --- a/releng/org.eclipse.cdt.repo/category.xml +++ b/releng/org.eclipse.cdt.repo/category.xml @@ -94,6 +94,7 @@ - - + + + diff --git a/releng/org.eclipse.cdt.target/cdt.target b/releng/org.eclipse.cdt.target/cdt.target index a5c1d14a274..19ff05a3c08 100644 --- a/releng/org.eclipse.cdt.target/cdt.target +++ b/releng/org.eclipse.cdt.target/cdt.target @@ -67,6 +67,11 @@ + + + + + diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/META-INF/MANIFEST.MF b/toolchains/arduino/org.eclipse.cdt.arduino.core/META-INF/MANIFEST.MF index dab81eed768..7a81a68875e 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/META-INF/MANIFEST.MF +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/META-INF/MANIFEST.MF @@ -15,7 +15,8 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.remote.serial.core;bundle-version="1.0.0", com.google.gson;bundle-version="2.2.4", org.apache.commons.compress;bundle-version="1.6.0", - org.freemarker;bundle-version="2.3.22" + org.freemarker;bundle-version="2.3.22", + org.eclipse.launchbar.remote.core;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-ClassPath: . diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml b/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml index 676505ab53b..8399a090f76 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml @@ -109,4 +109,11 @@ + + + + diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoLaunchTargetProvider.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoLaunchTargetProvider.java new file mode 100644 index 00000000000..b0c62249740 --- /dev/null +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoLaunchTargetProvider.java @@ -0,0 +1,19 @@ +/******************************************************************************* + * 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.arduino.core.internal.remote; + +import org.eclipse.launchbar.remote.core.RemoteLaunchTargetProvider; + +public class ArduinoLaunchTargetProvider extends RemoteLaunchTargetProvider { + + @Override + protected String getTypeId() { + return ArduinoRemoteConnection.TYPE_ID; + } + +} diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/META-INF/MANIFEST.MF b/toolchains/arduino/org.eclipse.cdt.arduino.ui/META-INF/MANIFEST.MF index 5b648f7d7d7..85291e2145f 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/META-INF/MANIFEST.MF +++ b/toolchains/arduino/org.eclipse.cdt.arduino.ui/META-INF/MANIFEST.MF @@ -18,7 +18,8 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.remote.core;bundle-version="2.0.0", org.eclipse.remote.ui;bundle-version="2.0.0", org.eclipse.cdt.core, - org.eclipse.cdt.native.serial;bundle-version="1.0.0" + org.eclipse.cdt.native.serial;bundle-version="1.0.0", + org.eclipse.launchbar.remote.ui;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-ActivationPolicy: lazy Bundle-Vendor: %providerName diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.xml b/toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.xml index 0290e808181..1a6410413b3 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.xml +++ b/toolchains/arduino/org.eclipse.cdt.arduino.ui/plugin.xml @@ -136,4 +136,17 @@ type="org.eclipse.cdt.arduino.core.launchConfigurationType"> + + + + + + diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizard.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizard.java index 9d07618a432..023bb14c73d 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizard.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/NewArduinoTargetWizard.java @@ -11,17 +11,26 @@ import java.util.Set; import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection; import org.eclipse.cdt.arduino.ui.internal.Activator; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.remote.core.IRemoteConnectionType; import org.eclipse.remote.core.IRemoteConnectionWorkingCopy; import org.eclipse.remote.core.IRemoteServicesManager; import org.eclipse.remote.core.exception.RemoteConnectionException; import org.eclipse.remote.ui.IRemoteUIConnectionWizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; -public class NewArduinoTargetWizard extends Wizard implements IRemoteUIConnectionWizard { +public class NewArduinoTargetWizard extends Wizard implements IRemoteUIConnectionWizard, INewWizard { private NewArduinoTargetWizardPage page; private IRemoteConnectionWorkingCopy workingCopy; + private boolean isNewWizard; + + @Override + public void init(IWorkbench workbench, IStructuredSelection selection) { + isNewWizard = true; + } @Override public void addPages() { @@ -36,6 +45,16 @@ public class NewArduinoTargetWizard extends Wizard implements IRemoteUIConnectio } page.performFinish(workingCopy); + + if (isNewWizard) { + // if called as a new wizard, we need to do the save + try { + workingCopy.save(); + } catch (RemoteConnectionException e) { + Activator.log(e); + return false; + } + } return true; }