Skip to content
Snippets Groups Projects
Commit 1ed03487 authored by Fabian Wiesner's avatar Fabian Wiesner
Browse files

Load a CompositeComponent from a *.repository to *.diagram is Possible

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@13480 9e42b895-fcda-4063-8a3b-11be15eb1bbd
parent 874719a9
No related branches found
No related tags found
No related merge requests found
/*************************************************************************************
*
* 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;
public class CompositediagramDefaultStyle extends CompositediagramDefaultStyleBase {
}
......@@ -15,9 +15,19 @@ 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.RecordingCommand;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.emf.transaction.TransactionalEditingDomain.Registry;
import org.eclipse.emf.transaction.util.TransactionUtil;
import org.eclipse.graphiti.dt.IDiagramTypeProvider;
import org.eclipse.graphiti.features.context.impl.AddContext;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.PictogramsFactory;
import org.eclipse.graphiti.services.Graphiti;
import org.eclipse.graphiti.services.IGaService;
import org.eclipse.graphiti.services.IPeCreateService;
import org.eclipse.graphiti.services.IPeService;
import org.eclipse.graphiti.ui.services.GraphitiUi;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
......@@ -34,6 +44,7 @@ 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.CompositeComponent;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository;
public class InitCreateDiagramWizard implements IObjectActionDelegate {
......@@ -76,7 +87,7 @@ public class InitCreateDiagramWizard implements IObjectActionDelegate {
/*
* Load EObject root (=diagramRoot) from Resource (hopefully it contains type 'Repository')
*/
TransactionalEditingDomain editingDomain = TransactionalEditingDomain.Factory.INSTANCE.createEditingDomain();
TransactionalEditingDomain editingDomain = TransactionalEditingDomain.Factory.INSTANCE.createEditingDomain();
ResourceSet resourceSet = editingDomain.getResourceSet();
EObject diagramRoot = null;
try {
......@@ -96,18 +107,40 @@ public class InitCreateDiagramWizard implements IObjectActionDelegate {
* Load Repository from diagramRoot
*/
TreeIterator<EObject> it = diagramRoot.eAllContents();
Repository model = null;
final Repository model;
if (diagramRoot instanceof Repository) {
model = (Repository) diagramRoot;
} else {
//TODO: If >1 Repository exists: present them to choose one
while (it.hasNext()) {
EObject possibleRepo = it.next();
if (possibleRepo instanceof Repository) {
model = (Repository) possibleRepo;
}
model = null;
}
//else {
// //TODO: If >1 Repository exists: present them to choose one
// while (it.hasNext()) {
// EObject possibleRepo = it.next();
// if (possibleRepo instanceof Repository) {
// model = (Repository) possibleRepo;
// break;
// }
// }
// }
/*
* Testweises laden von EOBjects to add
*/
CompositeComponent testObj = null;
while (it.hasNext()) {
EObject possibleCC = it.next();
if (possibleCC instanceof CompositeComponent) { //load CompositeComponent
testObj = (CompositeComponent) possibleCC;
break;
}
}
if (testObj == null) {
MessageDialog.openError(shell, "No CompositeComponent found", "Resource does not contain a 'CompositeComponent' EObject");
return;
}
/*
* If no model found exit
......@@ -124,13 +157,39 @@ public class InitCreateDiagramWizard implements IObjectActionDelegate {
final ResourceSet rs = new ResourceSetImpl();
final URI uri = URI.createPlatformResourceURI(diagPath, true);
final Resource resource = rs.createResource(uri);
// Diagram diagram = Graphiti.getPeCreateService().createDiagram(diagramTypeId, fileName, true);
Diagram diagram = PictogramsFactory.eINSTANCE.createDiagram();
diagram.setDiagramTypeId(diagramTypeId);
diagram.setName(fileName);
diagramInitializer.initialize(diagram);
// diagram.eResource().getContents().add(model);//TODO
/*
* TODO Add Repository/EObject to diagram and link
*/
String dtId = GraphitiUi.getExtensionManager().getDiagramTypeProviderId(diagramTypeId);
IDiagramTypeProvider dtp = GraphitiUi.getExtensionManager().createDiagramTypeProvider(diagram, dtId);
AddContext ac = new AddContext();
ac.setNewObject(testObj);
ac.setTargetContainer(diagram);
dtp.getFeatureProvider().addIfPossible(ac);
/*
* Add Diagram to resource file
*/
resource.getContents().add(diagram);
// TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(diagram);
// domain.getCommandStack().execute(new RecordingCommand(domain) {
// public void doExecute() {
// diagram.eResource().getContents().add(model);
// }
// });
/*
* Save resource and open editor
*/
//org.eclipselabs.spray.runtime.graphiti.wizard.NewDiagramWizard nutzt das folgende:
//public void run(IProgressMonitor monitor) throws InvocationTargetException
try {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment