Add new Oomph Wizard plugin for EMFC Git PGM

Add new Oomph Wizard for EMFC Git PGM, to allow users to create models
that will be used by the EMF Compare Git PGM (additionnal git commands).

Change-Id: Ie468de916a3ee2c790ae882271565e8925b4580a
Signed-off-by: Axel Richard <axel.richard@obeo.fr>
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.checkstyle b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.checkstyle
new file mode 100644
index 0000000..6fd72e6
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.checkstyle
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
+  <local-check-config name="EMF Compare" location="/org.eclipse.emf.compare.git.pgm.parent/codeStyle/EMFCompareCheckstyle5Configuration.xml" type="project" description="">
+    <additional-data name="protect-config-file" value="false"/>
+  </local-check-config>
+  <fileset name="all" enabled="true" check-config-name="EMF Compare" local="true">
+    <file-match-pattern match-pattern="." include-pattern="true"/>
+  </fileset>
+  <filter name="FilesFromPackage" enabled="true">
+    <filter-data value="src-gen"/>
+  </filter>
+</fileset-config>
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.classpath b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.classpath
new file mode 100644
index 0000000..64c5e31
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.project b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.project
new file mode 100644
index 0000000..3d20516
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.compare.git.pgm.oomph.wizard</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>		
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.settings/org.eclipse.core.runtime.prefs b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000..5a0ad22
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..af0f20f
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..dfdf927
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: EMF Compare Git PGM Oomph Wizard
+Bundle-SymbolicName: org.eclipse.emf.compare.git.pgm.oomph.wizard;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.emf.compare.git.pgm.oomph.wizard.Activator
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.ui.ide,
+ org.eclipse.egit.ui,
+ org.eclipse.emf.edit.ui,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.oomph.setup;bundle-version="1.0.0",
+ org.eclipse.oomph.setup.projects;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Import-Package: com.google.common.base;version="[11.0.0,16.0.0)"
+Export-Package: org.eclipse.emf.compare.git.pgm.oomph.wizard
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/about.html b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/about.html
new file mode 100644
index 0000000..5507b29
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/about.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
+<html xmlns="http://www.w3.org/1999/xhtml"> 
+<head> 
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
+<title>Eclipse Foundation Software User Agreement</title> 
+</head> 
+
+ 
+<body lang="EN-US"> 
+<h2>Eclipse Foundation Software User Agreement</h2> 
+<p>April 14, 2010</p> 
+ 
+<h3>Usage Of Content</h3> 
+ 
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p> 
+ 
+<h3>Applicable Licenses</h3> 
+ 
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p> 
+ 
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p> 
+ 
+<ul> 
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li> 
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li> 
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li> 
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li> 
+</ul> 
+ 
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p> 
+ 
+<ul> 
+       <li>The top-level (root) directory</li> 
+       <li>Plug-in and Fragment directories</li> 
+       <li>Inside Plug-ins and Fragments packaged as JARs</li> 
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li> 
+       <li>Feature directories</li> 
+</ul> 
+ 
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p> 
+ 
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p> 
+ 
+<ul> 
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li> 
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li> 
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li> 
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li> 
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li> 
+</ul> 
+ 
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p> 
+ 
+ 
+<h3>Use of Provisioning Technology</h3> 
+ 
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a 
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a> 
+   (&quot;Specification&quot;).</p> 
+ 
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p> 
+ 
+<ol> 
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li> 
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li> 
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li> 
+</ol> 
+ 
+<h3>Cryptography</h3> 
+ 
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p> 
+ 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p> 
+</body> 
+</html> 
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/build.properties b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/build.properties
new file mode 100644
index 0000000..6c480f3
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               icons/
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/icons/emfcompare-icon.gif b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/icons/emfcompare-icon.gif
new file mode 100644
index 0000000..0788ff2
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/icons/emfcompare-icon.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/icons/emfcompare-logo-wiz.png b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/icons/emfcompare-logo-wiz.png
new file mode 100644
index 0000000..d652913
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/icons/emfcompare-logo-wiz.png
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/plugin.xml b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/plugin.xml
new file mode 100644
index 0000000..4d61e98
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.newWizards">
+      <category
+            id="org.eclipse.oomph"
+            name="Oomph">
+      </category>
+      <wizard
+            category="org.eclipse.oomph"
+            class="org.eclipse.emf.compare.git.pgm.oomph.wizard.EMFCompareGitPGMSetupWizard"
+            icon="icons/emfcompare-icon.gif"
+            id="org.eclipse.emf.compare.git.pgm.oomph.wizard"
+            name="Setup for EMF Compare Git PGM"
+            project="false">
+      </wizard>
+   </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/pom.xml b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/pom.xml
new file mode 100644
index 0000000..b15d1a3
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.eclipse.emf.compare.git.pgm</groupId>
+    <artifactId>org.eclipse.emf.compare.git.pgm.parent</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <relativePath>../../org.eclipse.emf.compare.git.pgm.parent/</relativePath>
+  </parent>
+  <groupId>org.eclipse.emf.compare.git.pgm</groupId>
+  <artifactId>org.eclipse.emf.compare.git.pgm.oomph.wizard</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/Activator.java b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/Activator.java
new file mode 100644
index 0000000..426daa8
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/Activator.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo.
+ * 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:
+ *     Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.git.pgm.oomph.wizard;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle.
+ * 
+ * @author <a href="mailto:axel.richard@obeo.fr">Axel Richard</a>
+ */
+public class Activator extends AbstractUIPlugin {
+
+	/** The plug-in ID. */
+	public static final String PLUGIN_ID = "org.eclipse.emf.compare.git.pgm.oomph.wizard"; //$NON-NLS-1$
+
+	/** The shared instance. */
+	private static Activator plugin;
+
+
+	/**
+	 * The constructor.
+	 */
+	public Activator() {
+	}
+
+	/**
+	 * Returns the shared instance.
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
+	 * )
+	 */
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
+	 * )
+	 */
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	
+	/**
+	 * Log an {@link Exception} in the {@link #getLog() current logger}.
+	 * 
+	 * @param e
+	 *            the exception to be logged.
+	 */
+	public void log(Throwable e) {
+		getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, e.getMessage(), e));
+	}
+
+	/**
+	 * Log the given message with the give severity level. Severity is one of {@link IStatus#INFO},
+	 * {@link IStatus#WARNING} and {@link IStatus#ERROR}.
+	 * 
+	 * @param severity
+	 *            the severity of the message
+	 * @param message
+	 *            the message
+	 */
+	public void log(int severity, String message) {
+		getLog().log(new Status(severity, PLUGIN_ID, message));
+	}
+}
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/EMFCompareGitPGMSetupWizard.java b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/EMFCompareGitPGMSetupWizard.java
new file mode 100644
index 0000000..ab5b326
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/EMFCompareGitPGMSetupWizard.java
@@ -0,0 +1,201 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo.
+ * 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:
+ *     Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.git.pgm.oomph.wizard;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.oomph.resources.ResourcesFactory;
+import org.eclipse.oomph.resources.SourceLocator;
+import org.eclipse.oomph.setup.Project;
+import org.eclipse.oomph.setup.SetupFactory;
+import org.eclipse.oomph.setup.SetupPackage;
+import org.eclipse.oomph.setup.VariableTask;
+import org.eclipse.oomph.setup.projects.ProjectsFactory;
+import org.eclipse.oomph.setup.projects.ProjectsImportTask;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ * This wizards helps to create a setup model to use with EMF Compare Git PGM.
+ * 
+ * @author <a href="mailto:axel.richard@obeo.fr">Axel Richard</a>
+ *
+ */
+public class EMFCompareGitPGMSetupWizard extends Wizard implements INewWizard {
+
+	/**
+	 * Wizard Page that handles the creation of the model.
+	 */
+	private SetupCreationPage setupCreationPage;
+
+	/**
+	 * Wizard Page that handles the content of the model.
+	 */
+	private SetupContentPage setupContentPage;
+
+	/**
+	 * The selection of the container of the future setup model.
+	 */
+	private IStructuredSelection select;
+
+	/**
+	 * Default constructor.
+	 */
+	public EMFCompareGitPGMSetupWizard() {
+		setNeedsProgressMonitor(true);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.wizard.Wizard#addPages()
+	 */
+	@Override
+	public void addPages() {
+		setupCreationPage = new SetupCreationPage(
+				"EMFCompareGitPGMSetupWizard", select);
+		addPage(setupCreationPage);
+		setupContentPage = new SetupContentPage();
+		addPage(setupContentPage);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.wizard.Wizard#canFinish()
+	 */
+	@Override
+	public boolean canFinish() {
+		return super.canFinish();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.wizard.Wizard#performFinish()
+	 */
+	@Override
+	public boolean performFinish() {
+		boolean finish = true;
+		IRunnableWithProgress op = new IRunnableWithProgress() {
+			public void run(IProgressMonitor monitor)
+					throws InvocationTargetException {
+				try {
+					doFinish();
+				} catch (IOException e) {
+					throw new InvocationTargetException(e);
+				} finally {
+					monitor.done();
+				}
+			}
+		};
+		try {
+			getContainer().run(true, false, op);
+		} catch (InterruptedException e) {
+			finish  = false;
+		} catch (InvocationTargetException e) {
+			Activator.getDefault().log(e);
+			Throwable realException = e.getTargetException();
+			MessageDialog.openError(getShell(), "Error",
+					realException.getMessage());
+			finish = false;
+		}
+
+		return finish;
+	}
+
+	/**
+	 * Initializes this creation wizard using the passed workbench and object
+	 * selection.
+	 * 
+	 * @param workbench
+	 *            the current workbench.
+	 * @param selection
+	 *            the current object selection.
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.select = selection;
+	}
+
+	/**
+	 * Perform the creation of model.
+	 * 
+	 * @throws IOException e
+	 */
+	private void doFinish() throws IOException {
+
+		// Creates the URI of the resource
+		String fullPath = setupCreationPage.getRelativePathToWorkspace();
+		URI uri = URI.createPlatformResourceURI(fullPath, true);
+
+		// Create a resource set to hold the resources.
+		ResourceSet resourceSet = new ResourceSetImpl();
+		// Register the appropriate resource factory to handle all file
+		// extensions.
+		resourceSet
+				.getResourceFactoryRegistry()
+				.getExtensionToFactoryMap()
+				.put(Resource.Factory.Registry.DEFAULT_EXTENSION,
+						new XMIResourceFactoryImpl());
+
+		// Register the package to ensure it is available during loading.
+		resourceSet.getPackageRegistry().put(SetupPackage.eNS_URI,
+				SetupPackage.eINSTANCE);
+
+		// Creates resource
+		Resource resource = resourceSet.createResource(uri);
+
+		// Creates model's content
+		Project project = SetupFactory.eINSTANCE.createProject();
+		project.setName(setupContentPage.getRootObjectName());
+		project.setLabel(setupContentPage.getRootObjectName());
+
+		resource.getContents().add(project);
+
+		if (!setupContentPage.useDefaultWorkspacePath()) {
+			VariableTask wsVariable = SetupFactory.eINSTANCE
+					.createVariableTask();
+			wsVariable.setName("workspace.location");
+			wsVariable.setValue(setupContentPage.getWorkspacePath());
+			project.getSetupTasks().add(wsVariable);
+		}
+
+		if (!setupContentPage.useDefaultInstallationPath()) {
+			VariableTask installVariable = SetupFactory.eINSTANCE
+					.createVariableTask();
+			installVariable.setName("installation.location");
+			installVariable.setValue(setupContentPage.getInstallationPath());
+			project.getSetupTasks().add(installVariable);
+		}
+
+		if (!setupContentPage.importAll()) {
+			ProjectsImportTask importTask = ProjectsFactory.eINSTANCE
+					.createProjectsImportTask();
+			SourceLocator sourceLocator = ResourcesFactory.eINSTANCE
+					.createSourceLocator();
+			importTask.getSourceLocators().add(sourceLocator);
+			project.getSetupTasks().add(importTask);
+		}
+
+		resource.save(null);
+	}
+}
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/SetupContentPage.java b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/SetupContentPage.java
new file mode 100644
index 0000000..395a3cd
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/SetupContentPage.java
@@ -0,0 +1,406 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo.
+ * 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:
+ *     Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.git.pgm.oomph.wizard;
+
+import static com.google.common.base.Strings.isNullOrEmpty;
+
+import java.io.File;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * This page handles the content of the model created by this wizard.
+ * 
+ * @author <a href="mailto:axel.richard@obeo.fr">Axel Richard</a>
+ *
+ */
+public class SetupContentPage extends WizardPage {
+
+	/** Vertical spacing between widgets. */
+	private static final int VERTICAL_SPACING = 9;
+
+	/** The root object name typed by the user. */
+	private String rootObjectName;
+	/** The selected state of the default workspace checkbox. */
+	private boolean useDefaultWsPath;
+	/** The workspace path typed by the user. */
+	private String wsPath;
+	/** The selected state of the default installation checkbox. */
+	private boolean useDefaultInstallPath;
+	/** The installation path typed by the user. */
+	private String installPath;
+	/** The selected state of the import all projects checkbox. */
+	private boolean importAll;
+
+	/** Widget to capture the root object name typed by the user. */
+	private Text rootObjectNameText;
+	/** Widget to capture the workspace path typed by the user. */
+	private Text workspacePathText;
+	/** Widget to capture the installation path typed by the user. */
+	private Text installationPathText;
+
+	/** Handles the Text Widgets changes. */
+	private ModifyListener modifyTextListener = new ModifyListener() {
+		public void modifyText(ModifyEvent e) {
+			dialogChanged();
+		}
+	};
+
+	/**
+	 * Default constructor.
+	 */
+	public SetupContentPage() {
+		super("wizardPage");
+		setTitle("Setup for EMF Compare Git PGM");
+		setDescription("This wizard creates a new setup model for EMF Compare Git PGM.");
+		setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(
+				Activator.PLUGIN_ID, "icons/emfcompare-logo-wiz.png"));
+	}
+
+	/**
+	 * Creates control.
+	 * 
+	 * @param parent
+	 *            the parent widget.
+	 */
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout();
+		layout.numColumns = 1;
+		layout.verticalSpacing = VERTICAL_SPACING;
+		container.setLayout(layout);
+
+		createRootObjectNamePart(container);
+		createWorkspacePathPart(container);
+		createInstallationPathPart(container);
+		createImportProjectsPart(container);
+
+		// Add listeners to Text Widgets
+		rootObjectNameText.addModifyListener(modifyTextListener);
+		workspacePathText.addModifyListener(modifyTextListener);
+		installationPathText.addModifyListener(modifyTextListener);
+
+		// Set default values
+		rootObjectNameText.setText("");
+		workspacePathText.setText("");
+		installationPathText.setText("");
+
+		setControl(container);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
+	 */
+	@Override
+	public boolean canFlipToNextPage() {
+		return false;
+	}
+
+	/**
+	 * Get the root object name typed by the user.
+	 * 
+	 * @return the root object name typed by the user.
+	 */
+	public String getRootObjectName() {
+		return rootObjectName;
+	}
+
+	/**
+	 * Get the selected state of the default workspace checkbox.
+	 * 
+	 * @return the selected state of the default workspace checkbox.
+	 */
+	public boolean useDefaultWorkspacePath() {
+		return useDefaultWsPath;
+	}
+
+	/**
+	 * Get the workspace path typed by the user.
+	 * 
+	 * @return the workspace path typed by the user.
+	 */
+	public String getWorkspacePath() {
+		return wsPath;
+	}
+
+	/**
+	 * Get the selected state of the default installation checkbox.
+	 * 
+	 * @return the selected state of the default installation checkbox.
+	 */
+	public boolean useDefaultInstallationPath() {
+		return useDefaultInstallPath;
+	}
+
+	/**
+	 * Get the installation path typed by the user.
+	 * 
+	 * @return the installation path typed by the user.
+	 */
+	public String getInstallationPath() {
+		return installPath;
+	}
+
+	/**
+	 * Get the selected state of the import all projects checkbox.
+	 * 
+	 * @return the selected state of the import all projects checkbox.
+	 */
+	public boolean importAll() {
+		return importAll;
+	}
+
+	/**
+	 * Creates widgets related to the root object's name.
+	 * 
+	 * @param container
+	 *            the parent widget.
+	 */
+	private void createRootObjectNamePart(Composite container) {
+		Label rootObjectNameLabel = new Label(container, SWT.NULL);
+		rootObjectNameLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER,
+				false, false));
+		rootObjectNameLabel.setText("Model's Root Object Name:");
+
+		rootObjectNameText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		rootObjectNameText
+				.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		rootObjectNameText.setToolTipText("The model's root object name.");
+	}
+
+	/**
+	 * Creates widgets related to the workspace path.
+	 * 
+	 * @param container
+	 *            the parent widget.
+	 */
+	private void createWorkspacePathPart(Composite container) {
+		Label wsLabel = new Label(container, SWT.NULL);
+		wsLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+		wsLabel.setText("Workspace Location:");
+
+		Composite wsGroup = new Composite(container, SWT.NONE);
+		wsGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+		GridLayout wsLayout = new GridLayout(3, false);
+		wsLayout.marginWidth = 0;
+		wsLayout.marginHeight = 0;
+		wsLayout.horizontalSpacing = 10;
+		wsGroup.setLayout(wsLayout);
+
+		final Button defaultWsCheckBox = new Button(wsGroup, SWT.CHECK);
+		defaultWsCheckBox.setText("Default");
+		defaultWsCheckBox
+				.setToolTipText("A default workspace path will be used.");
+		defaultWsCheckBox.setSelection(false);
+		useDefaultWsPath = false;
+
+		workspacePathText = new Text(wsGroup, SWT.BORDER | SWT.SINGLE);
+		workspacePathText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
+				true, false));
+		workspacePathText.setToolTipText("The path to use for the workspace.");
+		workspacePathText.setEnabled(true);
+
+		final Button browseWorkspace = new Button(wsGroup, SWT.PUSH);
+		browseWorkspace.setText("Browse...");
+		browseWorkspace.setEnabled(true);
+
+		defaultWsCheckBox.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				boolean checked = defaultWsCheckBox.getSelection();
+				if (checked) {
+					browseWorkspace.setEnabled(false);
+					workspacePathText.setEnabled(false);
+					useDefaultWsPath = true;
+				} else {
+					browseWorkspace.setEnabled(true);
+					workspacePathText.setEnabled(true);
+					useDefaultWsPath = false;
+				}
+				dialogChanged();
+			}
+		});
+
+		browseWorkspace.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				String previous = workspacePathText.getText();
+				File previousFile = new File(previous);
+				String result;
+				DirectoryDialog dialog = new DirectoryDialog(getShell());
+				if (previousFile.exists() && previousFile.isDirectory()) {
+					dialog.setFilterPath(previousFile.getPath());
+				}
+				result = dialog.open();
+				if (result != null) {
+					workspacePathText.setText(result);
+					wsPath = result;
+				}
+			}
+		});
+	}
+
+	/**
+	 * Creates widgets related to the installation path.
+	 * 
+	 * @param container
+	 *            the parent widget.
+	 */
+	private void createInstallationPathPart(Composite container) {
+		Label installLabel = new Label(container, SWT.NULL);
+		installLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false,
+				false));
+		installLabel.setText("Installation Location:");
+
+		Composite installGroup = new Composite(container, SWT.NONE);
+		installGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
+				false));
+		GridLayout installLayout = new GridLayout(3, false);
+		installLayout.marginWidth = 0;
+		installLayout.marginHeight = 0;
+		installLayout.horizontalSpacing = 10;
+		installGroup.setLayout(installLayout);
+
+		final Button defaultInstallCheckBox = new Button(installGroup,
+				SWT.CHECK);
+		defaultInstallCheckBox.setText("Default");
+		defaultInstallCheckBox
+				.setToolTipText("A default instllation path will be used.");
+		defaultInstallCheckBox.setSelection(false);
+		useDefaultInstallPath = false;
+
+		installationPathText = new Text(installGroup, SWT.BORDER | SWT.SINGLE);
+		installationPathText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
+				true, false));
+		installationPathText
+				.setToolTipText("The path to use for the installation.");
+		installationPathText.setEnabled(true);
+
+		final Button browseInstallation = new Button(installGroup, SWT.PUSH);
+		browseInstallation.setText("Browse...");
+		browseInstallation.setEnabled(true);
+
+		defaultInstallCheckBox.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				boolean checked = defaultInstallCheckBox.getSelection();
+				if (checked) {
+					browseInstallation.setEnabled(false);
+					installationPathText.setEnabled(false);
+					useDefaultInstallPath = true;
+				} else {
+					browseInstallation.setEnabled(true);
+					installationPathText.setEnabled(true);
+					useDefaultInstallPath = false;
+				}
+				dialogChanged();
+			}
+		});
+
+		browseInstallation.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				String previous = installationPathText.getText();
+				File previousFile = new File(previous);
+				String result;
+				DirectoryDialog dialog = new DirectoryDialog(getShell());
+				if (previousFile.exists() && previousFile.isDirectory()) {
+					dialog.setFilterPath(previousFile.getPath());
+				}
+				result = dialog.open();
+				if (result != null) {
+					installationPathText.setText(result);
+					installPath = result;
+				}
+			}
+		});
+	}
+
+	/**
+	 * Creates widgets related to the import of projects.
+	 * 
+	 * @param container
+	 *            the parent widget.
+	 */
+	private void createImportProjectsPart(Composite container) {
+		final Button importAllCheckBox = new Button(container, SWT.CHECK);
+		importAllCheckBox
+				.setText("Import All Projects Found In Current Repository.");
+		importAllCheckBox
+				.setToolTipText("Import all projects found in the current repository.");
+		importAllCheckBox.setSelection(true);
+		importAll = true;
+
+		importAllCheckBox.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				boolean checked = importAllCheckBox.getSelection();
+				if (checked) {
+					importAll = true;
+				} else {
+					importAll = false;
+				}
+			}
+		});
+
+		final Label importProjectsLabel = new Label(container, SWT.NULL);
+		importProjectsLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
+				true, false));
+		importProjectsLabel
+				.setText("If you want to specify which projets to import, you will have to set the paths in the properties\n"
+						+ "of the Source Locator element of the setup model that will be created.");
+		importProjectsLabel.setEnabled(true);
+	}
+
+	/**
+	 * Handles dialog changes.
+	 */
+	private void dialogChanged() {
+		final String rootText = rootObjectNameText.getText();
+		final String wsText = workspacePathText.getText();
+		final String installText = installationPathText.getText();
+		String message = null;
+
+		if (isNullOrEmpty(installText) && !useDefaultInstallPath) {
+			message = "Add an installation path or select default.";
+		} else {
+			installPath = installText;
+		}
+		if (isNullOrEmpty(wsText) && !useDefaultWsPath) {
+			message = "Add a workspace path or select default.";
+		} else {
+			wsPath = wsText;
+		}
+		if (isNullOrEmpty(rootText)) {
+			message = "Model's root object name cannot be empty.";
+		} else {
+			rootObjectName = rootText;
+		}
+
+		setErrorMessage(message);
+		setPageComplete(message == null);
+	}
+}
diff --git a/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/SetupCreationPage.java b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/SetupCreationPage.java
new file mode 100644
index 0000000..8af7b27
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.git.pgm.oomph.wizard/src/org/eclipse/emf/compare/git/pgm/oomph/wizard/SetupCreationPage.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Obeo.
+ * 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:
+ *     Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.git.pgm.oomph.wizard;
+
+import java.io.File;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * This page handles the path and name of the model created by this
+ * wizard.
+ * 
+ * @author <a href="mailto:axel.richard@obeo.fr">Axel Richard</a>
+ *
+ */
+public class SetupCreationPage extends WizardNewFileCreationPage {
+
+	/** The relative path to workspace of the model created by this wizard. */
+	private String relativePath;
+
+	/**
+	 * Default constructor.
+	 * 
+	 * @param pageName
+	 *            the name of the page.
+	 * @param selection
+	 *            the current resource selection.
+	 */
+	public SetupCreationPage(String pageName, IStructuredSelection selection) {
+		super(pageName, selection);
+		setTitle("Setup for EMF Compare Git PGM");
+		setDescription("This wizard creates a new setup model for EMF Compare Git PGM.");
+		setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(
+				Activator.PLUGIN_ID, "icons/emfcompare-logo-wiz.png"));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.dialogs.WizardNewFileCreationPage#validatePage()
+	 */
+	@Override
+	protected boolean validatePage() {
+		final boolean isValid;
+		if (super.validatePage()) {
+			String extension = new Path(getFileName()).getFileExtension();
+			if (extension == null || !"setup".equals(extension)) {
+				setErrorMessage("The model extension should be \".setup\"");
+				isValid = false;
+			} else {
+				computeRelativePathToWorkspace();
+				isValid = true;
+			}
+		} else {
+			isValid = false;
+		}
+		return isValid;
+	}
+
+	/**
+	 * Get the relative path to workspace of the model created by this wizard.
+	 * 
+	 * @return the relative path to workspace of the model created by this
+	 *         wizard.
+	 */
+	public String getRelativePathToWorkspace() {
+		return relativePath;
+	}
+
+	/**
+	 * Computes the relative path to workspace of the model created by this
+	 * wizard.
+	 */
+	private void computeRelativePathToWorkspace() {
+		IPath containerPath = getContainerFullPath();
+		String fileName = getFileName();
+		relativePath = containerPath.toOSString() + File.separator + fileName;
+	}
+}
diff --git a/plugins/org.eclipse.emf.compare.git.pgm/.checkstyle b/plugins/org.eclipse.emf.compare.git.pgm/.checkstyle
index 9d20703..6fd72e6 100644
--- a/plugins/org.eclipse.emf.compare.git.pgm/.checkstyle
+++ b/plugins/org.eclipse.emf.compare.git.pgm/.checkstyle
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
-  <local-check-config name="EMF Compare" location="/org.eclipse.emf.compare-parent/codeStyle/EMFCompareCheckstyle5Configuration.xml" type="project" description="">
+  <local-check-config name="EMF Compare" location="/org.eclipse.emf.compare.git.pgm.parent/codeStyle/EMFCompareCheckstyle5Configuration.xml" type="project" description="">
     <additional-data name="protect-config-file" value="false"/>
   </local-check-config>
   <fileset name="all" enabled="true" check-config-name="EMF Compare" local="true">