package org.roxgt.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.roxgt.Edge; import org.roxgt.Graph; import org.roxgt.Node; import org.roxgt.Property; import org.roxgt.RoxgtPackage; import org.roxgt.diagram.edit.parts.EdgeEditPart; import org.roxgt.diagram.edit.parts.EdgeTargetEditPart; import org.roxgt.diagram.edit.parts.GraphEditPart; import org.roxgt.diagram.edit.parts.NodePropertyCompartmentEditPart; import org.roxgt.diagram.edit.parts.PropertyEditPart; import org.roxgt.diagram.providers.RoxgtElementTypes; /** * @generated */ public class RoxgtDiagramUpdater { /** * @generated */ public static List getSemanticChildren(View view) { switch (RoxgtVisualIDRegistry.getVisualID(view)) { case NodePropertyCompartmentEditPart.VISUAL_ID: return getNodePropertyCompartment_5001SemanticChildren(view); case GraphEditPart.VISUAL_ID: return getGraph_79SemanticChildren(view); } return Collections.EMPTY_LIST; } /** * @generated */ public static List getNodePropertyCompartment_5001SemanticChildren(View view) { if (false == view.eContainer() instanceof View) { return Collections.EMPTY_LIST; } View containerView = (View) view.eContainer(); if (!containerView.isSetElement()) { return Collections.EMPTY_LIST; } Node modelElement = (Node) containerView.getElement(); List result = new LinkedList(); for (Iterator it = modelElement.getProperties().iterator(); it .hasNext();) { Property childElement = (Property) it.next(); int visualID = RoxgtVisualIDRegistry.getNodeVisualID(view, childElement); if (visualID == PropertyEditPart.VISUAL_ID) { result.add(new RoxgtNodeDescriptor(childElement, visualID)); continue; } } return result; } /** * @generated */ public static List getGraph_79SemanticChildren(View view) { if (!view.isSetElement()) { return Collections.EMPTY_LIST; } Graph modelElement = (Graph) view.getElement(); List result = new LinkedList(); for (Iterator it = modelElement.getNodes().iterator(); it.hasNext();) { Node childElement = (Node) it.next(); int visualID = RoxgtVisualIDRegistry.getNodeVisualID(view, childElement); if (visualID == EdgeEditPart.VISUAL_ID) { result.add(new RoxgtNodeDescriptor(childElement, visualID)); continue; } } return result; } /** * @generated */ public static List getContainedLinks(View view) { switch (RoxgtVisualIDRegistry.getVisualID(view)) { case GraphEditPart.VISUAL_ID: return getGraph_79ContainedLinks(view); case EdgeEditPart.VISUAL_ID: return getNode_1001ContainedLinks(view); case PropertyEditPart.VISUAL_ID: return getProperty_2001ContainedLinks(view); case EdgeTargetEditPart.VISUAL_ID: return getEdge_3001ContainedLinks(view); } return Collections.EMPTY_LIST; } /** * @generated */ public static List getIncomingLinks(View view) { switch (RoxgtVisualIDRegistry.getVisualID(view)) { case EdgeEditPart.VISUAL_ID: return getNode_1001IncomingLinks(view); case PropertyEditPart.VISUAL_ID: return getProperty_2001IncomingLinks(view); case EdgeTargetEditPart.VISUAL_ID: return getEdge_3001IncomingLinks(view); } return Collections.EMPTY_LIST; } /** * @generated */ public static List getOutgoingLinks(View view) { switch (RoxgtVisualIDRegistry.getVisualID(view)) { case EdgeEditPart.VISUAL_ID: return getNode_1001OutgoingLinks(view); case PropertyEditPart.VISUAL_ID: return getProperty_2001OutgoingLinks(view); case EdgeTargetEditPart.VISUAL_ID: return getEdge_3001OutgoingLinks(view); } return Collections.EMPTY_LIST; } /** * @generated */ public static List getGraph_79ContainedLinks(View view) { Graph modelElement = (Graph) view.getElement(); List result = new LinkedList(); result.addAll(getContainedTypeModelFacetLinks_Edge_3001(modelElement)); return result; } /** * @generated */ public static List getNode_1001ContainedLinks(View view) { return Collections.EMPTY_LIST; } /** * @generated */ public static List getProperty_2001ContainedLinks(View view) { return Collections.EMPTY_LIST; } /** * @generated */ public static List getEdge_3001ContainedLinks(View view) { return Collections.EMPTY_LIST; } /** * @generated */ public static List getNode_1001IncomingLinks(View view) { Node modelElement = (Node) view.getElement(); Map crossReferences = EcoreUtil.CrossReferencer.find(view.eResource() .getResourceSet().getResources()); List result = new LinkedList(); result.addAll(getIncomingTypeModelFacetLinks_Edge_3001(modelElement, crossReferences)); return result; } /** * @generated */ public static List getProperty_2001IncomingLinks(View view) { return Collections.EMPTY_LIST; } /** * @generated */ public static List getEdge_3001IncomingLinks(View view) { return Collections.EMPTY_LIST; } /** * @generated */ public static List getNode_1001OutgoingLinks(View view) { Node modelElement = (Node) view.getElement(); List result = new LinkedList(); result.addAll(getOutgoingTypeModelFacetLinks_Edge_3001(modelElement)); return result; } /** * @generated */ public static List getProperty_2001OutgoingLinks(View view) { return Collections.EMPTY_LIST; } /** * @generated */ public static List getEdge_3001OutgoingLinks(View view) { return Collections.EMPTY_LIST; } /** * @generated */ private static Collection getContainedTypeModelFacetLinks_Edge_3001( Graph container) { Collection result = new LinkedList(); for (Iterator links = container.getEdges().iterator(); links.hasNext();) { Object linkObject = links.next(); if (false == linkObject instanceof Edge) { continue; } Edge link = (Edge) linkObject; if (EdgeTargetEditPart.VISUAL_ID != RoxgtVisualIDRegistry .getLinkWithClassVisualID(link)) { continue; } Node dst = link.getTarget(); Node src = link.getSource(); result.add(new RoxgtLinkDescriptor(src, dst, link, RoxgtElementTypes.Edge_3001, EdgeTargetEditPart.VISUAL_ID)); } return result; } /** * @generated */ private static Collection getIncomingTypeModelFacetLinks_Edge_3001( Node target, Map crossReferences) { Collection result = new LinkedList(); Collection settings = (Collection) crossReferences.get(target); for (Iterator it = settings.iterator(); it.hasNext();) { EStructuralFeature.Setting setting = (EStructuralFeature.Setting) it .next(); if (setting.getEStructuralFeature() != RoxgtPackage.eINSTANCE .getEdge_Target() || false == setting.getEObject() instanceof Edge) { continue; } Edge link = (Edge) setting.getEObject(); if (EdgeTargetEditPart.VISUAL_ID != RoxgtVisualIDRegistry .getLinkWithClassVisualID(link)) { continue; } Node src = link.getSource(); result.add(new RoxgtLinkDescriptor(src, target, link, RoxgtElementTypes.Edge_3001, EdgeTargetEditPart.VISUAL_ID)); } return result; } /** * @generated */ private static Collection getOutgoingTypeModelFacetLinks_Edge_3001( Node source) { Graph 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 Graph) { container = (Graph) element; } } if (container == null) { return Collections.EMPTY_LIST; } Collection result = new LinkedList(); for (Iterator links = container.getEdges().iterator(); links.hasNext();) { Object linkObject = links.next(); if (false == linkObject instanceof Edge) { continue; } Edge link = (Edge) linkObject; if (EdgeTargetEditPart.VISUAL_ID != RoxgtVisualIDRegistry .getLinkWithClassVisualID(link)) { continue; } Node dst = link.getTarget(); Node src = link.getSource(); if (src != source) { continue; } result.add(new RoxgtLinkDescriptor(src, dst, link, RoxgtElementTypes.Edge_3001, EdgeTargetEditPart.VISUAL_ID)); } return result; } }