]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/scl/Simantics/UserComponent.scl
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling / scl / Simantics / UserComponent.scl
1 include "Simantics/Model"\r
2 import "Simantics/Diagram"\r
3 import "Simantics/Flag"\r
4 include "Simantics/Ontologies"\r
5 \r
6 type UserComponent = Resource\r
7 type ComponentTypeConfiguration = Resource\r
8 type ComponentTypeProperty = Resource\r
9     \r
10 importJava "org.simantics.modeling.NewComponentType" where\r
11     @JavaName createComponentType\r
12     createUserComponent :: Model -> <WriteGraph> UserComponent\r
13     \r
14 configurationOfComponentType :: UserComponent -> <ReadGraph> Resource\r
15 configurationOfComponentType component = do\r
16       config = singleObject (toResource component) STR.IsDefinedBy \r
17       config\r
18       \r
19 importJava "org.simantics.modeling.flags.LiftFlag" where\r
20     liftFlag :: Resource -> <WriteGraph> Maybe String\r
21     \r
22 flagToTerminal :: Flag -> <WriteGraph> Resource\r
23 flagToTerminal flag = do\r
24     result = liftFlag (toResource flag)\r
25     if result == Nothing\r
26     then singleObject (toResource flag) DIA.IsLiftedAs\r
27     else do\r
28         show result\r
29         (toResource flag)\r
30     \r
31 configToDiagram :: Resource -> Diagram\r
32 configToDiagram config = do\r
33     fromResource config\r
34 \r
35 populateTerminalToSymbol :: Resource  -> (Double, Double) -> <WriteGraph> Element\r
36 populateTerminalToSymbol terminal (x, y) = do\r
37     uc = singleObject terminal L0.PartOf\r
38     symbol = singleObject uc MOD.ComponentTypeToSymbol\r
39     diagram = singleObject symbol STR.IsDefinedBy\r
40     element = newResource ()\r
41     addToOrderedSet diagram element\r
42     claim diagram\r
43         L0.ConsistsOf\r
44         element\r
45     elementClass = singleObject terminal MOD.ConnectionRelationToTerminal\r
46     claim element\r
47         L0.InstanceOf\r
48         elementClass\r
49     s = ((match possibleRelatedValue diagram DIA.HasModCount with Nothing -> 1 ; Just v -> v) :: Long)\r
50     claimRelatedValue element\r
51         L0.HasName\r
52         (show s)\r
53     claimRelatedValue diagram \r
54         DIA.HasModCount\r
55         ((match possibleRelatedValue diagram DIA.HasModCount with Nothing -> 1 ; Just v -> v+1) :: Long)\r
56     claimRelatedValueWithType element\r
57         DIA.HasTransform\r
58         G2D.Transform\r
59         (toDoubleArray [1,0,0,1,x,y])\r
60     addToGraph diagram terminal element\r
61     addCommentMetadata ("Populated terminal " + (show element) + " to user component " + (show uc))\r
62     (fromResource element)\r
63 \r
64 importJava "org.simantics.modeling.symbolEditor.PopulateTerminal" where\r
65     addToGraph :: Resource -> Resource -> Resource -> <WriteGraph> ()\r
66 \r
67 importJava "org.simantics.modeling.NewSymbolGroupRequest" where\r
68     createNewSymbolGroup :: Model -> String -> <WriteGraph> Resource\r
69 \r
70 importJava "org.simantics.modeling.AssignSymbolGroupRequest" where\r
71     assignSymbolGroup :: [Resource] -> [Resource] -> [UserComponent] -> <WriteGraph> ()\r
72 \r
73 importJava "org.simantics.modeling.GetSymbolGroups" where\r
74     getSymbolGroups :: Resource -> <ReadGraph> [Resource]\r
75 \r
76 importJava "org.simantics.modeling.userComponent.ComponentTypeCommands" where\r
77     @JavaName createPropertyWithDefaults\r
78     createUserComponentProperty :: UserComponent -> <WriteGraph> Resource\r
79      \r
80     @JavaName rename\r
81     renameUserComponentProperty :: Resource -> String -> <WriteGraph> ()\r
82     \r
83     @JavaName setDescription\r
84     setUserComponentPropertyDescription :: Resource -> String -> <WriteGraph> ()\r
85     \r
86     @JavaName createMonitorPropertyWithDefaults\r
87     createUserComponentMonitorProperty :: UserComponent -> <WriteGraph> Resource\r
88     \r
89     setMonitorExpression :: Resource -> Resource -> String -> <WriteGraph> ()\r
90     \r
91     @JavaName setDefaultValue \r
92     setUserComponentPropertyDefaultValue :: Resource -> Resource -> String -> <WriteGraph> ()\r
93     \r
94     @JavaName setUnit\r
95     setUserComponentPropertyUnit :: Resource -> Resource -> String -> <WriteGraph> ()\r
96     \r
97     @JavaName setRange\r
98     setUserComponentPropertyRange :: Resource -> Resource -> String -> <WriteGraph> ()\r
99     \r
100     @JavaName setLabel\r
101     setUserComponentPropertyLabel :: Resource -> String -> <WriteGraph> ()\r
102 \r
103     @private\r
104     editType :: Resource -> Resource -> Boolean -> String -> <WriteGraph> ()\r
105     \r
106 setUserComponentPropertyRequiredType :: Resource -> Resource -> String -> <WriteGraph> ()\r
107 setUserComponentPropertyRequiredType componentType property newValue = do\r
108     editType componentType property True newValue\r
109  \r
110 importJava "org.simantics.modeling.UserComponentMigration" where\r
111     migrateUserComponents :: UserComponent -> UserComponent -> [Component] -> <WriteGraph> ()\r
112 \r
113 \r
114 /*\r
115     @JavaName newAnnotationProperty\r
116     createProperty :: UserComponent -> <WriteGraph> ComponentTypeProperty\r
117     \r
118     @JavaName advancedAnnotationProperty\r
119     createAdvancedProperty :: UserComponent -> String -> String -> String -> String -> String -> String -> <WriteGraph> ComponentTypeProperty\r
120 \r
121     @JavaName removeAnnotationProperty\r
122     removeProperty :: UserComponent -> ComponentTypeProperty -> <WriteGraph> ()\r
123 */\r
124 \r
125 """\r
126 `addUserComponentScript userComponent scriptType scriptCode` adds the script to the user component.\r
127 """\r
128 addUserComponentScript :: Resource -> String -> String -> String -> <WriteGraph> ()\r
129 addUserComponentScript userComponent scriptName scriptType scriptCode = do\r
130     script = newResource ()\r
131     claim script L0.InstanceOf STR.ComponentTypeScript\r
132     claim userComponent STR.ComponentType.hasScript script\r
133     claimRelatedValue script L0.HasName scriptName\r
134     claimRelatedValue script STR.ComponentTypeScript.type scriptType \r
135     claimRelatedValue script STR.ComponentTypeScript.code scriptCode \r