]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/profile/Profiles.java
Sync git svn branch with SVN repository r33319.
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / profile / Profiles.java
index 9baa067f783294da74d63c8ba02c5e339230e277..0246143d24dccd590583e299980c54fc20979a43 100644 (file)
@@ -15,17 +15,28 @@ import java.util.ArrayList;
 import java.util.HashMap;\r
 import java.util.List;\r
 import java.util.Map;\r
+import java.util.Set;\r
 \r
 import org.simantics.databoard.Bindings;\r
 import org.simantics.db.ReadGraph;\r
 import org.simantics.db.Resource;\r
 import org.simantics.db.WriteGraph;\r
+import org.simantics.db.WriteOnlyGraph;\r
 import org.simantics.db.common.request.WriteRequest;\r
 import org.simantics.db.common.utils.ListUtils;\r
 import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.adapter.impl.DefaultCopyHandler;\r
+import org.simantics.db.layer0.adapter.impl.DefaultPasteImportAdvisor;\r
+import org.simantics.db.layer0.util.ClipboardUtils;\r
+import org.simantics.db.layer0.util.SimanticsClipboard;\r
+import org.simantics.db.layer0.util.SimanticsClipboardImpl;\r
+import org.simantics.db.layer0.util.SimanticsKeys;\r
 import org.simantics.db.layer0.variable.Variable;\r
 import org.simantics.db.service.VirtualGraphSupport;\r
 import org.simantics.diagram.stubs.DiagramResource;\r
+import org.simantics.graph.db.TransferableGraphs;\r
+import org.simantics.graph.representation.Root;\r
+import org.simantics.graph.representation.TransferableGraph1;\r
 import org.simantics.layer0.Layer0;\r
 import org.simantics.modeling.ModelingResources;\r
 import org.simantics.simulation.ontology.SimulationResource;\r
@@ -201,7 +212,6 @@ public class Profiles {
                                        for (Resource r : enabled) {\r
                                                graph.claim(p, SIM.IsActive, r);\r
                                        }\r
-\r
                                }\r
                        });\r
                }\r
@@ -255,6 +265,35 @@ public class Profiles {
                Double priority = graph.getPossibleRelatedValue(entry, DIA.ProfileEntry_HasPriority, Bindings.DOUBLE);\r
                if (priority != null) {\r
                        graph.claimLiteral(instance, DIA.ProfileEntry_HasPriority, priority, Bindings.DOUBLE);\r
+               }\r
+               for (Resource template : graph.getObjects(entry, DIA.HasTemplate)) {\r
+                       SimanticsClipboardImpl builder = new SimanticsClipboardImpl();\r
+                       DefaultCopyHandler handler = new DefaultCopyHandler(template);\r
+                       DefaultPasteImportAdvisor advisor = new DefaultPasteImportAdvisor(instance) {\r
+                               @Override\r
+                               public Resource createRoot(WriteOnlyGraph graph, Root root, Resource resource)\r
+                                               throws DatabaseException {\r
+                                       Layer0 l0 = graph.getService(Layer0.class);\r
+                                       DiagramResource DIA = graph.getService(DiagramResource.class);  \r
+                                       \r
+                                       if(resource == null) resource = graph.newResource();\r
+                                       \r
+                                       graph.claim(library, DIA.HasTemplate, DIA.HasTemplate_Inverse, resource);\r
+                                       \r
+                                       String newName = getName(root);\r
+                                       graph.addLiteral(resource, l0.HasName, l0.NameOf, l0.String, newName, Bindings.STRING);\r
+                                       \r
+                                       addRootInfo(root, newName, resource);\r
+                                       \r
+                                       return resource;\r
+                               }\r
+                       };\r
+                       handler.copyToClipboard(graph, builder);\r
+                       for(Set<SimanticsClipboard.Representation> object : builder.getContents()) {\r
+                   TransferableGraph1 tg = ClipboardUtils.accept(graph, object, SimanticsKeys.KEY_TRANSFERABLE_GRAPH);\r
+                   TransferableGraphs.importGraph1(graph, tg, advisor);\r
+               }\r
+                        \r
                }\r
                return instance;\r
        }\r