1 include "Simantics/Model"
\r
2 import "Simantics/Diagram"
\r
3 import "Simantics/Flag"
\r
4 include "Simantics/Ontologies"
\r
6 type UserComponent = Resource
\r
7 type ComponentTypeConfiguration = Resource
\r
8 type ComponentTypeProperty = Resource
\r
10 importJava "org.simantics.modeling.NewComponentType" where
\r
11 @JavaName createComponentType
\r
12 createUserComponent :: Model -> <WriteGraph> UserComponent
\r
14 configurationOfComponentType :: UserComponent -> <ReadGraph> Resource
\r
15 configurationOfComponentType component = do
\r
16 config = singleObject (toResource component) STR.IsDefinedBy
\r
19 importJava "org.simantics.modeling.flags.LiftFlag" where
\r
20 liftFlag :: Resource -> <WriteGraph> Maybe String
\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
31 configToDiagram :: Resource -> Diagram
\r
32 configToDiagram config = do
\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
45 elementClass = singleObject terminal MOD.ConnectionRelationToTerminal
\r
49 s = ((match possibleRelatedValue diagram DIA.HasModCount with Nothing -> 1 ; Just v -> v) :: Long)
\r
50 claimRelatedValue element
\r
53 claimRelatedValue diagram
\r
55 ((match possibleRelatedValue diagram DIA.HasModCount with Nothing -> 1 ; Just v -> v+1) :: Long)
\r
56 claimRelatedValueWithType element
\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
64 importJava "org.simantics.modeling.symbolEditor.PopulateTerminal" where
\r
65 addToGraph :: Resource -> Resource -> Resource -> <WriteGraph> ()
\r
67 importJava "org.simantics.modeling.NewSymbolGroupRequest" where
\r
68 createNewSymbolGroup :: Model -> String -> <WriteGraph> Resource
\r
70 importJava "org.simantics.modeling.AssignSymbolGroupRequest" where
\r
71 assignSymbolGroup :: [Resource] -> [Resource] -> [UserComponent] -> <WriteGraph> ()
\r
73 importJava "org.simantics.modeling.GetSymbolGroups" where
\r
74 getSymbolGroups :: Resource -> <ReadGraph> [Resource]
\r
76 importJava "org.simantics.modeling.userComponent.ComponentTypeCommands" where
\r
77 @JavaName createPropertyWithDefaults
\r
78 createUserComponentProperty :: UserComponent -> <WriteGraph> Resource
\r
81 renameUserComponentProperty :: Resource -> String -> <WriteGraph> ()
\r
83 @JavaName setDescription
\r
84 setUserComponentPropertyDescription :: Resource -> String -> <WriteGraph> ()
\r
86 @JavaName createMonitorPropertyWithDefaults
\r
87 createUserComponentMonitorProperty :: UserComponent -> <WriteGraph> Resource
\r
89 setMonitorExpression :: Resource -> Resource -> String -> <WriteGraph> ()
\r
91 @JavaName setDefaultValue
\r
92 setUserComponentPropertyDefaultValue :: Resource -> Resource -> String -> <WriteGraph> ()
\r
95 setUserComponentPropertyUnit :: Resource -> Resource -> String -> <WriteGraph> ()
\r
98 setUserComponentPropertyRange :: Resource -> Resource -> String -> <WriteGraph> ()
\r
101 setUserComponentPropertyLabel :: Resource -> String -> <WriteGraph> ()
\r
104 editType :: Resource -> Resource -> Boolean -> String -> <WriteGraph> ()
\r
106 setUserComponentPropertyRequiredType :: Resource -> Resource -> String -> <WriteGraph> ()
\r
107 setUserComponentPropertyRequiredType componentType property newValue = do
\r
108 editType componentType property True newValue
\r
110 importJava "org.simantics.modeling.UserComponentMigration" where
\r
111 migrateUserComponents :: UserComponent -> UserComponent -> [Component] -> <WriteGraph> ()
\r
115 @JavaName newAnnotationProperty
\r
116 createProperty :: UserComponent -> <WriteGraph> ComponentTypeProperty
\r
118 @JavaName advancedAnnotationProperty
\r
119 createAdvancedProperty :: UserComponent -> String -> String -> String -> String -> String -> String -> <WriteGraph> ComponentTypeProperty
\r
121 @JavaName removeAnnotationProperty
\r
122 removeProperty :: UserComponent -> ComponentTypeProperty -> <WriteGraph> ()
\r
126 `addUserComponentScript userComponent scriptType scriptCode` adds the script to the user component.
\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