From 0f723881081e8a9a974ddbb355815c3f21e7aeb9 Mon Sep 17 00:00:00 2001
From: Fabian Wiesner <s_wiesne@ira.uka.de>
Date: Thu, 4 Jul 2013 09:10:52 +0000
Subject: [PATCH] [ADD] Right Click on *.repository to Start Diagram Wizard ->
 DMM ->Start Wizard but only creates an empty Diagram till now

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@12371 9e42b895-fcda-4063-8a3b-11be15eb1bbd
---
 .../META-INF/MANIFEST.MF                      |  19 ++-
 .../Move 'plugin.xml' from 'src-gen' here.txt |   1 -
 .../Move 'plugin.xml' here and README.txt     |  26 +++
 .../model/compositediagram.spray              |   6 +-
 .../shapes/CompositeShape.java                | 128 ---------------
 .../compositediagram/shapes/RectShape.java    | 123 --------------
 .../styles/CompositediagramDefaultStyle.java  |  83 ++--------
 .../CompositediagramModelServiceCHILD.java    |  86 +++++-----
 .../actions/InitCreateDiagramWizard.java      | 155 ++++++++++++++++++
 9 files changed, 255 insertions(+), 372 deletions(-)
 delete mode 100644 edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' from 'src-gen' here.txt
 create mode 100644 edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' here and README.txt
 delete mode 100644 edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape.java
 delete mode 100644 edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape.java
 create mode 100644 edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/popup/actions/InitCreateDiagramWizard.java

diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/META-INF/MANIFEST.MF
index 3e09fb34..55bdf3a7 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/META-INF/MANIFEST.MF
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/META-INF/MANIFEST.MF
@@ -24,13 +24,22 @@ Require-Bundle: org.eclipse.ui,
  com.google.inject;bundle-version="3.0.0",
  javax.inject;bundle-version="1.0.0",
  edu.kit.ipd.descartes.mm.applicationlevel,
- org.eclipselabs.spray.runtime.graphiti.zest;bundle-version="0.5.0"
-Import-Package: org.apache.log4j,
- org.apache.commons.logging,
- org.eclipse.xtext.xbase.lib,
+ org.eclipselabs.spray.runtime.graphiti.zest;bundle-version="0.5.0",
+ org.eclipse.core.resources
+Import-Package: org.apache.commons.logging,
+ org.apache.log4j,
  org.eclipse.xtext.service,
  org.eclipse.xtext.ui.editor,
  org.eclipse.xtext.ui.guice,
  org.eclipse.xtext.ui.resource,
