diff options
Diffstat (limited to 'plugins/developer/org.eclipse.papyrus.def/xtend/aspects/xpt/diagram/updater/DiagramUpdater.xtend')
-rw-r--r-- | plugins/developer/org.eclipse.papyrus.def/xtend/aspects/xpt/diagram/updater/DiagramUpdater.xtend | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/plugins/developer/org.eclipse.papyrus.def/xtend/aspects/xpt/diagram/updater/DiagramUpdater.xtend b/plugins/developer/org.eclipse.papyrus.def/xtend/aspects/xpt/diagram/updater/DiagramUpdater.xtend index 13adcc7b058..a2888d120d6 100644 --- a/plugins/developer/org.eclipse.papyrus.def/xtend/aspects/xpt/diagram/updater/DiagramUpdater.xtend +++ b/plugins/developer/org.eclipse.papyrus.def/xtend/aspects/xpt/diagram/updater/DiagramUpdater.xtend @@ -22,18 +22,17 @@ import org.eclipse.gmf.codegen.gmfgen.FeatureLinkModelFacet import org.eclipse.gmf.codegen.gmfgen.GenCommonBase import org.eclipse.gmf.codegen.gmfgen.GenContainerBase import org.eclipse.gmf.codegen.gmfgen.GenDiagram +import org.eclipse.gmf.codegen.gmfgen.GenDiagramUpdater import org.eclipse.gmf.codegen.gmfgen.GenLink +import org.eclipse.gmf.codegen.gmfgen.GenNode import org.eclipse.gmf.codegen.gmfgen.TypeLinkModelFacet +import org.eclipse.papyrus.papyrusgmfgenextension.CustomDiagramUpdaterSingleton import org.eclipse.papyrus.papyrusgmfgenextension.SpecificDiagramUpdater import xpt.Common import xpt.Common_qvto import xpt.GenModelUtils_qvto -import xpt.diagram.updater.LinkDescriptor -import xpt.diagram.updater.NodeDescriptor import xpt.diagram.updater.UpdaterLinkType import xpt.diagram.updater.Utils_qvto -import org.eclipse.gmf.codegen.gmfgen.GenDiagramUpdater -import org.eclipse.papyrus.papyrusgmfgenextension.CustomDiagramUpdaterSingleton // we removed all static modifiers and all private methods becames protected to allow to override method. //see bug421212: [Diagram] Papyrus should provide actions for Show/Hide related links in all diagrams @@ -42,9 +41,9 @@ import org.eclipse.papyrus.papyrusgmfgenextension.CustomDiagramUpdaterSingleton @Inject extension Common_qvto; @Inject extension Utils_qvto; @Inject extension GenModelUtils_qvto; - @Inject LinkDescriptor linkDescriptor; + @Inject xpt.diagram.updater.LinkDescriptor linkDescriptor; @Inject VisualIDRegistry xptVisualIDRegistry; - @Inject NodeDescriptor nodeDescriptor; + @Inject xpt.diagram.updater.NodeDescriptor nodeDescriptor; @Inject MetaModel xptMetaModel; @@ -91,7 +90,7 @@ import org.eclipse.papyrus.papyrusgmfgenextension.CustomDiagramUpdaterSingleton package «packageName(it)»; «generatedClassComment» - public class «className(it)» implements org.eclipse.gmf.tooling.runtime.update.DiagramUpdater { + public class «className(it)» implements org.eclipse.papyrus.infra.gmfdiag.common.updater.DiagramUpdater { «classSingleton(it)» «_constructor(it)» «isShortcutOrphaned(it)» @@ -216,7 +215,7 @@ import org.eclipse.papyrus.papyrusgmfgenextension.CustomDiagramUpdaterSingleton { «xptMetaModel.DeclareAndAssign(childMetaFeature.typeGenClass, 'childElement', 'modelElement', it.getModelElementType(), childMetaFeature)» «ENDIF» - int visualID = «xptVisualIDRegistry.getNodeVisualIDMethodCall(it.diagram)»(view, «xptMetaModel. + String visualID = «xptVisualIDRegistry.getNodeVisualIDMethodCall(it.diagram)»(view, «xptMetaModel. DowncastToEObject(childMetaFeature.typeGenClass, 'childElement')»); «FOR next : getSemanticChildren(it, childMetaFeature)» «checkChildElementVisualID(next, null != childMetaFeature && childMetaFeature.listType)» @@ -282,10 +281,13 @@ import org.eclipse.papyrus.papyrusgmfgenextension.CustomDiagramUpdaterSingleton ««« remove static modifier public «listOfNodeDescriptors» getSemanticChildren(org.eclipse.gmf.runtime.notation.View view) { «IF semanticContainers.notEmpty» - switch («xptVisualIDRegistry.getVisualIDMethodCall(editorGen.diagram)»(view)) { - «FOR next : semanticContainers» - «getSemanticChildrenCase(next)» - «ENDFOR» + String vid = «xptVisualIDRegistry.getVisualIDMethodCall(editorGen.diagram)»(view); + if (vid != null) { + switch (vid) { + «FOR next : semanticContainers» + «getSemanticChildrenCase(next)» + «ENDFOR» + } } «ENDIF» return «newEmptyList()»; @@ -309,10 +311,13 @@ import org.eclipse.papyrus.papyrusgmfgenextension.CustomDiagramUpdaterSingleton ««« remove static modifier public «listOfLinkDescriptors» get«linkType.linkMethodSuffix»Links(org.eclipse.gmf.runtime.notation.View view) { «IF linkContainers.notEmpty» - switch («xptVisualIDRegistry.getVisualIDMethodCall(it.editorGen.diagram)»(view)) { - «FOR next : linkContainers» - «getContainedLinksCase(next, linkType)» - «ENDFOR» + String vid = «xptVisualIDRegistry.getVisualIDMethodCall(it.editorGen.diagram)»(view); + if (vid != null) { + switch (vid) { + «FOR next : linkContainers» + «getContainedLinksCase(next, linkType)» + «ENDFOR» + } } «ENDIF» return «newEmptyList»; @@ -322,4 +327,22 @@ import org.eclipse.papyrus.papyrusgmfgenextension.CustomDiagramUpdaterSingleton override runtimeTypedInstance(GenDiagramUpdater it) ''' ''' + /** + * XXX: [MG] suspicious code inside, EVEN after I moved ", " into the IF, there still may be problem if inner IF condition is not met. + * Need to check with case when it.modelFacet.childMetaFeature == null + */ + override def checkChildElementVisualID(GenNode it, Boolean inLoop) ''' + if («VisualIDRegistry::visualID(it)».equals(visualID)) { + result.add(new «nodeDescriptor.qualifiedClassName(it.getDiagram().diagramUpdater)»(«IF null != modelFacet.childMetaFeature»«xptMetaModel.DowncastToEObject(modelFacet.childMetaFeature.typeGenClass, 'childElement')», «ENDIF»visualID)); + «IF inLoop» + continue; + «ENDIF» + } + ''' + + override def checkLinkVisualID(TypeLinkModelFacet it, GenLink genLink, boolean inLoop) ''' + if (!«VisualIDRegistry::visualID(genLink)».equals(«xptVisualIDRegistry.getLinkWithClassVisualIDMethodCall(genLink.diagram)»(«xptMetaModel.DowncastToEObject(metaClass, 'link')»))) { + «stopLinkProcessing(inLoop)» + } + ''' }
\ No newline at end of file |