diff options
author | Henrik Rentz-Reichert | 2017-11-06 10:37:41 +0000 |
---|---|---|
committer | Henrik Rentz-Reichert | 2017-11-07 06:58:06 +0000 |
commit | 48d51b2b32f759e255f0cca154d2757c95d15e19 (patch) | |
tree | f1455e17e092e88c01feac4b6cf7f5ec2d2896ff /plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/provider/GenModelProvider.xtend | |
parent | b09856b29bfcaea08e9e57b14da3744c0a201867 (diff) | |
download | org.eclipse.etrice-48d51b2b32f759e255f0cca154d2757c95d15e19.tar.gz org.eclipse.etrice-48d51b2b32f759e255f0cca154d2757c95d15e19.tar.xz org.eclipse.etrice-48d51b2b32f759e255f0cca154d2757c95d15e19.zip |
Bug 511330 - [core.genmodel.fsm] introduce simplified generator model
for state machines
* manually merged newfsmgen to newfsmgen_finalize because no rebase was
possible due to structural changes
* rebased on master
* switch to Oxygen and Xtend 2.12
Change-Id: If9a8c7421f07fb8e8fa824b7bc6761b9142b7eaf
Diffstat (limited to 'plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/provider/GenModelProvider.xtend')
-rw-r--r-- | plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/provider/GenModelProvider.xtend | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/provider/GenModelProvider.xtend b/plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/provider/GenModelProvider.xtend new file mode 100644 index 000000000..5503e3f53 --- /dev/null +++ b/plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/provider/GenModelProvider.xtend @@ -0,0 +1,68 @@ +/******************************************************************************* + * Copyright (c) 2011 protos software gmbh (http://www.protos.de). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * CONTRIBUTORS: + * Juergen Haug (initial contribution) + * + *******************************************************************************/ + +package org.eclipse.etrice.ui.behavior.fsm.provider + +import java.util.Map +import org.eclipse.emf.ecore.EObject +import org.eclipse.etrice.core.fsm.fSM.ModelComponent +import org.eclipse.etrice.core.genmodel.fsm.BasicFsmGenBuilder +import org.eclipse.etrice.core.genmodel.fsm.fsmgen.Graph +import org.eclipse.etrice.core.genmodel.fsm.fsmgen.GraphContainer +import org.eclipse.etrice.core.genmodel.fsm.fsmgen.Link +import org.eclipse.etrice.core.genmodel.fsm.fsmgen.Node +import org.eclipse.etrice.ui.behavior.fsm.editor.AbstractFSMDiagramTypeProvider +import org.eclipse.graphiti.dt.IDiagramTypeProvider +import org.eclipse.graphiti.services.Graphiti +import org.eclipse.etrice.core.genmodel.fsm.fsmgen.FSMGenElement + +class GenModelProvider { + + val BasicFsmGenBuilder builder + val IDiagramTypeProvider fsmDiagramProvider + var Map<EObject, FSMGenElement> graphMap = newHashMap + + var GraphContainer modelInstance = null + + new(AbstractFSMDiagramTypeProvider fsmDiagramProvider) { + this.fsmDiagramProvider = fsmDiagramProvider + builder = new BasicFsmGenBuilder(fsmDiagramProvider.injector) + } + + def updateModel() { + Graphiti.linkService.getBusinessObjectForLinkedPictogramElement(fsmDiagramProvider.diagram) => [ + modelInstance = if(it instanceof ModelComponent) builder.createTransformedModel(it) else null + ] + if (modelInstance != null) { + graphMap.clear + modelInstance.eAllContents.forEach [ + switch (it) { + Graph: graphMap.put(stateGraph, it) + Node: graphMap.put(stateGraphNode, it) + Link: graphMap.put(transition, it) + } + ] + } + } + + def getModel() { + if (modelInstance == null) { + updateModel() + } + + return modelInstance; + } + + def <T extends FSMGenElement> getCasted(EObject roomObj) { + return graphMap.get(roomObj) as T + } +} |