Esempio n. 1
0
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);
}