Bug 579332 : Eclipse Runtime Spies don't open

Change-Id: I9561ad29fa9686ce8a86685895d43e68e1808073
Signed-off-by: Olivier Prouvost <olivier.prouvost@opcoach.com>
Reviewed-on: https://git.eclipse.org/r/c/pde/eclipse.pde.ui/+/192152
Tested-by: PDE Bot <pde-bot@eclipse.org>
Reviewed-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
(cherry picked from commit aaff700e878c90b57a50b0fce2aea648b5a1cf3e)
Reviewed-on: https://git.eclipse.org/r/c/pde/eclipse.pde.ui/+/192133
Tested-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
diff --git a/ui/org.eclipse.pde.spy.core/META-INF/MANIFEST.MF b/ui/org.eclipse.pde.spy.core/META-INF/MANIFEST.MF
index 7309c73..7b90ef7 100644
--- a/ui/org.eclipse.pde.spy.core/META-INF/MANIFEST.MF
+++ b/ui/org.eclipse.pde.spy.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %name
 Bundle-SymbolicName: org.eclipse.pde.spy.core;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.101.qualifier
 Automatic-Module-Name: org.eclipse.pde.spy.core
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-11
@@ -10,6 +10,8 @@
  org.eclipse.core.runtime;bundle-version="3.9.0",
  org.eclipse.e4.core.di,
  org.eclipse.e4.ui.workbench,
- org.eclipse.e4.ui.di
-Import-Package: javax.inject;version="1.0.0"
+ org.eclipse.e4.ui.di,
+ org.eclipse.emf.ecore
+Import-Package: javax.inject;version="1.0.0",
+ org.eclipse.emf.ecore
 Bundle-Vendor: %provider-name
diff --git a/ui/org.eclipse.pde.spy.core/pom.xml b/ui/org.eclipse.pde.spy.core/pom.xml
index 1ec4fe7..5498989 100644
--- a/ui/org.eclipse.pde.spy.core/pom.xml
+++ b/ui/org.eclipse.pde.spy.core/pom.xml
@@ -23,6 +23,6 @@
   </properties>
 
   <artifactId>org.eclipse.pde.spy.core</artifactId>
-  <version>1.0.100-SNAPSHOT</version>
+  <version>1.0.101-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/ui/org.eclipse.pde.spy.core/src/org/eclipse/pde/spy/core/SpyHandler.java b/ui/org.eclipse.pde.spy.core/src/org/eclipse/pde/spy/core/SpyHandler.java
index 0616da2..2046bfd 100644
--- a/ui/org.eclipse.pde.spy.core/src/org/eclipse/pde/spy/core/SpyHandler.java
+++ b/ui/org.eclipse.pde.spy.core/src/org/eclipse/pde/spy/core/SpyHandler.java
@@ -35,6 +35,8 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.workbench.modeling.EModelService;
 import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 
 public class SpyHandler {
 	private static final String E4_SPIES_WINDOW = "org.eclipse.pde.spy.core.window";
@@ -93,7 +95,13 @@
 		// No spy window in main windows for the moment... extract the structure
 		// from the
 		// snippet.
-		MTrimmedWindow tw = (MTrimmedWindow) modelService.findSnippet(appli, E4_SPIES_WINDOW);
+		MTrimmedWindow tws = (MTrimmedWindow) modelService.findSnippet(appli, E4_SPIES_WINDOW);
+		
+		// Fix #579332 : must copy the snippet to keep it in the snippet list if it must be re-created later.
+		EObject eObj = (EObject) tws;
+		MTrimmedWindow tw  = (MTrimmedWindow) EcoreUtil.copy(eObj);
+
+
 		MTrimBar trimBar = tw.getTrimBars().stream().filter(t -> t.getSide() == SideValue.TOP).findFirst().get();
 		MToolBar toolbar = (MToolBar) trimBar.getChildren().get(0);