diff options
Diffstat (limited to 'plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.bridge/transforms/Navigator.qvto')
-rw-r--r-- | plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.bridge/transforms/Navigator.qvto | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.bridge/transforms/Navigator.qvto b/plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.bridge/transforms/Navigator.qvto deleted file mode 100644 index 61235cd5de8..00000000000 --- a/plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.bridge/transforms/Navigator.qvto +++ /dev/null @@ -1,123 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2020 Borland Software Corporation, CEA LIST, Artal - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Artem Tikhomirov (Borland) - initial API and implementation - * Aurelien Didier (ARTAL) - aurelien.didier51@gmail.com - Bug 569174 - */ -import Utils; - -modeltype GMFMAP uses mappings('http://www.eclipse.org/papyrus/gmf/2020/mappings'); -modeltype GMFGEN uses gmfgen('http://www.eclipse.org/papyrus/gmf/2020/GenModel'); -modeltype ECORE uses ecore('http://www.eclipse.org/emf/2002/Ecore'); -modeltype GENMODEL uses genmodel('http://www.eclipse.org/emf/2002/GenModel'); - -transformation Navigator(in mapModel : GMFMAP, inout gmfgenModel : GMFGEN); - --- FIXME result is not completely correct now -main() { - var mapRoot := mapModel.rootObjects()![GMFMAP::Mapping]; - var genEditor := gmfgenModel.rootObjects()![GMFGEN::GenEditorGenerator]; - genEditor.navigator := mapRoot.diagram.map navigator(genEditor.diagram); -} - -mapping GMFMAP::CanvasMapping::navigator(genDiagram : GMFGEN::GenDiagram) : GMFGEN::GenNavigator { - childReferences += genDiagram.map navigator(); - childReferences += genDiagram.childNodes->collect(n | n.containers.getNode().map navigator(n)); - childReferences += genDiagram.topLevelNodes.map navigator(); - childReferences += genDiagram.links.map navigator(); - childReferences += genDiagram.links->collect(l | l.getTargetGenNodes()->asSet().showLinkTargets(l)); - childReferences += genDiagram.links->collect(l | l.getSourceGenNodes().showLinkSources(l)); - -- Instead, may use GenLinkEnd.genOutgoingLinks/genIncomingLinks, but they seem to be less effective as they - -- go through GenLink.sources/targets anyway - childReferences += genDiagram.links->collect(l | l.getTargetGenNodes().showIncomingLinks(l)); - childReferences += genDiagram.links->collect(l | l.getSourceGenNodes().showOutgoingLinks(l)); -} - -mapping GMFGEN::GenDiagram::navigator() : GMFGEN::GenNavigatorChildReference { - GMFGEN::GenNavigatorReferenceType::children.populate(result, self, null); -} -mapping GMFGEN::GenTopLevelNode::navigator() : GMFGEN::GenNavigatorChildReference { - parent := self.diagram; - child := self; - referenceType := GenNavigatorReferenceType::children; -} -mapping GMFGEN::GenNode::navigator(childNode : GMFGEN::GenChildNode) : GMFGEN::GenNavigatorChildReference { - parent := self; - child := childNode; - referenceType := GenNavigatorReferenceType::children; -} -mapping GMFGEN::GenLink::navigator() : GMFGEN::GenNavigatorChildReference { - GMFGEN::GenNavigatorReferenceType::children.populate(result, self, self.diagram); - groupName := 'links'; - groupIcon := 'icons/linksNavigatorGroup.gif'; -} - -helper GMFGEN::GenNavigatorReferenceType::populate(inout ref : GMFGEN::GenNavigatorChildReference, child : GMFGEN::GenCommonBase, parent : GMFGEN::GenCommonBase) : GMFGEN::GenNavigatorChildReference { - ref.child := child; - ref.referenceType := self; - ref.parent := parent; - return ref; -} - -helper GMFGEN::GenLinkEnd::showLinkTargets(link : GMFGEN::GenLink) : GMFGEN::GenNavigatorChildReference { - var rv := object GMFGEN::GenNavigatorChildReference {}; - GMFGEN::GenNavigatorReferenceType::out_target.populate(rv, self, link); - rv.groupName := 'target'; - rv.groupIcon := 'icons/linkTargetNavigatorGroup.gif'; - return rv; -} --- XXX Odd. Processing a link, adding a childreference to GenNode. Perhaps, using GenLinkEnd.genIncomingLinks would be better? -helper GMFGEN::GenLinkEnd::showIncomingLinks(link : GMFGEN::GenLink) : GMFGEN::GenNavigatorChildReference { - var rv := object GMFGEN::GenNavigatorChildReference {}; - GMFGEN::GenNavigatorReferenceType::in_source.populate(rv, link, self); - rv.groupName := 'incoming links'; - rv.groupIcon := 'icons/incomingLinksNavigatorGroup.gif'; - return rv; -} -helper GMFGEN::GenLinkEnd::showLinkSources(link : GMFGEN::GenLink) : GMFGEN::GenNavigatorChildReference { - var rv := object GMFGEN::GenNavigatorChildReference {}; - GMFGEN::GenNavigatorReferenceType::in_source.populate(rv, self, link); - rv.groupName := 'source'; - rv.groupIcon := 'icons/linkSourceNavigatorGroup.gif'; - return rv; -} -helper GMFGEN::GenLinkEnd::showOutgoingLinks(link : GMFGEN::GenLink) : GMFGEN::GenNavigatorChildReference { - var rv := object GMFGEN::GenNavigatorChildReference {}; - GMFGEN::GenNavigatorReferenceType::out_target.populate(rv, link, self); - rv.groupName := 'outgoing links'; - rv.groupIcon := 'icons/outgoingLinksNavigatorGroup.gif'; - return rv; -} - -query GMFGEN::GenChildContainer::getNode() : GMFGEN::GenNode { assert (false) with log ('Abstract query call'); return null } -query GMFGEN::GenNode::getNode() : GMFGEN::GenNode { return self } -query GMFGEN::GenCompartment::getNode() : GMFGEN::GenNode { return self.node } - -query GMFGEN::GenLink::getSourceGenNodes() : OrderedSet(GMFGEN::GenLinkEnd) { - if self.modelFacet.oclIsUndefined() then return self.diagram.getAllPossibleLinkEnds() endif; - return self.sources; -} -query GMFGEN::GenLink::getTargetGenNodes() : OrderedSet(GMFGEN::GenLinkEnd) { - if self.modelFacet.oclIsUndefined() then { - return self.diagram.getAllPossibleLinkEnds() - } endif; - return self.targets; -} - -query GMFGEN::GenDiagram::getAllPossibleLinkEnds() : OrderedSet(GMFGEN::GenLinkEnd) { - -- XXX original DGMT's NavigatorHandler used getAllNodes here, which is not completely correct: - -- first, links can go to links, second, links can't go to GenChildLabelNode - var rs : OrderedSet(GenLinkEnd) = OrderedSet{}; - rs += self.topLevelNodes; - rs += self.childNodes->reject(oclIsKindOf(GMFGEN::GenChildLabelNode)); -- child nodes, excluding labels - rs += self.links; - return rs; -} |