org.eclipse.emf.common.command.Command cmd = null;
eu.admire.dispel.containers.Package pck = (eu.admire.dispel.containers.Package) diagram
.getDiagramView().getElement();
ProcessingElementDefinition peDef = (ProcessingElementDefinition) EcoreUtil
.copy(selectedProcessingElement);
ProcessingElementInstance peInstance = (ProcessingElementInstance) peDef
.createInstance();
// PE
DispelTypeReference ref1 = ReferencesFactory.eINSTANCE
.createDispelTypeReference();
DispelTypeReference ref2 = ReferencesFactory.eINSTANCE
.createDispelTypeReference();
AssignmentExpression ex1 = ExpressionsFactory.eINSTANCE
.createAssignmentExpression();
ConditionalExpression ex2 = ExpressionsFactory.eINSTANCE
.createConditionalExpression();
ex1.setChild(ex2);
ConditionalOrExpression ex3 = ExpressionsFactory.eINSTANCE
.createConditionalOrExpression();
ex2.setChild(ex3);
ConditionalAndExpression ex4 = ExpressionsFactory.eINSTANCE
.createConditionalAndExpression();
ex3.getChildren().add(ex4);
InclusiveOrExpression ex5 = ExpressionsFactory.eINSTANCE
.createInclusiveOrExpression();
ex4.getChildren().add(ex5);
ExclusiveOrExpression ex6 = ExpressionsFactory.eINSTANCE
.createExclusiveOrExpression();
ex5.getChildren().add(ex6);
AndExpression ex7 = ExpressionsFactory.eINSTANCE.createAndExpression();
ex6.getChildren().add(ex7);
EqualityExpression ex8 = ExpressionsFactory.eINSTANCE
.createEqualityExpression();
ex7.getChildren().add(ex8);
RelationExpression ex9 = ExpressionsFactory.eINSTANCE
.createRelationExpression();
ex8.getChildren().add(ex9);
ShiftExpression ex10 = ExpressionsFactory.eINSTANCE
.createShiftExpression();
ex9.getChildren().add(ex10);
AdditiveExpression ex11 = ExpressionsFactory.eINSTANCE
.createAdditiveExpression();
ex10.getChildren().add(ex11);
MultiplicativeExpression ex12 = ExpressionsFactory.eINSTANCE
.createMultiplicativeExpression();
ex11.getChildren().add(ex12);
UnaryExpression ex13 = ExpressionsFactory.eINSTANCE
.createUnaryExpression();
ex12.getChildren().add(ex13);
SuffixUnaryModificationExpression ex14 = ExpressionsFactory.eINSTANCE
.createSuffixUnaryModificationExpression();
ex13.setChild(ex14);
NewProcessingElementCall call = InstantiationsFactory.eINSTANCE
.createNewProcessingElementCall();
ex14.setChild(call);
call.setTypeReference(ref2);
ref1.setTarget(peDef);
ref2.setTarget(peDef);
// VARIABLE:
LocalVariableStatement statement = StatementsFactory.eINSTANCE
.createLocalVariableStatement();
LocalVariable variable = VariablesFactory.eINSTANCE
.createLocalVariable();
statement.setVariable(variable);
variable.setTypeReference(ref1);
variable.setName("new_variable");
variable.setInitialValue(ex1);
variable.setValue(peInstance);
// iFOnew
ArrayList<DispelType> tDefinitions = new ArrayList<DispelType>(
pck.getTypeDefinitions());
tDefinitions.add(peDef);
ArrayList<Statement> tStatements = new ArrayList<Statement>(
pck.getStatements());
tStatements.add(statement);
ArrayList<ProcessingElementInstance> tPEs = new ArrayList<ProcessingElementInstance>(
pck.getProcessingElementInstances());
tPEs.add(peInstance);
// Add Instance
cmd = SetCommand.create(
diagram.getEditingDomain(),
eObj,
(EStructuralFeature) eObj.eClass().getEStructuralFeature(
"typeDefinitions"), tDefinitions);
diagram.getEditingDomain().getCommandStack().execute(cmd);
// TODO: POSITION ??
// Add Instance
cmd = SetCommand.create(
diagram.getEditingDomain(),
eObj,
(EStructuralFeature) eObj.eClass().getEStructuralFeature(
"processingElementInstances"), tPEs);
diagram.getEditingDomain().getCommandStack().execute(cmd);
// Add Statement
cmd = SetCommand.create(
diagram.getEditingDomain(),
eObj,
(EStructuralFeature) eObj.eClass().getEStructuralFeature(
"statements"), tStatements);
diagram.getEditingDomain().getCommandStack().execute(cmd);
// IMPORTS:
ArrayList<Import> tImports = new ArrayList<Import>(pck.getImports());
TypeImport pImport = ImportsFactory.eINSTANCE.createTypeImport();
pImport.setType(peDef);
pImport.getNamespaces().addAll(peDef.getNamespaces());
tImports.add(pImport);
cmd = SetCommand.create(
diagram.getEditingDomain(),