- org.eclipse.xtext.util
+ org.eclipse.xtext.util,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipselabs.spray.styles.generator.util
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.internal,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.styles
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' from 'src-gen' here.txt b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' from 'src-gen' here.txt
deleted file mode 100644
index 6c9dd89b..00000000
--- a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' from 'src-gen' here.txt	
+++ /dev/null
@@ -1 +0,0 @@
-Do it
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' here and README.txt b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' here and README.txt
new file mode 100644
index 00000000..0204dd9a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/Move 'plugin.xml' here and README.txt	
@@ -0,0 +1,26 @@
+Move 'plugin.xml' from 'src-gen' here AND copy following Text to Extensions in 'plugin.xml'
+
+----------------------------------------------------------------------
+  <extension
+        point="org.eclipse.ui.popupMenus">
+     <objectContribution
+           id="edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.contribution1"
+           nameFilter="*.repository"
+           objectClass="org.eclipse.core.resources.IFile">
+        <menu
+              id="edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.menu1"
+              label="DMM"
+              path="additions">
+           <separator
+                 name="group1">
+           </separator>
+        </menu>
+        <action
+              class="edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.internal.ExecutableExtensionFactory:edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.popup.actions.InitCreateDiagramWizard"
+              enablesFor="1"
+              id="edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.newAction"
+              label="Create Diagram (Wizard)"
+              menubarPath="edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.menu1/group1">
+        </action>
+     </objectContribution>
+  </extension>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.spray b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.spray
index 05ab5fee..92a09ece 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.spray
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.spray
@@ -30,12 +30,12 @@ class CompositeComponent {
     shape CompositeShape {
 		name into classText  
 		reference assemblyContexts into context
-		reference assemblyConnectors into context
+//		reference assemblyConnectors into context
     }
     behavior {
         create into components palette "Components"
-    }    
-} 
+    }
+}
 
 class AssemblyContext {
     shape RectShape {
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape.java
deleted file mode 100644
index 08432e26..00000000
--- a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/**
- * This is a generated Shape for Spray
- */
-package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes;
-
-import java.util.List;
-import java.util.ArrayList;
-import org.eclipse.graphiti.mm.algorithms.styles.Point;
-import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
-
-import org.eclipse.graphiti.datatypes.IDimension;
-import org.eclipse.graphiti.features.*;
-import org.eclipse.graphiti.features.context.IAddContext;
-import org.eclipse.graphiti.features.impl.AbstractAddShapeFeature;
-import org.eclipse.graphiti.services.Graphiti;
-import org.eclipse.graphiti.services.IGaService;
-import org.eclipse.graphiti.services.IPeService;
-import org.eclipse.graphiti.services.IPeCreateService;
-import org.eclipse.graphiti.util.ColorConstant;
-import org.eclipse.graphiti.util.IColorConstant;
-
-import org.eclipse.graphiti.mm.pictograms.*;
-import org.eclipse.graphiti.mm.algorithms.*;
-import org.eclipse.graphiti.mm.algorithms.styles.*;
-
-import org.eclipselabs.spray.runtime.graphiti.ISprayConstants;
-import org.eclipselabs.spray.runtime.graphiti.layout.SprayAbstractLayoutManager;
-import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
-import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutType;
-
-import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
-import org.eclipselabs.spray.runtime.graphiti.shape.DefaultSprayShape;
-import org.eclipselabs.spray.runtime.graphiti.shape.SprayLayoutManager;
-import org.eclipselabs.spray.runtime.graphiti.styles.ISprayStyle;
-
-@SuppressWarnings("all")
-public class CompositeShape extends DefaultSprayShape {
-    
-	public static enum TextIds {
-		context,
-		classText
-	}
-	
-	public CompositeShape(IFeatureProvider fp) {
-		super(fp);
-	}
-	
-	@Override
-	public ContainerShape getShape(ContainerShape targetContainer, ISprayStyle sprayStyle) {
-		// Create a ContainerShape for this Shape
-		Diagram diagram = peService.getDiagramForShape(targetContainer);
-		ContainerShape containerShape = peCreateService.createContainerShape(targetContainer, true);
-		SprayLayoutService.setId(containerShape, "CompositeShape.containerShape");
-		
-		// define general layout for ContainerShape
-		sprayStyle.getStyle(diagram).setProportional(false);
-		sprayStyle.getStyle(diagram).setStretchH(false);	   
-		sprayStyle.getStyle(diagram).setStretchV(false);	   
-		
-		// layout data
-		SprayLayoutType containerLayout = SprayLayoutType.TOP;
-		SprayLayoutService.setLayoutManager(containerShape, containerLayout, 0, 0, true);
-		SprayLayoutService.getLayoutData(containerShape).setVisible(true);
-		
-		// creates the cascaded elements (figures)
-		IDirectEditingInfo directEditingInfo = getFeatureProvider().getDirectEditingInfo();
-		directEditingInfo.setMainPictogramElement(containerShape);
-		directEditingInfo.setPictogramElement(containerShape);
-		
-		GraphicsAlgorithm element_0 = gaService.createInvisibleRectangle(containerShape);
-		element_0.setStyle(sprayStyle.getStyle(diagram));
-		SprayLayoutService.setShapeFromDsl(containerShape, true);
-		gaService.setLocationAndSize(element_0, 0, 0, 100, 25);
-		
-		ContainerShape shape_1 = peCreateService.createContainerShape(containerShape, true);
-		SprayLayoutService.setId(shape_1, "CompositeShape.shape_1");
-		SprayLayoutService.setCompartment(shape_1, true);
-		GraphitiProperties.set(shape_1, ISprayConstants.TEXT_ID, "context");
-		SprayLayoutType layout_1 = SprayLayoutType.VERTICAL;
-		SprayLayoutService.setLayoutManager(shape_1, layout_1, 5, 5, true);
-		SprayLayoutService.setLayoutData(shape_1, 100, 25);
-		Rectangle element_1 = gaService.createPlainRectangle(shape_1);
-		ISprayStyle style_1 = sprayStyle;
-		element_1.setStyle(style_1.getStyle(diagram));
-		gaService.setLocationAndSize(element_1, 0, 0, 100, 25);
-		SprayLayoutService.setLayoutData(shape_1, 100, 25, true);
-		// start RECURSIVEcREATION shape_1
-		
-		Shape shape_2 = peCreateService.createShape(shape_1, false);
-		SprayLayoutService.setId(shape_2, "CompositeShape.shape_2");
-		Text element_2 = gaService.createPlainText(shape_2);
-		ISprayStyle style_2 = style_1;
-		element_2.setStyle(style_2.getStyle(diagram));
-		gaService.setLocationAndSize(element_2, 5, 0, 95, 25);
-		SprayLayoutService.setLayoutData(shape_2, 95, 25, true);
-		element_2.setHorizontalAlignment(Orientation.ALIGNMENT_LEFT);
-		element_2.setVerticalAlignment(Orientation.ALIGNMENT_TOP);
-		peService.setPropertyValue(element_2, ISprayConstants.TEXT_ID, TextIds.classText.name());
-		peService.setPropertyValue(shape_2, ISprayConstants.TEXT_ID, TextIds.classText.name());
-		element_2.setValue("");
-		getFeatureProvider().getDirectEditingInfo().setGraphicsAlgorithm(element_2);
-		// END createElement Text parent shape_1
-		// end RECURSIVEcREATION shape_1
-		
-		
-		// Set start values for height and width as properties on the element for Layout Feature
-		SprayLayoutManager.setSizePictogramProperties(containerShape);
-		
-		// creates the anchors
-		peCreateService.createChopboxAnchor(containerShape);
-		
-		// Fix the broken coordinate syaten for not active container shapes
-        SprayAbstractLayoutManager.fixOffset(containerShape);
-		return containerShape;
-	}
-
-	public SprayLayoutManager getShapeLayout() {
-		SprayLayoutManager layoutManager = new SprayLayoutManager( );
-		layoutManager.setMinSizeWidth(-1);	
-		layoutManager.setMaxSizeWidth(-1);	
-		layoutManager.setMinSizeHeight(-1);	
-		layoutManager.setMaxSizeHeight(-1);	
-		layoutManager.setStretchHorizontal(true);		   
-		layoutManager.setStretchVertical(true);	   
-		return layoutManager;
-	}
-	
-}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape.java
deleted file mode 100644
index f7680ec5..00000000
--- a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * This is a generated Shape for Spray
- */
-package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes;
-
-import java.util.List;
-import java.util.ArrayList;
-import org.eclipse.graphiti.mm.algorithms.styles.Point;
-import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
-
-import org.eclipse.graphiti.datatypes.IDimension;
-import org.eclipse.graphiti.features.*;
-import org.eclipse.graphiti.features.context.IAddContext;
-import org.eclipse.graphiti.features.impl.AbstractAddShapeFeature;
-import org.eclipse.graphiti.services.Graphiti;
-import org.eclipse.graphiti.services.IGaService;
-import org.eclipse.graphiti.services.IPeService;
-import org.eclipse.graphiti.services.IPeCreateService;
-import org.eclipse.graphiti.util.ColorConstant;
-import org.eclipse.graphiti.util.IColorConstant;
-
-import org.eclipse.graphiti.mm.pictograms.*;
-import org.eclipse.graphiti.mm.algorithms.*;
-import org.eclipse.graphiti.mm.algorithms.styles.*;
-
-import org.eclipselabs.spray.runtime.graphiti.ISprayConstants;
-import org.eclipselabs.spray.runtime.graphiti.layout.SprayAbstractLayoutManager;
-import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
-import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutType;
-
-import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
-import org.eclipselabs.spray.runtime.graphiti.shape.DefaultSprayShape;
-import org.eclipselabs.spray.runtime.graphiti.shape.SprayLayoutManager;
-import org.eclipselabs.spray.runtime.graphiti.styles.ISprayStyle;
-
-@SuppressWarnings("all")
-public class RectShape extends DefaultSprayShape {
-    
-	public static enum TextIds {
-		rectText
-	}
-	
-	public RectShape(IFeatureProvider fp) {
-		super(fp);
-	}
-	
-	@Override
-	public ContainerShape getShape(ContainerShape targetContainer, ISprayStyle sprayStyle) {
-		// Create a ContainerShape for this Shape
-		Diagram diagram = peService.getDiagramForShape(targetContainer);
-		ContainerShape containerShape = peCreateService.createContainerShape(targetContainer, true);
-		SprayLayoutService.setId(containerShape, "RectShape.containerShape");
-		
-		// define general layout for ContainerShape
-		sprayStyle.getStyle(diagram).setProportional(false);
-		sprayStyle.getStyle(diagram).setStretchH(false);	   
-		sprayStyle.getStyle(diagram).setStretchV(false);	   
-		
-		// layout data
-		SprayLayoutType containerLayout = SprayLayoutType.TOP;
-		SprayLayoutService.setLayoutManager(containerShape, containerLayout, 0, 0, true);
-		SprayLayoutService.getLayoutData(containerShape).setVisible(true);
-		
-		// creates the cascaded elements (figures)
-		IDirectEditingInfo directEditingInfo = getFeatureProvider().getDirectEditingInfo();
-		directEditingInfo.setMainPictogramElement(containerShape);
-		directEditingInfo.setPictogramElement(containerShape);
-		
-		GraphicsAlgorithm element_0 = gaService.createInvisibleRectangle(containerShape);
-		element_0.setStyle(sprayStyle.getStyle(diagram));
-		SprayLayoutService.setShapeFromDsl(containerShape, true);
-		gaService.setLocationAndSize(element_0, 0, 0, 100, 25);
-		
-		ContainerShape shape_1 = peCreateService.createContainerShape(containerShape, false);
-		SprayLayoutService.setId(shape_1, "RectShape.shape_1");
-		SprayLayoutService.setCompartment(shape_1, false);
-		Rectangle element_1 = gaService.createPlainRectangle(shape_1);
-		ISprayStyle style_1 = sprayStyle;
-		element_1.setStyle(style_1.getStyle(diagram));
-		gaService.setLocationAndSize(element_1, 0, 0, 100, 25);
-		SprayLayoutService.setLayoutData(shape_1, 100, 25, true);
-		// start RECURSIVEcREATION shape_1
-		
-		Shape shape_2 = peCreateService.createShape(shape_1, false);
-		SprayLayoutService.setId(shape_2, "RectShape.shape_2");
-		Text element_2 = gaService.createPlainText(shape_2);
-		ISprayStyle style_2 = style_1;
-		element_2.setStyle(style_2.getStyle(diagram));
-		gaService.setLocationAndSize(element_2, 5, 0, 95, 25);
-		SprayLayoutService.setLayoutData(shape_2, 95, 25, true);
-		element_2.setHorizontalAlignment(Orientation.ALIGNMENT_LEFT);
-		element_2.setVerticalAlignment(Orientation.ALIGNMENT_TOP);
-		peService.setPropertyValue(element_2, ISprayConstants.TEXT_ID, TextIds.rectText.name());
-		peService.setPropertyValue(shape_2, ISprayConstants.TEXT_ID, TextIds.rectText.name());
-		element_2.setValue("");
-		getFeatureProvider().getDirectEditingInfo().setGraphicsAlgorithm(element_2);
-		// END createElement Text parent shape_1
-		// end RECURSIVEcREATION shape_1
-		
-		
-		// Set start values for height and width as properties on the element for Layout Feature
-		SprayLayoutManager.setSizePictogramProperties(containerShape);
-		
-		// creates the anchors
-		peCreateService.createChopboxAnchor(containerShape);
-		
-		// Fix the broken coordinate syaten for not active container shapes
-        SprayAbstractLayoutManager.fixOffset(containerShape);
-		return containerShape;
-	}
-
-	public SprayLayoutManager getShapeLayout() {
-		SprayLayoutManager layoutManager = new SprayLayoutManager( );
-		layoutManager.setMinSizeWidth(-1);	
-		layoutManager.setMaxSizeWidth(-1);	
-		layoutManager.setMinSizeHeight(-1);	
-		layoutManager.setMaxSizeHeight(-1);	
-		layoutManager.setStretchHorizontal(true);		   
-		layoutManager.setStretchVertical(true);	   
-		return layoutManager;
-	}
-	
-}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/styles/CompositediagramDefaultStyle.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/styles/CompositediagramDefaultStyle.java
index fe867842..0968f148 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/styles/CompositediagramDefaultStyle.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/styles/CompositediagramDefaultStyle.java
@@ -1,76 +1,13 @@
-/**
- * This is a generated Style class for Spray.
- */
+/*************************************************************************************
+ *
+ * Generated on Thu Jul 04 11:05:29 CEST 2013 by Spray StyleGenerator.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
 package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.styles;
 
-import org.eclipse.graphiti.mm.pictograms.Diagram;
-import org.eclipse.graphiti.mm.algorithms.styles.Style;
-import org.eclipse.graphiti.mm.algorithms.styles.Color;
-import org.eclipse.graphiti.mm.algorithms.styles.LineStyle;
-import org.eclipse.graphiti.services.Graphiti;
-import org.eclipse.graphiti.services.IGaService;
-import org.eclipse.graphiti.util.ColorConstant;
-import org.eclipse.graphiti.util.IColorConstant;
-import org.eclipse.graphiti.mm.algorithms.styles.AdaptedGradientColoredAreas;
-import org.eclipse.graphiti.util.IGradientType;
-import org.eclipse.graphiti.mm.algorithms.styles.StylesFactory;
-import org.eclipse.graphiti.util.IPredefinedRenderingStyle;
-import org.eclipselabs.spray.styles.generator.util.GradientUtilClass;
+public class CompositediagramDefaultStyle extends CompositediagramDefaultStyleBase {
 
-
-	/**
-	 * This is a generated Style class for Spray.
-	 * Description: The default style of the compositediagram diagram type.
-	 */
-	@SuppressWarnings("all")
-	public class CompositediagramDefaultStyle extends org.eclipselabs.spray.runtime.graphiti.styles.DefaultSprayStyle {
-	    
-	    /**
-		 * This method creates a Style and returns the defined style.
-		 * Description: The default style of the compositediagram diagram type.
-		 */
-	    @Override
-		public Style newStyle(Diagram diagram) {
-			IGaService gaService = Graphiti.getGaService();
-			
-			// Creating Style with given id and description
-			Style style = super.newStyle(diagram);
-			style.setId("CompositediagramDefaultStyle");
-			style.setDescription("The default style of the compositediagram diagram type.");
-			
-			        // transparency value
-			
-			// background attributes
-			
-			        // line attributes
-			
-			        // font attributes
-			        String fontName = style.getFont().getName();
-			        int fontSize = 12;
-			        boolean fontItalic = style.getFont().isItalic();
-			        boolean fontBold = style.getFont().isBold();
-			        style.setFont(gaService.manageFont(diagram, fontName, fontSize, fontItalic, fontBold));
-			
-			
-			return style;
-		}
-		
-	    /**
-		 * This method returns the font color for the style. 
-		 * The font color will be returned separated, because Graphiti allows just the foreground color.
-		 * The foreground color will be used for lines and fonts at the same time.
-		 */
-		@Override
-		public Color getFontColor(Diagram diagram) {
-			return super.getFontColor(diagram);
-		}
-
-		 /**
-		 * This method returns Color Schema of the Style
-		 */
-		public AdaptedGradientColoredAreas getColorSchema() {
-			return null;	
-		}
-		
-		
-	}	
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelServiceCHILD.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelServiceCHILD.java
index c72038bd..4f394164 100644
--- a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelServiceCHILD.java
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelServiceCHILD.java
@@ -9,6 +9,7 @@ import org.eclipse.core.runtime.CoreException;
 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.util.EcoreUtil;
 import org.eclipse.graphiti.dt.IDiagramTypeProvider;
 import org.eclipse.graphiti.mm.pictograms.Diagram;
@@ -17,53 +18,60 @@ import edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository;
 import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
 
 /**
- * @author Katharina
+ * @author F. Wiesner
  *
  */
 public class CompositediagramModelServiceCHILD extends CompositediagramModelService {
 
+	static protected CompositediagramModelServiceCHILD modelService = null;
+	
 	protected CompositediagramModelServiceCHILD(IDiagramTypeProvider dtp) {
 		super(dtp);
 		// TODO Auto-generated constructor stub
 	}
 
-	/**
-     * Creates the domain model element and store it in the file. Overwrite to set required properties on creation.
-     */
-    public Repository createModel(Repository model, URI modelURI) {
-        final Diagram diagram = dtp.getDiagram();
-        try {
-            createModelResourceAndAddModel(model, modelURI);
-            peService.setPropertyValue(diagram, PROPERTY_URI, EcoreUtil.getURI(model).toString());
-            // link the diagram with the model element
-            dtp.getFeatureProvider().link(diagram, model);
-            return model;
-        } catch (CoreException e) {
-            e.printStackTrace();
-            return null;
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    protected void createModelResourceAndAddModel(final Repository model, final URI modelURI) throws CoreException, IOException {
-        final Diagram diagram = dtp.getDiagram();
-        URI uri = modelURI;//TODO: vorher diagram URI
-        uri = uri.trimFragment();
-        uri = uri.trimFileExtension();
-        uri = uri.appendFileExtension(FILE_EXTENSION);
-        ResourceSet rSet = diagram.eResource().getResourceSet();
-        final IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
-        IResource file = workspaceRoot.findMember(uri.toPlatformString(true));
-        if (file == null || !file.exists()) {
-            Resource resource = rSet.createResource(uri);
-            resource.setTrackingModification(true);
-            resource.getContents().add(model);
-        } else {
-            final Resource resource = rSet.getResource(uri, true);
-            resource.getContents().add(model);
-        }
-    }
 	
+//	/**
+//     * Creates the domain model element and store it in the file. Overwrite to set required properties on creation.
+//     */
+//    public Repository createModel(Repository model, URI modelURI) {
+//        final Diagram diagram = dtp.getDiagram();
+//        try {
+//            createModelResourceAndAddModel(model, modelURI);
+//            peService.setPropertyValue(diagram, PROPERTY_URI, EcoreUtil.getURI(model).toString());
+//            // link the diagram with the model element
+//            dtp.getFeatureProvider().link(diagram, model);
+//            return model;
+//        } catch (CoreException e) {
+//            e.printStackTrace();
+//            return null;
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//            return null;
+//        }
+//    }
+//
+//    protected void createModelResourceAndAddModel(final Repository model, final URI modelURI) throws CoreException, IOException {
+//        final Diagram diagram = dtp.getDiagram();
+//        URI uri = modelURI;//TODO: vorher diagram URI
+//        uri = uri.trimFragment();
+//        uri = uri.trimFileExtension();
+//        uri = uri.appendFileExtension(FILE_EXTENSION);
+//        ResourceSet rSet = diagram.eResource().getResourceSet();
+//        final IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
+//        IResource file = workspaceRoot.findMember(uri.toPlatformString(true));
+//        if (file == null || !file.exists()) {
+//            Resource resource = rSet.createResource(uri);
+//            resource.setTrackingModification(true);
+//            resource.getContents().add(model);
+//        } else {
+//            final Resource resource = rSet.getResource(uri, true);
+//            resource.getContents().add(model);
+//        }
+//    }
+//	
+    
+//    public boolean createNewEmptyDiagramFile() {
+//    	
+//    }
 }
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/popup/actions/InitCreateDiagramWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/popup/actions/InitCreateDiagramWizard.java
new file mode 100644
index 00000000..4d2e3592
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/popup/actions/InitCreateDiagramWizard.java
@@ -0,0 +1,155 @@
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.popup.actions;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collections;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.EObject;
+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.transaction.TransactionalEditingDomain;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramsFactory;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IActionDelegate;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipselabs.spray.runtime.graphiti.wizard.FileOpener;
+import org.eclipselabs.spray.runtime.graphiti.wizard.IDiagramInitializer;
+import org.eclipselabs.spray.runtime.graphiti.wizard.NewDiagramPage;
+
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository;
+
+public class InitCreateDiagramWizard implements IObjectActionDelegate {
+
+	private Shell shell;
+	private IStructuredSelection selection;
+	private URI domainModelURI;
+	private String fileName;
+	
+	@Inject
+    private NewDiagramPage      newDiagramPage;
+    @Inject
+    @Named("diagramTypeId")
+    private String              diagramTypeId;
+    @Inject
+    private IDiagramInitializer diagramInitializer;
+    @Inject
+    private FileOpener          fileOpener;
+    @Inject
+    private IWorkspace          workspace;
+	
+	/**
+	 * Constructor for Action1.
+	 */
+	public InitCreateDiagramWizard() {
+		super();
+	}
+
+	/**
+	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+	 */
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+		shell = targetPart.getSite().getShell();
+	}
+
+	/**
+	 * @see IActionDelegate#run(IAction)
+	 */
+	public void run(IAction action) {
+		/*
+		 * Load EObject root (=diagramRoot) from Resource (hopefully it contains type 'Repository')
+		 */
+		TransactionalEditingDomain editingDomain = TransactionalEditingDomain.Factory.INSTANCE.createEditingDomain();
+		ResourceSet resourceSet = editingDomain.getResourceSet();
+		EObject diagramRoot = null;
+		try {
+			Resource resource = resourceSet.getResource(domainModelURI, true);
+			diagramRoot = (EObject) resource.getContents().get(0);
+		} catch (WrappedException e) {
+			MessageDialog.openError(shell, "Wrong resource", "The selected Resource is false");
+			return;
+		}
+		if (diagramRoot == null) {
+			MessageDialog.openError(shell, "Diagram Root Element is null", "The root element in the resource is 'null'");
+			return;
+		}
+		
+		
+		/*
+		 * Load Repository from diagramRoot
+		 */
+		TreeIterator<EObject> it = diagramRoot.eAllContents();
+		Repository model = null;
+		while (it.hasNext()) {
+			EObject possibleRepo = it.next();
+			if (possibleRepo instanceof Repository) {
+				model = (Repository) possibleRepo;
+			}
+		}
+		if (model == null) {
+			MessageDialog.openError(shell, "No Repository found", "Resource does not contain a 'Repository' EObject");
+			return;
+		}
+		
+		
+		/*
+		 * Create empty diagram
+		 */
+		final String diagPath = domainModelURI.toPlatformString(true).replaceFirst(".repository", ".diagram");
+		final ResourceSet rs = new ResourceSetImpl();
+		final URI uri = URI.createPlatformResourceURI(diagPath, true);
+		final Resource resource = rs.createResource(uri);
+		Diagram diagram = PictogramsFactory.eINSTANCE.createDiagram();
+		diagram.setDiagramTypeId(diagramTypeId);
+		diagram.setName(fileName);
+		diagramInitializer.initialize(diagram);
+		resource.getContents().add(diagram);
+		
+		//org.eclipselabs.spray.runtime.graphiti.wizard.NewDiagramWizard nutzt das folgende:
+		//public void run(IProgressMonitor monitor) throws InvocationTargetException 
+		
+		try {
+			resource.save(Collections.emptyMap());
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		IFile file = workspace.getRoot().getFile(new Path(uri.toPlatformString(true)));
+		fileOpener.selectAndReveal(file);
+		fileOpener.openFileToEdit(shell, file);
+	}
+
+	/**
+	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
+	 */
+	public void selectionChanged(IAction action, ISelection selection) {
+		this.domainModelURI = null;
+		action.setEnabled(false);
+		if (!(selection instanceof IStructuredSelection) || selection.isEmpty()) {
+			action.setEnabled(true);
+			return;
+		}
+		this.selection = (IStructuredSelection) selection;
+		IFile file = (IFile) this.selection.getFirstElement();
+		this.fileName = file.getName().replaceAll(".repository", "");
+		this.domainModelURI = URI.createPlatformResourceURI(file.getFullPath().toString(), true);
+		action.setEnabled(true);
+	}
+
+}
-- 
GitLab