void WTreeNode::create() { setImplementation(layout_ = new WTable()); setStyleClass("Wt-tree"); layout_->setSelectable(false); if (WApplication::instance()->environment().agentIsOpera()) layout_->setAttributeValue("style", "table-layout: auto"); implementStateless(&WTreeNode::doExpand, &WTreeNode::undoDoExpand); implementStateless(&WTreeNode::doCollapse, &WTreeNode::undoDoCollapse); WApplication *app = WApplication::instance(); expandIcon_ = new WIconPair(WApplication::resourcesUrl() + "themes/" + app->cssTheme() + "/" + imagePlus_, WApplication::resourcesUrl() + "themes/" + app->cssTheme() + "/" + imageMin_); noExpandIcon_ = new WText(); noExpandIcon_->setStyleClass("Wt-noexpand"); layout_->rowAt(1)->hide(); if (labelText_) // "treenodelabel" is for backwards compatibility with Wt < 3.1.1 labelText_->setStyleClass("Wt-label treenodelabel"); childCountLabel_ = 0; layout_->elementAt(0, 0)->setStyleClass("Wt-trunk"); layout_->elementAt(0, 0)->addWidget(noExpandIcon_); if (labelIcon_) { layout_->elementAt(0, 1)->addWidget(labelIcon_); labelIcon_->setVerticalAlignment(AlignMiddle); } if (labelText_) layout_->elementAt(0, 1)->addWidget(labelText_); layout_->elementAt(0, 0)->setContentAlignment(AlignLeft | AlignTop); layout_->elementAt(0, 1)->setContentAlignment(AlignLeft | AlignMiddle); layout_->rowAt(0)->setStyleClass("Wt-node"); childrenLoaded_ = false; setLoadPolicy(LazyLoading); }