import "Visualization/Graphviz/AbstractTypes" import "Visualization/Graphviz/Property" import "JavaBuiltin" as Java importJava "org.simantics.graphviz.Node" where data Node @JavaName "" newPrimitiveNode :: IGraph -> Node setLabel :: Node -> String -> () setShape :: Node -> String -> () @JavaName set setGenericProperty :: Node -> String -> String -> () instance Identifiable Node where identifiable = Java.unsafeCoerce applyNodeProperty :: Node -> Property -> () applyNodeProperty graph (Label str) = setLabel graph str applyNodeProperty graph (Shape str) = setShape graph str applyNodeProperty graph (GenericProperty property str) = setGenericProperty graph property str newNode :: IGraph a => a -> [Property] -> Node newNode graph properties = node where node = newPrimitiveNode (iGraph graph) for properties (applyNodeProperty node)