@startuml
skinparam BackgroundColor F0F0F0
class gui::ItemNode
{
gui::Item*
int level
}
abstract class gui::ItemTree
{
bool hasNext()
gui::ItemNode getNext()
}
enum TraverseMode
{
PreOrder
PostOrder
}
class gui::DepthFirstItemTree
{
DepthFirstItemTree(gui::Item *root, TraverseMode mode)
bool hasNext()
gui::ItemNode getNext()
}
gui::ItemTree <|-- gui::DepthFirstItemTree
gui::DepthFirstItemTree o-- TraverseMode
@enduml