From 8a6292bcf4cc98b0d64361ad24407044e7cb77ea Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Mon, 22 Feb 2010 15:46:36 +0000 Subject: [PATCH] bug 301732: When a Hello World project is created, open generated file automatically Patch from Marc-Andre Laperle --- .../HelloWorldCAnsiProject/template.xml | 9 +++ .../HelloWorldCCProject/template.xml | 9 +++ .../MakefileHelloWorldCCProject/template.xml | 11 +++- core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF | 3 +- core/org.eclipse.cdt.ui/plugin.xml | 18 ++++++ .../ui/templateengine/processes/Messages.java | 30 ++++++++++ .../templateengine/processes/OpenFiles.java | 59 +++++++++++++++++++ .../processes/messages.properties | 13 ++++ 8 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/Messages.java create mode 100644 core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/OpenFiles.java create mode 100644 core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/messages.properties diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/HelloWorldCAnsiProject/template.xml b/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/HelloWorldCAnsiProject/template.xml index 66a545fea2e..d16c1c30162 100644 --- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/HelloWorldCAnsiProject/template.xml +++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/HelloWorldCAnsiProject/template.xml @@ -61,5 +61,14 @@ + + + + + + + + + diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/HelloWorldCCProject/template.xml b/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/HelloWorldCCProject/template.xml index 07a0ad67417..b319a9cb18c 100644 --- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/HelloWorldCCProject/template.xml +++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/HelloWorldCCProject/template.xml @@ -59,5 +59,14 @@ + + + + + + + + + diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/MakefileHelloWorldCCProject/template.xml b/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/MakefileHelloWorldCCProject/template.xml index dc492584beb..e0bbe52e583 100644 --- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/MakefileHelloWorldCCProject/template.xml +++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/templates/projecttemplates/MakefileHelloWorldCCProject/template.xml @@ -40,7 +40,16 @@ - + + + + + + + + + + diff --git a/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF index dd4bed14b1b..1fa37857dad 100644 --- a/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF +++ b/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF @@ -34,8 +34,8 @@ Export-Package: org.eclipse.cdt.internal.corext;x-internal:=true, org.eclipse.cdt.internal.ui.refactoring;x-friends:="org.eclipse.cdt.ui.tests", org.eclipse.cdt.internal.ui.refactoring.dialogs;x-internal:=true, org.eclipse.cdt.internal.ui.refactoring.extractconstant;x-friends:="org.eclipse.cdt.ui.tests", - org.eclipse.cdt.internal.ui.refactoring.extractlocalvariable;x-friends:="org.eclipse.cdt.ui.tests", org.eclipse.cdt.internal.ui.refactoring.extractfunction;x-friends:="org.eclipse.cdt.ui.tests", + org.eclipse.cdt.internal.ui.refactoring.extractlocalvariable;x-friends:="org.eclipse.cdt.ui.tests", org.eclipse.cdt.internal.ui.refactoring.gettersandsetters;x-friends:="org.eclipse.cdt.ui.tests", org.eclipse.cdt.internal.ui.refactoring.hidemethod;x-friends:="org.eclipse.cdt.ui.tests", org.eclipse.cdt.internal.ui.refactoring.implementmethod;x-friends:="org.eclipse.cdt.ui.tests", @@ -77,6 +77,7 @@ Export-Package: org.eclipse.cdt.internal.corext;x-internal:=true, org.eclipse.cdt.ui.templateengine, org.eclipse.cdt.ui.templateengine.event, org.eclipse.cdt.ui.templateengine.pages, + org.eclipse.cdt.ui.templateengine.processes, org.eclipse.cdt.ui.templateengine.uitree, org.eclipse.cdt.ui.templateengine.uitree.uiwidgets, org.eclipse.cdt.ui.text, diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml index 4c7f8ec7664..663420bb88b 100644 --- a/core/org.eclipse.cdt.ui/plugin.xml +++ b/core/org.eclipse.cdt.ui/plugin.xml @@ -3500,4 +3500,22 @@ + + + + + + + + + + + + diff --git a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/Messages.java b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/Messages.java new file mode 100644 index 00000000000..d6b62563b10 --- /dev/null +++ b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/Messages.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright (c) 2010 Marc-Andre Laperle 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: + * Marc-Andre Laperle - Initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.ui.templateengine.processes; + +import org.eclipse.osgi.util.NLS; + +/** + * @since 5.2 + */ +public class Messages { + private static final String BUNDLE_NAME = "org.eclipse.cdt.ui.templateengine.processes.messages"; //$NON-NLS-1$ + + private Messages() { + } + + public static String OpenFiles_CannotOpen_error; + public static String OpenFiles_FileNotExist_error; + + static { + NLS.initializeMessages(BUNDLE_NAME, Messages.class); + } +} diff --git a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/OpenFiles.java b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/OpenFiles.java new file mode 100644 index 00000000000..4bd137979df --- /dev/null +++ b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/OpenFiles.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright (c) 2010 Marc-Andre Laperle 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: + * Marc-Andre Laperle - Initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.ui.templateengine.processes; + +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.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.ide.IDE; + +/** + * This process opens files in the editor + * + * @since 5.2 + */ +public class OpenFiles extends ProcessRunner { + + /** + * This method opens a list of files in the editor + */ + @Override + public void process(TemplateCore template, ProcessArgument[] args, String processId, + IProgressMonitor monitor) throws ProcessFailureException { + ProcessArgument[][] files = args[1].getComplexArrayValue(); + for (ProcessArgument[] file : files) { + String fileTargetPath = file[0].getSimpleValue(); + String projectName = args[0].getSimpleValue(); + IProject projectHandle = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); + IFile iFile = projectHandle.getFile(fileTargetPath); + if (iFile.exists()) { + try { + IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), + iFile); + } catch (PartInitException e) { + throw new ProcessFailureException(Messages.OpenFiles_CannotOpen_error + fileTargetPath); + } + } + else { + throw new ProcessFailureException(Messages.OpenFiles_FileNotExist_error + fileTargetPath); + } + } + } + +} diff --git a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/messages.properties b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/messages.properties new file mode 100644 index 00000000000..2db85c8eea8 --- /dev/null +++ b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/processes/messages.properties @@ -0,0 +1,13 @@ +############################################################################### +# Copyright (c) 2010 Marc-Andre Laperle 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: +# Marc-Andre Laperle - Initial API and implementation +############################################################################### + +OpenFiles_CannotOpen_error=Open file failure: Cannot open file: +OpenFiles_FileNotExist_error=Open file failure: No such file exists: