1
1
mirror of https://github.com/exyte/Macaw.git synced 2024-09-21 18:09:21 +03:00
Macaw/Source/views/NodesMap.swift

47 lines
803 B
Swift
Raw Normal View History

2016-08-24 13:25:14 +03:00
import UIKit
let nodesMap = NodesMap()
2016-08-25 12:10:27 +03:00
var parentsMap = [Node: Set<Node>]()
2016-08-24 13:25:14 +03:00
class NodesMap {
var map = [Node: MacawView]()
2016-08-25 12:10:27 +03:00
// MARK: - Macaw View
2016-08-24 13:25:14 +03:00
func add(node: Node, view: MacawView) {
map[node] = view
if let group = node as? Group {
group.contents.forEach { child in
self.add(child, view: view)
}
}
}
func getView(node: Node) -> MacawView? {
return map[node]
}
func remove(node: Node) {
map.removeValueForKey(node)
2016-08-25 12:10:27 +03:00
parentsMap.removeValueForKey(node)
}
// MARK: - Parents
func add(node: Node, parent: Node) {
if var nodesSet = parentsMap[node] {
nodesSet.insert(parent)
} else {
parentsMap[node] = Set([parent])
}
}
func parents(node: Node) -> [Node] {
guard let nodesSet = parentsMap[node] else {
return []
}
return Array(nodesSet)
2016-08-24 13:25:14 +03:00
}
}