Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Prouvost2015-03-16 07:32:08 +0000
committerVikas Chandra2015-03-24 10:26:29 +0000
commite1fa96c02a82a5a5f2a9e96c62f2f2fb6a8b13d3 (patch)
tree383e50a9e6b8ce317fa73d282376de5162787930
parent6768c9c0feaef832009104c4554a8f0eb27298d6 (diff)
downloadeclipse.pde.ui-e1fa96c02a82a5a5f2a9e96c62f2f2fb6a8b13d3.tar.gz
eclipse.pde.ui-e1fa96c02a82a5a5f2a9e96c62f2f2fb6a8b13d3.tar.xz
eclipse.pde.ui-e1fa96c02a82a5a5f2a9e96c62f2f2fb6a8b13d3.zip
Bug 441331 - Integrate e4 project template into PDE I20150324-0800
Change-Id: Ia911a454f18b32252ea21bb1e00661f19fe69bc0 Signed-off-by: Olivier Prouvost <olivier.prouvost@opcoach.com>
-rw-r--r--ui/org.eclipse.pde.ui.templates/META-INF/MANIFEST.MF4
-rw-r--r--ui/org.eclipse.pde.ui.templates/plugin.properties8
-rw-r--r--ui/org.eclipse.pde.ui.templates/plugin.xml14
-rw-r--r--ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/IHelpContextIds.java1
-rw-r--r--ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/PDETemplateMessages.java10
-rw-r--r--ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/e4/E4ApplicationNewWizard.java111
-rw-r--r--ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/e4/E4ApplicationTemplate.java201
-rw-r--r--ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/pderesources.properties10
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/$pluginId$.product110
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/Application.e4xmi55
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/Application.e4xmi15
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/css/default.css0
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/icons/sample.pngbin0 -> 642 bytes
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/icons/save_edit.pngbin0 -> 933 bytes
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/$activator$.java30
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/$lifeCycleClassName$.java43
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/AboutHandler.java23
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/OpenHandler.java24
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/QuitHandler.java28
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/SaveHandler.java32
-rw-r--r--ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/parts/SamplePart.java70
-rw-r--r--ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties2
22 files changed, 789 insertions, 2 deletions
diff --git a/ui/org.eclipse.pde.ui.templates/META-INF/MANIFEST.MF b/ui/org.eclipse.pde.ui.templates/META-INF/MANIFEST.MF
index 5c18117257..a290450876 100644
--- a/ui/org.eclipse.pde.ui.templates/META-INF/MANIFEST.MF
+++ b/ui/org.eclipse.pde.ui.templates/META-INF/MANIFEST.MF
@@ -6,13 +6,15 @@ Bundle-Version: 3.4.800.qualifier
Bundle-Vendor: %bundleVendor
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: org.eclipse.pde.internal.ui.templates;x-internal:=true,
+ org.eclipse.pde.internal.ui.templates.e4;x-internal:=true,
org.eclipse.pde.internal.ui.templates.ide;x-internal:=true,
org.eclipse.pde.internal.ui.templates.osgi;x-internal:=true,
org.eclipse.pde.internal.ui.templates.rcp;x-internal:=true
Require-Bundle: org.eclipse.ui;bundle-version="[3.3.0,4.0.0)",
org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
org.eclipse.pde.ui;bundle-version="[3.3.0,4.0.0)",
- org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)"
+ org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="3.11.0"
Bundle-Localization: plugin
Eclipse-LazyStart: true
Bundle-Activator: org.eclipse.pde.internal.ui.templates.Activator
diff --git a/ui/org.eclipse.pde.ui.templates/plugin.properties b/ui/org.eclipse.pde.ui.templates/plugin.properties
index dc1ce0ece5..9e0b04f05e 100644
--- a/ui/org.eclipse.pde.ui.templates/plugin.properties
+++ b/ui/org.eclipse.pde.ui.templates/plugin.properties
@@ -7,6 +7,7 @@
#
# Contributors:
# IBM Corporation - initial API and implementation
+# Olivier Prouvost <olivier.prouvost@opcoach.com> - Bug 441331
###############################################################################
pluginContent.helloWorld.name = Hello, World
pluginContent.helloWorld.description=\
@@ -351,3 +352,10 @@ pluginContent.OSGiEventAdminService.description=\
<p><b>Imports Used</b></p>\
<li>org.osgi.framework</li>\
<li>org.osgi.service.event</li>
+
+pluginContent.e4RCP.name = Eclipse 4 RCP application
+pluginContent.e4RCP.description=\
+<p>This wizard creates a standalone Eclipse 4 RCP application with a sample part and the basic commands to quit the application. </p>\
+<p><b>Extensions Used</b></p>\
+<li>org.eclipse.core.runtime.products</li>\
+
diff --git a/ui/org.eclipse.pde.ui.templates/plugin.xml b/ui/org.eclipse.pde.ui.templates/plugin.xml
index 7063956e96..75b605e846 100644
--- a/ui/org.eclipse.pde.ui.templates/plugin.xml
+++ b/ui/org.eclipse.pde.ui.templates/plugin.xml
@@ -9,6 +9,7 @@
Contributors:
IBM Corporation - initial API and implementation
+ Olivier Prouvost <olivier.prouvost@opcoach.com> - Bug 441331
-->
<plugin>
@@ -502,6 +503,19 @@
%pluginContent.OSGiEventAdminService.description
</description>
</wizard>
+ <wizard
+ class="org.eclipse.pde.internal.ui.templates.e4.E4ApplicationNewWizard"
+ icon="$nl$/icons/etool16/newexprj_wiz.gif"
+ id="org.eclipse.pde.ui.e4EmptyApplication"
+ java="true"
+ name="%pluginContent.e4RCP.name"
+ pureOSGi="false"
+ rcp="true"
+ ui-content="true">
+ <description>
+ %pluginContent.e4RCP.description
+ </description>
+ </wizard>
</extension>
diff --git a/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/IHelpContextIds.java b/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/IHelpContextIds.java
index 44197eae63..55dc88e436 100644
--- a/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/IHelpContextIds.java
+++ b/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/IHelpContextIds.java
@@ -25,6 +25,7 @@ public interface IHelpContextIds {
public static final String TEMPLATE_VIEW = PREFIX + "template_view"; //$NON-NLS-1$
public static final String TEMPLATE_BUILDER = PREFIX + "template_builder"; //$NON-NLS-1$
public static final String TEMPLATE_RCP_MAIL = PREFIX + "rcp_mail"; //$NON-NLS-1$
+ public static final String TEMPLATE_E4_APPLICATION = PREFIX + "e4Application"; //$NON-NLS-1$
public static final String TEMPLATE_UNIVERSAL_WELCOME = PREFIX + "template_universal_welcome"; //$NON-NLS-1$
// TODO: MP: SPLASH: Update help context ID
public static final String TEMPLATE_SPLASH_HANDLERS = PREFIX + "splash_handlers"; //$NON-NLS-1$
diff --git a/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/PDETemplateMessages.java b/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/PDETemplateMessages.java
index 45d8c149a0..dc894fc40f 100644
--- a/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/PDETemplateMessages.java
+++ b/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/PDETemplateMessages.java
@@ -94,6 +94,16 @@ public class PDETemplateMessages extends NLS {
public static String ViewRCPTemplate_packageName;
public static String ViewRCPTemplate_windowTitle;
+ public static String E4ApplicationNewWizard_title;
+ public static String E4ApplicationTemplate_title;
+ public static String E4ApplicationTemplate_desc;
+ public static String E4ApplicationTemplate_appClass;
+ public static String E4ApplicationTemplate_packageName;
+ public static String E4ApplicationTemplate_windowTitle;
+ public static String E4ApplicationTemplate_createSampleContent;
+ public static String E4ApplicationTemplate_createLifeCycle;
+ public static String E4ApplicationTemplate_lifeCycleClassname;
+
public static String MultiPageEditorNewWizard_wtitle;
public static String MultiPageEditorTemplate_title;
public static String MultiPageEditorTemplate_desc;
diff --git a/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/e4/E4ApplicationNewWizard.java b/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/e4/E4ApplicationNewWizard.java
new file mode 100644
index 0000000000..dd0865dfde
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/e4/E4ApplicationNewWizard.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2015 OPCoach.
+ * 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:
+ * Olivier Prouvost <olivier.prouvost@opcoach.com> - initial API and implementation (bug #441331)
+ *******************************************************************************/
+package org.eclipse.pde.internal.ui.templates.e4;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.pde.core.plugin.*;
+import org.eclipse.pde.internal.ui.templates.PDETemplateMessages;
+import org.eclipse.pde.ui.IFieldData;
+import org.eclipse.pde.ui.templates.*;
+import org.eclipse.ui.*;
+import org.eclipse.ui.part.FileEditorInput;
+
+public class E4ApplicationNewWizard extends NewPluginTemplateWizard {
+
+ private static final String ORG_ECLIPSE_CORE_RUNTIME = "org.eclipse.core.runtime"; //$NON-NLS-1$
+ private static final String ORG_ECLIPSE_UI = "org.eclipse.ui"; //$NON-NLS-1$
+ private static final String MODEL_EDITOR_ID = "org.eclipse.e4.tools.emf.editor3x.e4wbm"; //$NON-NLS-1$
+
+ @Override
+ public void init(IFieldData data) {
+ super.init(data);
+ setWindowTitle(PDETemplateMessages.E4ApplicationNewWizard_title);
+ }
+
+ @Override
+ public ITemplateSection[] createTemplateSections() {
+ return new ITemplateSection[] {new E4ApplicationTemplate()};
+ }
+
+ @Override
+ public boolean performFinish(IProject project, IPluginModelBase model, IProgressMonitor monitor) {
+ // Must do like ancestor
+ boolean result = super.performFinish(project, model, monitor);
+
+ // but must then remove the "org.eclipse.ui" dependency which has been generated !
+ // and core.runtime without any version (must remove it and readd it with good version) !
+ IPluginBase pb = model.getPluginBase();
+ IPluginImport ui = null, runtime = null;
+ String runtimeVersion = null;
+
+ for (IPluginImport ii : pb.getImports()) {
+ if (ii.getId().equals(ORG_ECLIPSE_UI))
+ ui = ii;
+ if (ii.getId().equals(ORG_ECLIPSE_CORE_RUNTIME)) {
+ // This plugin appears twice : with and without version (due to ancestor)
+ if (ii.getVersion() == null)
+ runtime = ii;
+ else
+ runtimeVersion = ii.getVersion();
+ }
+
+ }
+
+ // Remove these two bad imports...
+ try {
+ if (ui != null)
+ pb.remove(ui);
+ if (runtime != null) {
+ // Remove the org.eclipse.core.runtime without any version
+ pb.remove(runtime);
+
+ // And must re-add it with correct version
+ PluginReference pr = new PluginReference(ORG_ECLIPSE_CORE_RUNTIME, runtimeVersion, IMatchRules.GREATER_OR_EQUAL);
+ IPluginImport iimport = model.getPluginFactory().createImport();
+ iimport.setId(pr.getId());
+ iimport.setVersion(pr.getVersion());
+ iimport.setMatch(pr.getMatch());
+ pb.add(iimport);
+
+ }
+
+ } catch (CoreException e) {
+ // Not a so big problem if remove failed...
+ }
+
+ try {
+ openEditorForApplicationModel(project);
+ } catch (PartInitException e) {
+ // Not a so big problem if editor does not open (may be e4 tools not present)...
+ }
+
+ return result;
+ }
+
+ /**
+ * Opens the model editor after the project was created.
+ *
+ * @throws PartInitException
+ */
+ private void openEditorForApplicationModel(IProject project) throws PartInitException {
+ final IFile file = project.getFile(E4ApplicationTemplate.E4_MODEL_FILE);
+ if (file != null) {
+ final FileEditorInput input = new FileEditorInput(file);
+ final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ final IWorkbenchPage page = window.getActivePage();
+ page.openEditor(input, MODEL_EDITOR_ID);
+ }
+ }
+
+}
diff --git a/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/e4/E4ApplicationTemplate.java b/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/e4/E4ApplicationTemplate.java
new file mode 100644
index 0000000000..4a14e9d5ab
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/e4/E4ApplicationTemplate.java
@@ -0,0 +1,201 @@
+/*******************************************************************************
+ * Copyright (c) 2015 OPCoach.
+ * 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:
+ * Olivier Prouvost <olivier.prouvost@opcoach.com> - initial API and implementation (bug #441331)
+ *******************************************************************************/
+package org.eclipse.pde.internal.ui.templates.e4;
+
+import java.io.File;
+import java.util.ArrayList;
+import org.eclipse.core.runtime.*;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.pde.core.plugin.*;
+import org.eclipse.pde.internal.ui.templates.*;
+import org.eclipse.pde.ui.templates.PluginReference;
+import org.eclipse.pde.ui.templates.TemplateOption;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Version;
+
+public class E4ApplicationTemplate extends PDETemplateSection {
+
+ private static final String E4_SWT_APPLICATION_ID = "org.eclipse.e4.ui.workbench.swt.E4Application"; //$NON-NLS-1$
+ public static final String KEY_CREATE_SAMPLE_CONTENT = "createContent"; //$NON-NLS-1$
+ public static final String KEY_CREATE_LIFE_CYCLE = "createLifeCycle"; //$NON-NLS-1$
+ public static final String KEY_LIFE_CYCLE_CLASS_NAME = "lifeCycleClassName"; //$NON-NLS-1$
+ public static final String KEY_WINDOW_TITLE = "windowTitle"; //$NON-NLS-1$
+
+ static final String E4_MODEL_FILE = "Application.e4xmi"; //$NON-NLS-1$
+ private static final String EMPTY_E4_MODEL_FILE = "bin/" + E4_MODEL_FILE; //$NON-NLS-1$
+
+ TemplateOption lifeCycleClassnameOption;
+
+ public E4ApplicationTemplate() {
+ setPageCount(1);
+ createOptions();
+ }
+
+ @Override
+ public void addPages(Wizard wizard) {
+ WizardPage page = createPage(0, IHelpContextIds.TEMPLATE_E4_APPLICATION);
+ page.setTitle(PDETemplateMessages.E4ApplicationTemplate_title);
+ page.setDescription(PDETemplateMessages.E4ApplicationTemplate_desc);
+ wizard.addPage(page);
+ markPagesAdded();
+ }
+
+ /* Create options expected in the page */
+ private void createOptions() {
+ addOption(KEY_WINDOW_TITLE, PDETemplateMessages.E4ApplicationTemplate_windowTitle, "Eclipse 4 RCP Application", 0); //$NON-NLS-1$
+ addOption(KEY_CREATE_SAMPLE_CONTENT, PDETemplateMessages.E4ApplicationTemplate_createSampleContent, false, 0);
+ addOption(KEY_CREATE_LIFE_CYCLE, PDETemplateMessages.E4ApplicationTemplate_createLifeCycle, false, 0);
+ lifeCycleClassnameOption = addOption(KEY_LIFE_CYCLE_CLASS_NAME, PDETemplateMessages.E4ApplicationTemplate_lifeCycleClassname, "E4LifeCycle", 0); //$NON-NLS-1$
+ lifeCycleClassnameOption.setRequired(false);
+ lifeCycleClassnameOption.setEnabled(false);
+ }
+
+
+ @Override
+ public void validateOptions(TemplateOption source) {
+ if (source.getName().equals(KEY_CREATE_LIFE_CYCLE)) {
+ // Check if classname is set when lifeCycle required
+ lifeCycleClassnameOption.setRequired((Boolean) source.getValue());
+ lifeCycleClassnameOption.setEnabled((Boolean) source.getValue());
+ }
+ super.validateOptions(source);
+
+ }
+
+ @Override
+ public String getSectionId() {
+ // return the name of the directory containing the files in org.eclipse.pde.ui.templates/templates_3.5
+ return "E4Application"; //$NON-NLS-1$
+ }
+
+ @Override
+ protected void updateModel(IProgressMonitor monitor) throws CoreException {
+ // There is only a product extension
+ createProductExtension();
+
+ // Other files located in 'org.eclipse.pde.ui.templates/templates_3.5/E4Application' are copied automatically
+ }
+
+ private void createProductExtension() throws CoreException {
+ IPluginBase plugin = model.getPluginBase();
+ IPluginExtension extension = createExtension("org.eclipse.core.runtime.products", true); //$NON-NLS-1$
+ extension.setId(VALUE_PRODUCT_ID);
+
+ IPluginElement element = model.getFactory().createElement(extension);
+ element.setName("product"); //$NON-NLS-1$
+ element.setAttribute("application", E4_SWT_APPLICATION_ID); //$NON-NLS-1$
+ element.setAttribute("name", getStringOption(KEY_WINDOW_TITLE)); //$NON-NLS-1$
+
+ IPluginElement property;
+
+ if (getBooleanOption(KEY_CREATE_LIFE_CYCLE)) {
+ property = model.getFactory().createElement(element);
+ property.setName("property"); //$NON-NLS-1$
+
+ property.setAttribute("name", "lifeCycleURI");//$NON-NLS-1$ //$NON-NLS-2$
+ property.setAttribute("value", "bundleclass://" + getValue(KEY_PLUGIN_ID) + "/" + getValue(KEY_PACKAGE_NAME) + "." + getStringOption(KEY_LIFE_CYCLE_CLASS_NAME)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ element.add(property);
+ }
+
+ property = model.getFactory().createElement(element);
+ property.setName("property"); //$NON-NLS-1$
+ property.setAttribute("name", "applicationCSS");//$NON-NLS-1$ //$NON-NLS-2$
+ property.setAttribute("value", "platform:/plugin/" + getValue(KEY_PLUGIN_ID) + "/css/default.css"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ element.add(property);
+
+ extension.add(element);
+
+ if (!extension.isInTheModel())
+ plugin.add(extension);
+ }
+
+ @Override
+ protected boolean isOkToCreateFolder(File sourceFolder) {
+ // We copy the files in 'org.eclipse.pde.ui.templates/templates_3.5/E4Application/*/handlers' or 'parts' if content required
+ String fname = sourceFolder.getName();
+ if (fname.endsWith("handlers") || fname.endsWith("parts")) //$NON-NLS-1$//$NON-NLS-2$
+ return getBooleanOption(KEY_CREATE_SAMPLE_CONTENT);
+ return super.isOkToCreateFolder(sourceFolder);
+ }
+
+ @Override
+ protected boolean isOkToCreateFile(File sourceFile) {
+
+ // If file is the lifeCycleClassname (with a $ at the end) we keep it only if life cycle must be created.
+ if (sourceFile.getName().endsWith(KEY_LIFE_CYCLE_CLASS_NAME + "$.java")) //$NON-NLS-1$
+ return getBooleanOption(KEY_CREATE_LIFE_CYCLE);
+
+ // There are 2 application models :
+ // the bin/Application.e4xmi containing the empty model
+ // the Application.e4xmi containing the customized model with content.
+ // We must keep one of them depending on the KEY_CREATE_SAMPLE_CONTENT
+
+ if (sourceFile.getName().endsWith(E4_MODEL_FILE)) {
+
+ // This is one of the 2 files...
+ // Check if this is the bin/Application.e4xmi. In this cas we must keep it if no content expected
+ if (sourceFile.getAbsolutePath().endsWith(EMPTY_E4_MODEL_FILE))
+ return !getBooleanOption(KEY_CREATE_SAMPLE_CONTENT);
+
+ // This is the root file (containing the customized content), must keep it if content expected
+ return getBooleanOption(KEY_CREATE_SAMPLE_CONTENT);
+ }
+
+ return super.isOkToCreateFile(sourceFile);
+ }
+
+ @Override
+ public String getUsedExtensionPoint() {
+ return null;
+ }
+
+ @Override
+ public boolean isDependentOnParentWizard() {
+ return true;
+ }
+
+ @Override
+ public int getNumberOfWorkUnits() {
+ return super.getNumberOfWorkUnits() + 1;
+ }
+
+
+ @Override
+ public IPluginReference[] getDependencies(String schemaVersion) {
+
+ String[] dependencies = new String[] {"javax.inject", //$NON-NLS-1$
+ "org.eclipse.core.runtime", "org.eclipse.swt", //$NON-NLS-1$//$NON-NLS-2$
+ "org.eclipse.e4.ui.model.workbench", "org.eclipse.jface", //$NON-NLS-1$ //$NON-NLS-2$
+ "org.eclipse.e4.ui.services", "org.eclipse.e4.ui.workbench", //$NON-NLS-1$ //$NON-NLS-2$
+ "org.eclipse.e4.core.di", "org.eclipse.e4.ui.di", //$NON-NLS-1$ //$NON-NLS-2$
+ "org.eclipse.e4.core.contexts",}; //$NON-NLS-1$
+
+ final ArrayList<IPluginReference> result = new ArrayList<IPluginReference>(dependencies.length);
+ for (final String dependency : dependencies) {
+ final Bundle bundle = Platform.getBundle(dependency);
+ String versionString = "0.0.0"; //$NON-NLS-1$
+ if (dependency != null) {
+ final Version version = bundle.getVersion();
+ versionString = version.getMajor() + "." //$NON-NLS-1$
+ + version.getMinor() + "." + version.getMicro(); //$NON-NLS-1$
+ }
+ result.add(new PluginReference(dependency, versionString, IMatchRules.GREATER_OR_EQUAL));
+ }
+ return result.toArray(new IPluginReference[0]);
+
+ }
+
+ @Override
+ public String[] getNewFiles() {
+ return new String[] {"icons/", "css/default.css", "Application.e4xmi"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+}
diff --git a/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/pderesources.properties b/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/pderesources.properties
index d25a9f3608..90a4f296b8 100644
--- a/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/pderesources.properties
+++ b/ui/org.eclipse.pde.ui.templates/src/org/eclipse/pde/internal/ui/templates/pderesources.properties
@@ -78,6 +78,16 @@ ViewRCPTemplate_appClass=App&lication class:
ViewRCPTemplate_packageName = &Java package name:
ViewRCPTemplate_windowTitle=Application window &title:
+E4ApplicationNewWizard_title=Eclipse 4 RCP Application with basic part and commands
+E4ApplicationTemplate_title=Simple Eclipse 4 Application
+E4ApplicationTemplate_desc=This template creates an Eclipse 4 RCP application that consists of an application window with a single part and basic commands.
+E4ApplicationTemplate_appClass=App&lication class:
+E4ApplicationTemplate_packageName = &Java package name:
+E4ApplicationTemplate_windowTitle=Application window &title:
+E4ApplicationTemplate_createSampleContent=Create Sample Content (part, menu, command...)
+E4ApplicationTemplate_createLifeCycle=Create Life Cycle
+E4ApplicationTemplate_lifeCycleClassname=Life Cycle class name:
+
MultiPageEditorNewWizard_wtitle = New plug-in project with a multi-page editor
MultiPageEditorTemplate_title = Sample Multi-Page Editor
MultiPageEditorTemplate_desc = Choose the options that will be used to generate the multi-page editor.
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/$pluginId$.product b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/$pluginId$.product
new file mode 100644
index 0000000000..88fd5a55c0
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/$pluginId$.product
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="$pluginId$" id="$pluginId$.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="true">
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <programArgs>-clearPersistedState</programArgs>
+ <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+ </launcherArgs>
+
+ <windowImages/>
+
+ <plugins>
+ <plugin id="$pluginId$"/>
+ <plugin id="com.ibm.icu"/>
+ <plugin id="javax.annotation"/>
+ <plugin id="javax.inject"/>
+ <plugin id="javax.xml"/>
+ <plugin id="org.apache.batik.css"/>
+ <plugin id="org.apache.batik.util"/>
+ <plugin id="org.apache.batik.util.gui"/>
+ <plugin id="org.apache.commons.logging"/>
+ <plugin id="org.eclipse.core.commands"/>
+ <plugin id="org.eclipse.core.contenttype"/>
+ <plugin id="org.eclipse.core.databinding"/>
+ <plugin id="org.eclipse.core.databinding.beans"/>
+ <plugin id="org.eclipse.core.databinding.observable"/>
+ <plugin id="org.eclipse.core.databinding.property"/>
+ <plugin id="org.eclipse.core.expressions"/>
+ <plugin id="org.eclipse.core.filesystem"/>
+ <plugin id="org.eclipse.core.filesystem.aix.ppc" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.hpux.ia64_32" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.linux.ppc" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.linux.x86" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.solaris.sparc" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.win32.x86" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.jobs"/>
+ <plugin id="org.eclipse.core.resources"/>
+ <plugin id="org.eclipse.core.resources.win32.x86" fragment="true"/>
+ <plugin id="org.eclipse.core.runtime"/>
+ <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
+ <plugin id="org.eclipse.e4.core.commands"/>
+ <plugin id="org.eclipse.e4.core.contexts"/>
+ <plugin id="org.eclipse.e4.core.di"/>
+ <plugin id="org.eclipse.e4.core.di.extensions"/>
+ <plugin id="org.eclipse.e4.core.services"/>
+ <plugin id="org.eclipse.e4.ui.bindings"/>
+ <plugin id="org.eclipse.e4.ui.css.core"/>
+ <plugin id="org.eclipse.e4.ui.css.swt"/>
+ <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
+ <plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.model.workbench"/>
+ <plugin id="org.eclipse.e4.ui.services"/>
+ <plugin id="org.eclipse.e4.ui.widgets"/>
+ <plugin id="org.eclipse.e4.ui.workbench"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa"/>
+ <plugin id="org.eclipse.e4.ui.workbench.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench3"/>
+ <plugin id="org.eclipse.emf.common"/>
+ <plugin id="org.eclipse.emf.databinding"/>
+ <plugin id="org.eclipse.emf.ecore"/>
+ <plugin id="org.eclipse.emf.ecore.change"/>
+ <plugin id="org.eclipse.emf.ecore.xmi"/>
+ <plugin id="org.eclipse.equinox.app"/>
+ <plugin id="org.eclipse.equinox.common"/>
+ <plugin id="org.eclipse.equinox.concurrent"/>
+ <plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.event"/>
+ <plugin id="org.eclipse.equinox.preferences"/>
+ <plugin id="org.eclipse.equinox.registry"/>
+ <plugin id="org.eclipse.equinox.util"/>
+ <plugin id="org.eclipse.jface"/>
+ <plugin id="org.eclipse.jface.databinding"/>
+ <plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state"/>
+ <plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.swt"/>
+ <plugin id="org.eclipse.swt.carbon.macosx" fragment="true"/>
+ <plugin id="org.eclipse.swt.cocoa.macosx" fragment="true"/>
+ <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.ppc" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.ppc64" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.s390" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.s390x" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.x86" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.solaris.sparc" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.solaris.x86" fragment="true"/>
+ <plugin id="org.eclipse.swt.motif.aix.ppc" fragment="true"/>
+ <plugin id="org.eclipse.swt.motif.hpux.ia64_32" fragment="true"/>
+ <plugin id="org.eclipse.swt.motif.linux.x86" fragment="true"/>
+ <plugin id="org.eclipse.swt.motif.solaris.sparc" fragment="true"/>
+ <plugin id="org.eclipse.swt.photon.qnx.x86" fragment="true"/>
+ <plugin id="org.eclipse.swt.win32.win32.x86" fragment="true"/>
+ <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
+ <plugin id="org.w3c.css.sac"/>
+ <plugin id="org.w3c.dom.smil"/>
+ <plugin id="org.w3c.dom.svg"/>
+ <plugin id="org.w3c.dom.events"/>
+ </plugins>
+
+
+</product>
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/Application.e4xmi b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/Application.e4xmi
new file mode 100644
index 0000000000..7facdfd689
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/Application.e4xmi
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_6wlLcMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ide.application" bindingContexts="_6wlLecgZEeSyMNYR5xypkQ">
+ <children xsi:type="basic:TrimmedWindow" xmi:id="_6wlLccgZEeSyMNYR5xypkQ" label="$windowTitle$" width="500" height="400">
+ <children xsi:type="advanced:PerspectiveStack" xmi:id="_6wlLkMgZEeSyMNYR5xypkQ">
+ <children xsi:type="advanced:Perspective" xmi:id="_6wlLkcgZEeSyMNYR5xypkQ">
+ <children xsi:type="basic:PartSashContainer" xmi:id="_6wlLksgZEeSyMNYR5xypkQ">
+ <children xsi:type="basic:PartStack" xmi:id="_6wlLk8gZEeSyMNYR5xypkQ">
+ <children xsi:type="basic:Part" xmi:id="_6wlLlMgZEeSyMNYR5xypkQ" contributionURI="bundleclass://$pluginId$/$packageName$.parts.SamplePart" label="Sample Part"/>
+ </children>
+ </children>
+ </children>
+ </children>
+ <mainMenu xmi:id="_6wlLicgZEeSyMNYR5xypkQ" elementId="menu:org.eclipse.ui.main.menu">
+ <children xsi:type="menu:Menu" xmi:id="_6wlLisgZEeSyMNYR5xypkQ" label="File">
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLi8gZEeSyMNYR5xypkQ" label="Open" iconURI="platform:/plugin/$pluginId$/icons/sample.png" command="_6wlLgMgZEeSyMNYR5xypkQ"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLjMgZEeSyMNYR5xypkQ" label="Save" iconURI="platform:/plugin/$pluginId$/icons/save_edit.png" command="_6wlLg8gZEeSyMNYR5xypkQ"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLjcgZEeSyMNYR5xypkQ" label="Quit" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
+ </children>
+ <children xsi:type="menu:Menu" xmi:id="_6wlLjsgZEeSyMNYR5xypkQ" label="Help">
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_6wlLj8gZEeSyMNYR5xypkQ" label="About" command="_6wlLhsgZEeSyMNYR5xypkQ"/>
+ </children>
+ </mainMenu>
+ <trimBars xmi:id="_6wlLlcgZEeSyMNYR5xypkQ">
+ <children xsi:type="menu:ToolBar" xmi:id="_6wlLlsgZEeSyMNYR5xypkQ" elementId="toolbar:org.eclipse.ui.main.toolbar">
+ <children xsi:type="menu:HandledToolItem" xmi:id="_6wlLl8gZEeSyMNYR5xypkQ" iconURI="platform:/plugin/$pluginId$/icons/sample.png" command="_6wlLgMgZEeSyMNYR5xypkQ"/>
+ <children xsi:type="menu:HandledToolItem" xmi:id="_6wlLmMgZEeSyMNYR5xypkQ" iconURI="platform:/plugin/$pluginId$/icons/save_edit.png" command="_6wlLg8gZEeSyMNYR5xypkQ"/>
+ </children>
+ </trimBars>
+ </children>
+ <handlers xmi:id="_6wlLfcgZEeSyMNYR5xypkQ" elementId="$packageName$.handlers.quitCommand" contributionURI="bundleclass://$pluginId$/$packageName$.handlers.QuitHandler" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
+ <handlers xmi:id="_6wlLgcgZEeSyMNYR5xypkQ" elementId="$packageName$.handlers.openCommand" contributionURI="bundleclass://$pluginId$/$packageName$.handlers.OpenHandler" command="_6wlLgMgZEeSyMNYR5xypkQ"/>
+ <handlers xmi:id="_6wlLhMgZEeSyMNYR5xypkQ" elementId="$packageName$.handlers.saveCommand" contributionURI="bundleclass://$pluginId$/$packageName$.handlers.SaveHandler" command="_6wlLg8gZEeSyMNYR5xypkQ"/>
+ <handlers xmi:id="_6wlLh8gZEeSyMNYR5xypkQ" elementId="$packageName$.handlers.aboutCommand" contributionURI="bundleclass://$pluginId$/$packageName$.handlers.AboutHandler" command="_6wlLhsgZEeSyMNYR5xypkQ"/>
+ <bindingTables xmi:id="_6wlLfsgZEeSyMNYR5xypkQ" bindingContext="_6wlLecgZEeSyMNYR5xypkQ">
+ <bindings xmi:id="_6wlLf8gZEeSyMNYR5xypkQ" keySequence="M1+Q" command="_6wlLfMgZEeSyMNYR5xypkQ"/>
+ <bindings xmi:id="_6wlLgsgZEeSyMNYR5xypkQ" keySequence="M1+O" command="_6wlLgMgZEeSyMNYR5xypkQ"/>
+ <bindings xmi:id="_6wlLhcgZEeSyMNYR5xypkQ" keySequence="M1+S" command="_6wlLg8gZEeSyMNYR5xypkQ"/>
+ <bindings xmi:id="_6wlLiMgZEeSyMNYR5xypkQ" keySequence="M1+A" command="_6wlLhsgZEeSyMNYR5xypkQ"/>
+ </bindingTables>
+ <rootContext xmi:id="_6wlLecgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
+ <children xmi:id="_6wlLesgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.window" name="In Windows"/>
+ <children xmi:id="_6wlLe8gZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
+ </rootContext>
+ <commands xmi:id="_6wlLfMgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.exit" commandName="quitCommand"/>
+ <commands xmi:id="_6wlLgMgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.open" commandName="openCommand"/>
+ <commands xmi:id="_6wlLg8gZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.file.save" commandName="saveCommand"/>
+ <commands xmi:id="_6wlLhsgZEeSyMNYR5xypkQ" elementId="org.eclipse.ui.help.aboutAction" commandName="aboutCommand"/>
+ <addons xmi:id="_6wlLcsgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
+ <addons xmi:id="_6wlLc8gZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
+ <addons xmi:id="_6wlLdMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
+ <addons xmi:id="_6wlLdcgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
+ <addons xmi:id="_6wlLdsgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.handler.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
+ <addons xmi:id="_6wlLd8gZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
+ <addons xmi:id="_6wlLeMgZEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
+</application:Application>
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/Application.e4xmi b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/Application.e4xmi
new file mode 100644
index 0000000000..e6a411334c
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/Application.e4xmi
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmi:id="_c3AF0MjYEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ide.application" bindingContexts="_c3AF2cjYEeSyMNYR5xypkQ">
+ <children xsi:type="basic:TrimmedWindow" xmi:id="_c3AF0cjYEeSyMNYR5xypkQ" label="Empty E4 Application" width="500" height="400"/>
+ <rootContext xmi:id="_c3AF2cjYEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
+ <children xmi:id="_c3AF2sjYEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.window" name="In Windows"/>
+ <children xmi:id="_c3AF28jYEeSyMNYR5xypkQ" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
+ </rootContext>
+ <addons xmi:id="_c3AF0sjYEeSyMNYR5xypkQ" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
+ <addons xmi:id="_c3AF08jYEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
+ <addons xmi:id="_c3AF1MjYEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
+ <addons xmi:id="_c3AF1cjYEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
+ <addons xmi:id="_c3AF1sjYEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.handler.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
+ <addons xmi:id="_c3AF18jYEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
+ <addons xmi:id="_c3AF2MjYEeSyMNYR5xypkQ" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
+</application:Application>
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/css/default.css b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/css/default.css
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/css/default.css
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/icons/sample.png b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/icons/sample.png
new file mode 100644
index 0000000000..932e4518cd
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/icons/sample.png
Binary files differ
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/icons/save_edit.png b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/icons/save_edit.png
new file mode 100644
index 0000000000..2c598e5aef
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/bin/icons/save_edit.png
Binary files differ
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/$activator$.java b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/$activator$.java
new file mode 100644
index 0000000000..88259693a2
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/$activator$.java
@@ -0,0 +1,30 @@
+package $packageName$;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class $activator$ implements BundleActivator {
+
+ private static BundleContext context;
+
+ static BundleContext getContext() {
+ return context;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext bundleContext) throws Exception {
+ $activator$.context = bundleContext;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext bundleContext) throws Exception {
+ $activator$.context = null;
+ }
+
+}
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/$lifeCycleClassName$.java b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/$lifeCycleClassName$.java
new file mode 100644
index 0000000000..578d406820
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/$lifeCycleClassName$.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2014 TwelveTone LLC 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:
+ * Steven Spungin <steven@spungin.tv> - initial API and implementation
+ *******************************************************************************/
+package $packageName$;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.workbench.lifecycle.PostContextCreate;
+import org.eclipse.e4.ui.workbench.lifecycle.PreSave;
+import org.eclipse.e4.ui.workbench.lifecycle.ProcessAdditions;
+import org.eclipse.e4.ui.workbench.lifecycle.ProcessRemovals;
+
+/**
+ * This is a stub implementation containing e4 LifeCycle annotated methods.<br />
+ * There is a corresponding entry in <em>plugin.xml</em> (under the
+ * <em>org.eclipse.core.runtime.products' extension point</em>) that references
+ * this class.
+ **/
+@SuppressWarnings("restriction")
+public class $lifeCycleClassName$ {
+
+ @PostContextCreate
+ void postContextCreate(IEclipseContext workbenchContext) {
+ }
+
+ @PreSave
+ void preSave(IEclipseContext workbenchContext) {
+ }
+
+ @ProcessAdditions
+ void processAdditions(IEclipseContext workbenchContext) {
+ }
+
+ @ProcessRemovals
+ void processRemovals(IEclipseContext workbenchContext) {
+ }
+}
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/AboutHandler.java b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/AboutHandler.java
new file mode 100644
index 0000000000..9349bab0be
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/AboutHandler.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2010 - 2013 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ * Lars Vogel <lars.Vogel@gmail.com> - Bug 419770
+ *******************************************************************************/
+package $packageName$.handlers;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+
+public class AboutHandler {
+ @Execute
+ public void execute(Shell shell) {
+ MessageDialog.openInformation(shell, "About", "$windowTitle$");
+ }
+}
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/OpenHandler.java b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/OpenHandler.java
new file mode 100644
index 0000000000..3a9658f76a
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/OpenHandler.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ * Lars Vogel <lars.Vogel@gmail.com> - Bug 419770
+ *******************************************************************************/
+package $packageName$.handlers;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+public class OpenHandler {
+
+ @Execute
+ public void execute(Shell shell){
+ FileDialog dialog = new FileDialog(shell);
+ dialog.open();
+ }
+}
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/QuitHandler.java b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/QuitHandler.java
new file mode 100644
index 0000000000..516cfc7fca
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/QuitHandler.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2010 - 2013 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ * Lars Vogel <lars.Vogel@gmail.com> - Bug 419770
+ *******************************************************************************/
+package $packageName$.handlers;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.workbench.IWorkbench;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+
+
+public class QuitHandler {
+ @Execute
+ public void execute(IWorkbench workbench, Shell shell){
+ if (MessageDialog.openConfirm(shell, "Confirmation",
+ "Do you want to exit?")) {
+ workbench.close();
+ }
+ }
+}
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/SaveHandler.java b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/SaveHandler.java
new file mode 100644
index 0000000000..338cf914aa
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/handlers/SaveHandler.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2010 - 2013 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ * Lars Vogel <lars.Vogel@gmail.com> - Bug 419770
+ *******************************************************************************/
+package $packageName$.handlers;
+
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+
+public class SaveHandler {
+
+ @CanExecute
+ public boolean canExecute(EPartService partService) {
+ if (partService != null) {
+ return !partService.getDirtyParts().isEmpty();
+ }
+ return false;
+ }
+
+ @Execute
+ public void execute(EPartService partService) {
+ partService.saveAll(false);
+ }
+} \ No newline at end of file
diff --git a/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/parts/SamplePart.java b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/parts/SamplePart.java
new file mode 100644
index 0000000000..c907bf58db
--- /dev/null
+++ b/ui/org.eclipse.pde.ui.templates/templates_3.5/E4Application/java/parts/SamplePart.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2010 - 2013 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ * Lars Vogel <lars.Vogel@gmail.com> - Bug 419770
+ *******************************************************************************/
+package $packageName$.parts;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.ui.di.Persist;
+import org.eclipse.e4.ui.model.application.ui.MDirtyable;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+public class SamplePart {
+
+ private Text txtInput;
+ private TableViewer tableViewer;
+
+ @Inject
+ private MDirtyable dirty;
+
+ @PostConstruct
+ public void createComposite(Composite parent) {
+ parent.setLayout(new GridLayout(1, false));
+
+ txtInput = new Text(parent, SWT.BORDER);
+ txtInput.setMessage("Enter text to mark part as dirty");
+ txtInput.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ dirty.setDirty(true);
+ }
+ });
+ txtInput.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ tableViewer = new TableViewer(parent);
+
+ tableViewer.add("Sample item 1");
+ tableViewer.add("Sample item 2");
+ tableViewer.add("Sample item 3");
+ tableViewer.add("Sample item 4");
+ tableViewer.add("Sample item 5");
+ tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
+ }
+
+ @Focus
+ public void setFocus() {
+ tableViewer.getTable().setFocus();
+ }
+
+ @Persist
+ public void save() {
+ dirty.setDirty(false);
+ }
+} \ No newline at end of file
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
index 27814d638c..66e623363f 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties
@@ -1094,7 +1094,7 @@ PluginImportWizardFirstPage_0=Tar&get definition:
PluginImportWizardFirstPage_1=Reading contents
PluginImportWizardFirstPage_2=A target definition must be selected
PluginImportWizardFirstPage_3=Projects from a &repository
-PluginContentPage_appQuestion=Would you like to create a 3.x rich client application?
+PluginContentPage_appQuestion=Would you like to create a rich client application?
PluginContentPage_enable_api_analysis=Enable A&PI analysis
PluginContentMergeViewer_title=Plug-in Source Compare
PluginDevelopmentPage_equinox=&Show sections specific to the Equinox OSGi framework

Back to the top