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