diff options
Diffstat (limited to 'plugins/org.eclipse.etrice.ui.behavior.fsm/xtend-gen/org/eclipse/etrice/ui/behavior/fsm/support/BaseDiagramProvider.java')
-rw-r--r-- | plugins/org.eclipse.etrice.ui.behavior.fsm/xtend-gen/org/eclipse/etrice/ui/behavior/fsm/support/BaseDiagramProvider.java | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/plugins/org.eclipse.etrice.ui.behavior.fsm/xtend-gen/org/eclipse/etrice/ui/behavior/fsm/support/BaseDiagramProvider.java b/plugins/org.eclipse.etrice.ui.behavior.fsm/xtend-gen/org/eclipse/etrice/ui/behavior/fsm/support/BaseDiagramProvider.java new file mode 100644 index 000000000..bd075bba4 --- /dev/null +++ b/plugins/org.eclipse.etrice.ui.behavior.fsm/xtend-gen/org/eclipse/etrice/ui/behavior/fsm/support/BaseDiagramProvider.java @@ -0,0 +1,151 @@ +/** + * 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.support; + +import com.google.common.base.Objects; +import com.google.common.collect.Iterables; +import com.google.inject.Injector; +import java.util.Collection; +import java.util.Map; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.etrice.core.fsm.fSM.ModelComponent; +import org.eclipse.etrice.core.fsm.fSM.State; +import org.eclipse.etrice.core.fsm.fSM.StateGraph; +import org.eclipse.etrice.ui.behavior.fsm.editor.AbstractFSMDiagramTypeProvider; +import org.eclipse.etrice.ui.common.base.support.DiagramAccessBase; +import org.eclipse.graphiti.mm.pictograms.Diagram; +import org.eclipse.graphiti.mm.pictograms.PictogramElement; +import org.eclipse.graphiti.mm.pictograms.PictogramLink; +import org.eclipse.graphiti.services.Graphiti; +import org.eclipse.graphiti.services.ILinkService; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.IterableExtensions; + +/** + * Provides the {@linkplain PictogramElement} objects of the base class diagram. + * This is a reverse 1:1 mapping from room business objects to linked base diagram pictograms. + */ +@SuppressWarnings("all") +public class BaseDiagramProvider { + private final DiagramAccessBase diagramAccess; + + private final Map<EObject, PictogramElement> baseGraphElement = CollectionLiterals.<EObject, PictogramElement>newHashMap(); + + private final Map<EObject, PictogramElement> baseStateElement = CollectionLiterals.<EObject, PictogramElement>newHashMap(); + + private final Map<EObject, PictogramElement> initialPointElement = CollectionLiterals.<EObject, PictogramElement>newHashMap(); + + public BaseDiagramProvider(final AbstractFSMDiagramTypeProvider diagramTypeProvider) { + Injector _injector = diagramTypeProvider.getInjector(); + DiagramAccessBase _instance = _injector.<DiagramAccessBase>getInstance(DiagramAccessBase.class); + this.diagramAccess = _instance; + ILinkService _linkService = Graphiti.getLinkService(); + Diagram _diagram = diagramTypeProvider.getDiagram(); + EObject _businessObjectForLinkedPictogramElement = _linkService.getBusinessObjectForLinkedPictogramElement(_diagram); + final ModelComponent mc = ((ModelComponent) _businessObjectForLinkedPictogramElement); + Diagram _diagram_1 = diagramTypeProvider.getDiagram(); + Resource _eResource = _diagram_1.eResource(); + final ResourceSet rs = _eResource.getResourceSet(); + ModelComponent _base = mc.getBase(); + boolean _notEquals = (!Objects.equal(_base, null)); + if (_notEquals) { + ModelComponent _base_1 = mc.getBase(); + final Diagram baseDiagram = this.diagramAccess.getDiagram(_base_1, rs); + boolean _notEquals_1 = (!Objects.equal(baseDiagram, null)); + if (_notEquals_1) { + this.mapPositions(baseDiagram); + EList<Resource> _resources = rs.getResources(); + Resource _eResource_1 = baseDiagram.eResource(); + _resources.remove(_eResource_1); + } + } + } + + public void mapPositions(final Diagram diagram) { + Map<EObject, Collection<EStructuralFeature.Setting>> _find = EcoreUtil.ExternalCrossReferencer.find(diagram); + final BiConsumer<EObject, Collection<EStructuralFeature.Setting>> _function = new BiConsumer<EObject, Collection<EStructuralFeature.Setting>>() { + @Override + public void accept(final EObject targetEObj, final Collection<EStructuralFeature.Setting> eFeatureSetting) { + final Function1<EStructuralFeature.Setting, EObject> _function = new Function1<EStructuralFeature.Setting, EObject>() { + @Override + public EObject apply(final EStructuralFeature.Setting it) { + return it.getEObject(); + } + }; + Iterable<EObject> _map = IterableExtensions.<EStructuralFeature.Setting, EObject>map(eFeatureSetting, _function); + Iterable<PictogramLink> _filter = Iterables.<PictogramLink>filter(_map, PictogramLink.class); + final Function1<PictogramLink, PictogramElement> _function_1 = new Function1<PictogramLink, PictogramElement>() { + @Override + public PictogramElement apply(final PictogramLink it) { + return it.getPictogramElement(); + } + }; + Iterable<PictogramElement> _map_1 = IterableExtensions.<PictogramLink, PictogramElement>map(_filter, _function_1); + final Consumer<PictogramElement> _function_2 = new Consumer<PictogramElement>() { + @Override + public void accept(final PictogramElement pe) { + ILinkService _linkService = Graphiti.getLinkService(); + EObject _eContainer = pe.eContainer(); + EObject _businessObjectForLinkedPictogramElement = _linkService.getBusinessObjectForLinkedPictogramElement(((PictogramElement) _eContainer)); + final boolean isState = (_businessObjectForLinkedPictogramElement instanceof State); + final boolean isInitialPoint = ((targetEObj instanceof StateGraph) && (!(pe.eContainer() instanceof Diagram))); + if (isState) { + BaseDiagramProvider.this.baseStateElement.put(targetEObj, pe); + } else { + if (isInitialPoint) { + BaseDiagramProvider.this.initialPointElement.put(targetEObj, pe); + } else { + BaseDiagramProvider.this.baseGraphElement.put(targetEObj, pe); + } + } + } + }; + _map_1.forEach(_function_2); + } + }; + _find.forEach(_function); + } + + public PictogramElement getBaseGraphPictogram(final EObject roomObj) { + PictogramElement _xifexpression = null; + boolean _notEquals = (!Objects.equal(roomObj, null)); + if (_notEquals) { + _xifexpression = this.baseGraphElement.get(roomObj); + } + return _xifexpression; + } + + public PictogramElement getBaseStatePictogram(final EObject roomObj) { + PictogramElement _xifexpression = null; + boolean _notEquals = (!Objects.equal(roomObj, null)); + if (_notEquals) { + _xifexpression = this.baseStateElement.get(roomObj); + } + return _xifexpression; + } + + public PictogramElement getInitialPointPictogram(final EObject roomObj) { + PictogramElement _xifexpression = null; + boolean _notEquals = (!Objects.equal(roomObj, null)); + if (_notEquals) { + _xifexpression = this.initialPointElement.get(roomObj); + } + return _xifexpression; + } +} |