import "JavaBuiltin" as Java importJava "org.simantics.g3d.scenegraph.base.ParentNode" where data ParentNode @JavaName addNode addNode' :: ParentNode -> String -> Node -> () @JavaName removeNode removeNode' :: ParentNode -> String -> Node -> Boolean @JavaName deattachNode deattachNode' :: ParentNode -> String -> Node -> Boolean @JavaName removeNodes removeNodes' :: ParentNode -> String -> () @JavaName getNodes getNodes' :: ParentNode -> String -> [Node] @JavaName getNodes getAllNodes' :: ParentNode -> [Node] @JavaName remove remove' :: ParentNode -> () class ParentNodeClass a where asParentNode :: a -> ParentNode asParentNode = Java.unsafeCoerce addNode :: a -> String -> Node -> () addNode c = addNode' (asParentNode c) removeNode :: a -> String -> Node -> Boolean removeNode c = removeNode' (asParentNode c) deattachNode :: a -> String -> Node -> Boolean deattachNode c = deattachNode' (asParentNode c) removeNodes :: a -> String -> () removeNodes c = removeNodes' (asParentNode c) getNodes :: a -> String -> [Node] getNodes c = getNodes' (asParentNode c) remove :: a -> () remove c = remove' (asParentNode c) instance NodeClass ParentNode instance ParentNodeClass ParentNode where asParentNode = id importJava "org.simantics.g3d.scenegraph.base.INode" where data Node @JavaName getParent getParent' :: Node -> Maybe ParentNode @JavaName getRootNode getRootNode' :: Node -> Maybe ParentNode @JavaName deattach deattach' :: Node -> () class NodeClass a where asNode :: a -> Node asNode = Java.unsafeCoerce getParent :: a -> Maybe ParentNode getParent c = getParent' (asNode c) getRootNode :: a -> Maybe ParentNode getRootNode c = getRootNode' (asNode c) deattach :: a -> () deattach c = deattach' (asNode c) instance NodeClass Node where asNode = id