X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop.diagram%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fdiagram%2FDiagram.java;fp=org.simantics.interop.diagram%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fdiagram%2FDiagram.java;h=365cde242a5e1bea827e1fcdd8ce3612cccd6bfd;hb=b19b7291bcd57e51b1a0bee8f46d8b783c0b8984;hp=d7f0631e034c53fdf81d5087ffcf604b67461d68;hpb=230bd2059a621a7ca66ff9532f8629eb04f69108;p=simantics%2Finterop.git diff --git a/org.simantics.interop.diagram/src/org/simantics/interop/diagram/Diagram.java b/org.simantics.interop.diagram/src/org/simantics/interop/diagram/Diagram.java index d7f0631..365cde2 100644 --- a/org.simantics.interop.diagram/src/org/simantics/interop/diagram/Diagram.java +++ b/org.simantics.interop.diagram/src/org/simantics/interop/diagram/Diagram.java @@ -250,12 +250,19 @@ public abstract class Diagram { public Diagram fromExisting(ReadGraph g, Resource diagram) throws DatabaseException { ModelingResources m = ModelingResources.getInstance(g); StructuralResource2 s = StructuralResource2.getInstance(g); + DiagramResource d = DiagramResource.getInstance(g); Resource composite = null; if (g.isInstanceOf(diagram, s.Composite)) { composite = diagram; diagram = g.getPossibleObject(composite, m.CompositeToDiagram); if (diagram == null) return null; + } else if (g.isInheritedFrom(diagram, d.DefinedElement)) { + // TODO : Defined Element behaves differently to regular configuration diagrams; should we have separate implementation? + composite = diagram; + diagram = g.getPossibleObject(composite, s.IsDefinedBy); + if (diagram == null) + return null; } else { composite = g.getPossibleObject(diagram, m.DiagramToComposite); if (composite == null) @@ -276,6 +283,8 @@ public abstract class Diagram { + + /** * Returns diagram type from composite type * @param g @@ -400,8 +409,13 @@ public abstract class Diagram { public T getSymbol(ReadGraph g, Resource element) throws DatabaseException { ModelingResources mr = ModelingResources.getInstance(g); DiagramResource dr = DiagramResource.getInstance(g); + StructuralResource2 s = StructuralResource2.getInstance(g); if (g.isInstanceOf(element, dr.Element)) return getSymbol(g, element, g.getPossibleObject(element, mr.ElementToComponent)); + else if (g.isSubrelationOf(element, s.IsConnectedTo)) { + // TODO : Defined Element + return getSymbol(g, g.getSingleObject(element, dr.HasConnectionPoint_Inverse),element); + } else return getSymbol(g, g.getSingleObject(element, mr.ComponentToElement), element); }