package org.eclipse.gmf.tooling.examples.shortcut.diagram.part; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.gmf.tooling.examples.shortcut.Diagram; import org.eclipse.gmf.tooling.examples.shortcut.DiagramLink; import org.eclipse.gmf.tooling.examples.shortcut.DiagramNode; import org.eclipse.gmf.tooling.examples.shortcut.ShortcutPackage; import org.eclipse.gmf.tooling.examples.shortcut.diagram.edit.parts.DiagramEditPart; import org.eclipse.gmf.tooling.examples.shortcut.diagram.edit.parts.DiagramLinkEditPart; import org.eclipse.gmf.tooling.examples.shortcut.diagram.edit.parts.DiagramNodeEditPart; import org.eclipse.gmf.tooling.examples.shortcut.diagram.providers.ShortcutElementTypes; import org.eclipse.gmf.tooling.runtime.update.DiagramUpdater; /** * @generated */ public class ShortcutDiagramUpdater { /** * @generated */ public static boolean isShortcutOrphaned(View view) { return !view.isSetElement() || view.getElement() == null || view.getElement().eIsProxy(); } /** * @generated */ public static List<ShortcutNodeDescriptor> getSemanticChildren(View view) { switch (ShortcutVisualIDRegistry.getVisualID(view)) { case DiagramEditPart.VISUAL_ID: return getDiagram_1000SemanticChildren(view); } return Collections.emptyList(); } /** * @generated */ public static List<ShortcutNodeDescriptor> getDiagram_1000SemanticChildren(View view) { if (!view.isSetElement()) { return Collections.emptyList(); } Diagram modelElement = (Diagram) view.getElement(); LinkedList<ShortcutNodeDescriptor> result = new LinkedList<ShortcutNodeDescriptor>(); for (Iterator<?> it = modelElement.getNodes().iterator(); it.hasNext();) { DiagramNode childElement = (DiagramNode) it.next(); int visualID = ShortcutVisualIDRegistry.getNodeVisualID(view, childElement); if (visualID == DiagramNodeEditPart.VISUAL_ID) { result.add(new ShortcutNodeDescriptor(childElement, visualID)); continue; } } return result; } /** * @generated */ public static List<ShortcutLinkDescriptor> getContainedLinks(View view) { switch (ShortcutVisualIDRegistry.getVisualID(view)) { case DiagramEditPart.VISUAL_ID: return getDiagram_1000ContainedLinks(view); case DiagramNodeEditPart.VISUAL_ID: return getDiagramNode_2001ContainedLinks(view); case DiagramLinkEditPart.VISUAL_ID: return getDiagramLink_4001ContainedLinks(view); } return Collections.emptyList(); } /** * @generated */ public static List<ShortcutLinkDescriptor> getIncomingLinks(View view) { switch (ShortcutVisualIDRegistry.getVisualID(view)) { case DiagramNodeEditPart.VISUAL_ID: return getDiagramNode_2001IncomingLinks(view); case DiagramLinkEditPart.VISUAL_ID: return getDiagramLink_4001IncomingLinks(view); } return Collections.emptyList(); } /** * @generated */ public static List<ShortcutLinkDescriptor> getOutgoingLinks(View view) { switch (ShortcutVisualIDRegistry.getVisualID(view)) { case DiagramNodeEditPart.VISUAL_ID: return getDiagramNode_2001OutgoingLinks(view); case DiagramLinkEditPart.VISUAL_ID: return getDiagramLink_4001OutgoingLinks(view); } return Collections.emptyList(); } /** * @generated */ public static List<ShortcutLinkDescriptor> getDiagram_1000ContainedLinks(View view) { Diagram modelElement = (Diagram) view.getElement(); LinkedList<ShortcutLinkDescriptor> result = new LinkedList<ShortcutLinkDescriptor>(); result.addAll(getContainedTypeModelFacetLinks_DiagramLink_4001(modelElement)); return result; } /** * @generated */ public static List<ShortcutLinkDescriptor> getDiagramNode_2001ContainedLinks(View view) { return Collections.emptyList(); } /** * @generated */ public static List<ShortcutLinkDescriptor> getDiagramLink_4001ContainedLinks(View view) { return Collections.emptyList(); } /** * @generated */ public static List<ShortcutLinkDescriptor> getDiagramNode_2001IncomingLinks(View view) { DiagramNode modelElement = (DiagramNode) view.getElement(); Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer.find(view.eResource().getResourceSet().getResources()); LinkedList<ShortcutLinkDescriptor> result = new LinkedList<ShortcutLinkDescriptor>(); result.addAll(getIncomingTypeModelFacetLinks_DiagramLink_4001(modelElement, crossReferences)); return result; } /** * @generated */ public static List<ShortcutLinkDescriptor> getDiagramLink_4001IncomingLinks(View view) { return Collections.emptyList(); } /** * @generated */ public static List<ShortcutLinkDescriptor> getDiagramNode_2001OutgoingLinks(View view) { DiagramNode modelElement = (DiagramNode) view.getElement(); LinkedList<ShortcutLinkDescriptor> result = new LinkedList<ShortcutLinkDescriptor>(); result.addAll(getOutgoingTypeModelFacetLinks_DiagramLink_4001(modelElement)); return result; } /** * @generated */ public static List<ShortcutLinkDescriptor> getDiagramLink_4001OutgoingLinks(View view) { return Collections.emptyList(); } /** * @generated */ private static Collection<ShortcutLinkDescriptor> getContainedTypeModelFacetLinks_DiagramLink_4001(Diagram container) { LinkedList<ShortcutLinkDescriptor> result = new LinkedList<ShortcutLinkDescriptor>(); for (Iterator<?> links = container.getLinks().iterator(); links.hasNext();) { EObject linkObject = (EObject) links.next(); if (false == linkObject instanceof DiagramLink) { continue; } DiagramLink link = (DiagramLink) linkObject; if (DiagramLinkEditPart.VISUAL_ID != ShortcutVisualIDRegistry.getLinkWithClassVisualID(link)) { continue; } DiagramNode dst = link.getTargetNode(); DiagramNode src = link.getSourceNode(); result.add(new ShortcutLinkDescriptor(src, dst, link, ShortcutElementTypes.DiagramLink_4001, DiagramLinkEditPart.VISUAL_ID)); } return result; } /** * @generated */ private static Collection<ShortcutLinkDescriptor> getIncomingTypeModelFacetLinks_DiagramLink_4001(DiagramNode target, Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences) { LinkedList<ShortcutLinkDescriptor> result = new LinkedList<ShortcutLinkDescriptor>(); Collection<EStructuralFeature.Setting> settings = crossReferences.get(target); for (EStructuralFeature.Setting setting : settings) { if (setting.getEStructuralFeature() != ShortcutPackage.eINSTANCE.getDiagramLink_TargetNode() || false == setting.getEObject() instanceof DiagramLink) { continue; } DiagramLink link = (DiagramLink) setting.getEObject(); if (DiagramLinkEditPart.VISUAL_ID != ShortcutVisualIDRegistry.getLinkWithClassVisualID(link)) { continue; } DiagramNode src = link.getSourceNode(); result.add(new ShortcutLinkDescriptor(src, target, link, ShortcutElementTypes.DiagramLink_4001, DiagramLinkEditPart.VISUAL_ID)); } return result; } /** * @generated */ private static Collection<ShortcutLinkDescriptor> getOutgoingTypeModelFacetLinks_DiagramLink_4001(DiagramNode source) { Diagram container = null; // Find container element for the link. // Climb up by containment hierarchy starting from the source // and return the first element that is instance of the container class. for (EObject element = source; element != null && container == null; element = element.eContainer()) { if (element instanceof Diagram) { container = (Diagram) element; } } if (container == null) { return Collections.emptyList(); } LinkedList<ShortcutLinkDescriptor> result = new LinkedList<ShortcutLinkDescriptor>(); for (Iterator<?> links = container.getLinks().iterator(); links.hasNext();) { EObject linkObject = (EObject) links.next(); if (false == linkObject instanceof DiagramLink) { continue; } DiagramLink link = (DiagramLink) linkObject; if (DiagramLinkEditPart.VISUAL_ID != ShortcutVisualIDRegistry.getLinkWithClassVisualID(link)) { continue; } DiagramNode dst = link.getTargetNode(); DiagramNode src = link.getSourceNode(); if (src != source) { continue; } result.add(new ShortcutLinkDescriptor(src, dst, link, ShortcutElementTypes.DiagramLink_4001, DiagramLinkEditPart.VISUAL_ID)); } return result; } /** * @generated */ public static final DiagramUpdater TYPED_INSTANCE = new DiagramUpdater() { /** * @generated */ @Override public List<ShortcutNodeDescriptor> getSemanticChildren(View view) { return ShortcutDiagramUpdater.getSemanticChildren(view); } /** * @generated */ @Override public List<ShortcutLinkDescriptor> getContainedLinks(View view) { return ShortcutDiagramUpdater.getContainedLinks(view); } /** * @generated */ @Override public List<ShortcutLinkDescriptor> getIncomingLinks(View view) { return ShortcutDiagramUpdater.getIncomingLinks(view); } /** * @generated */ @Override public List<ShortcutLinkDescriptor> getOutgoingLinks(View view) { return ShortcutDiagramUpdater.getOutgoingLinks(view); } }; }