]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/scl/Simantics/Flag.scl
Make Write-interfaces as @FunctionalInterface for lambdas
[simantics/platform.git] / bundles / org.simantics.modeling / scl / Simantics / Flag.scl
1 include "Simantics/DB"
2 include "Simantics/Model"
3 import "Simantics/Diagram"
4
5 type Flag = Resource
6
7 // FLAGS ---------------------------
8
9 toFlag :: Resource -> Flag
10 toFlag flag = (fromResource flag)
11
12 importJava "org.simantics.modeling.flags.MergeFlags" where
13     @JavaName mergeFlags
14     mergeAllFlagsInDiagram :: Resource -> <WriteGraph> String
15     
16     @JavaName expandFlags
17     expandAllFlagsInDiagram :: Resource -> <WriteGraph> ()
18     
19     @JavaName mergeWithoutMetadata
20     mergeFlags :: [Resource] -> <WriteGraph> String
21
22 importJava "org.simantics.modeling.flags.ExpandFlags" where
23     @JavaName expandFlagWithoutMetadata
24     expandFlag :: Resource -> <WriteGraph> Vector Resource
25     
26
27 importJava "org.simantics.diagram.flag.FlagUtil" where    
28     setFlagExternal :: [Flag] -> Boolean -> <WriteGraph> [Resource]
29
30 """Joins two flags."""
31 joinFlags :: Flag -> Flag -> <WriteGraph> ()
32 joinFlags flag1 flag2 = do
33     j = newEntity [
34         hasType STR.ConnectionJoin,
35         hasStatement 
36             DIA.JoinsFlag
37             (toResource flag1),
38         hasStatement
39             DIA.JoinsFlag
40             (toResource flag2)
41     ]
42     ()
43
44 flagToElement :: Flag -> Element
45 flagToElement flag = do
46     flagResource = toResource flag
47     fromResource flagResource
48
49 getFlags :: Diagram -> <ReadGraph> [Resource]
50 getFlags dia = do
51     children = collectionToList (objects_ (singleObject (toResource dia) MOD.CompositeToDiagram) L0.ConsistsOf)
52     flags = filter (\x -> isInstanceOf x DIA.Flag) children
53     flags
54    
55 getFlagByName :: Diagram -> String -> <ReadGraph> [Resource]
56 getFlagByName dia name = do
57     flags = getFlags dia
58     flags_with_name = filter (\x -> relatedValue2 x L0.HasName == name) flags
59     flags_with_name