]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/function/All.java
Upgrade pdfbox to 2.0.3 and fastutil to 7.0.13 in target platform defs
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / function / All.java
1 package org.simantics.modeling.ui.function;\r
2 \r
3 import java.util.Collection;\r
4 import java.util.HashSet;\r
5 import java.util.Set;\r
6 import java.util.function.Consumer;\r
7 \r
8 import org.simantics.Simantics;\r
9 import org.simantics.browsing.ui.StatePersistor;\r
10 import org.simantics.db.ReadGraph;\r
11 import org.simantics.db.Resource;\r
12 import org.simantics.db.Session;\r
13 import org.simantics.db.common.NamedResource;\r
14 import org.simantics.db.exception.DatabaseException;\r
15 import org.simantics.db.layer0.variable.Variable;\r
16 import org.simantics.db.procedure.Procedure;\r
17 import org.simantics.modeling.typicals.TypicalUtil;\r
18 import org.simantics.modeling.ui.typicals.NewTypicalDiagramInstance;\r
19 import org.simantics.scenegraph.loader.ScenegraphLoaderUtils;\r
20 import org.simantics.scl.reflection.annotations.SCLValue;\r
21 import org.simantics.ui.workbench.action.DefaultActions;\r
22 import org.simantics.utils.ui.dialogs.ShowMessage;\r
23 \r
24 public class All {\r
25 \r
26     @SCLValue(type = "ReadGraph -> Resource -> Variable -> Variable")\r
27     public static Variable singleVariableSelection(ReadGraph graph, Resource resource, Variable context) throws DatabaseException {\r
28         return ScenegraphLoaderUtils.getVariableSelection(graph, context);\r
29     }\r
30 \r
31     @SCLValue(type = "ReadGraph -> Resource -> Variable -> Resource")\r
32     public static Resource projectSelection(ReadGraph graph, Resource resource, Variable context) throws DatabaseException {\r
33         return Simantics.getProjectResource();\r
34     }\r
35     \r
36     @SCLValue(type = "ReadGraph -> Resource -> Variable -> StatePersistor")\r
37     public static StatePersistor standardPersistor(ReadGraph graph, Resource resource, Variable context) throws DatabaseException {\r
38         String configurationId = context.getParent(graph).getPossiblePropertyValue(graph, "browseContext");\r
39         return new StandardPersistor(configurationId);\r
40     }\r
41 \r
42     @SCLValue(type = "Resource -> Resource -> Resource")\r
43     public static Resource standardTypicalInstantiator(final Resource model, final Resource target) throws DatabaseException {\r
44         final Session session = Simantics.getSession();\r
45 \r
46         Collection<Resource> typicals = TypicalUtil.findModelTypicals(session, model);\r
47         if (typicals.isEmpty()) {\r
48             ShowMessage.showInformation("No Typical Diagrams", "There are no typical diagrams in the selected model. Cannot instantiate.");\r
49             return null;\r
50         }\r
51         final Collection<NamedResource> namedTypicals = TypicalUtil.toNamedResources(session, typicals);\r
52 \r
53         return TypicalUtil.syncExec(new Consumer<Procedure<Resource>>() {\r
54             @Override\r
55             public void accept(final Procedure<Resource> procedure) {\r
56                 NewTypicalDiagramInstance.asyncQueryFromList(namedTypicals, selectedTypical -> {\r
57                     if (selectedTypical == null) {\r
58                         procedure.execute(null);\r
59                         return;\r
60                     }\r
61                     try {\r
62                         session.syncRequest(TypicalUtil.instantiateTemplate(target, selectedTypical, instance -> {\r
63                             try {\r
64                                 Set<Resource> customlyNamed = new HashSet<Resource>();\r
65                                 TypicalUtil.applyTypicalModuleNames(instance.first, instance.second, customlyNamed);\r
66                                 //TypicalUtil.generateFreshModuleNames(instance.first, instance.second, customlyNamed);\r
67                                 procedure.execute(instance.second);\r
68                                 // Perform default action on the newly created diagram\r
69                                 DefaultActions.asyncPerformDefaultAction(session, instance.second, false, false, true);\r
70                             } catch (DatabaseException e) {\r
71                                 procedure.exception(e);\r
72                             }\r
73                         }));\r
74                     } catch (Throwable e) {\r
75                         procedure.exception(e);\r
76                     } finally {\r
77                         procedure.execute(null);\r
78                     }\r
79                 });\r
80             }\r
81         });\r
82     }\r
83 \r
84 }