bool WTreeNode::triggerSlot(WObject *sender, const WSlot_ *slot, void **args) { if (slot == slots_ + 0) { sender_ = sender; collapse(); return true; } if (slot == slots_ + 1) { sender_ = sender; expand(); return true; } if (slot == slots_ + 2) { sender_ = sender; select(); return true; } if (slot == slots_ + 3) { sender_ = sender; OnTreeNodeCheck(); return true; } if (slot == slots_ + 4) { sender_ = sender; OnRightClick(); return true; } return WCompositeWidget::triggerSlot(sender, slot, args); }
WTreeNode::WTreeNode(const std::string labelText, const std::string nodeId, bool bCheck, bool bDevice,int nType, WText::Formatting labelFormatting, WStateIcon *labelIcon, WWidget *userContent, WContainerWidget *parent) : parentNode_(0), labelIcon_(labelIcon), userContent_(userContent), wasSelected_(false) { bMExpand =false; bFirst = true; bFirstadjust=true; bFistundoCollapse =true; m_CheckBoxTreeView =NULL; treeCheckBox_ =NULL; nTreeType= nType; setImplementation(layout_ = new WTable(parent)); layout_->setCellSpaceing(0); layout_->setCellSpaceing(0); layout_->setStyleClass("widthauto"); strId = nodeId; expandIcon_ = new WStateIcon(imageFold_[OPEN], imageFold_[CLOSE ]); expandedContent_ = new WContainerWidget(); if (userContent) expandedContent_->addWidget(userContent); labelText_ = new WText(labelText); labelText_->setStyleClass("hand"); labelText_->setFormatting(labelFormatting); connect(labelText_ , SIGNAL(clicked()), this ,SLOT(OnRightClick())); noExpandIcon_ = new WImage("../Images/9bland.gif"); WText *blank = new WText(" "); //layout_->elementAt(0, 1)->setStyleClass("tree_text"); layout_->elementAt(0, 0)->setStyleClass("padding_right_2"); layout_->elementAt(0, 0)->addWidget(expandIcon_); layout_->elementAt(0, 0)->addWidget(noExpandIcon_); layout_->elementAt(0, 0)->addWidget(blank); if( (false==bDevice)&&( Tree_DEVICE==nTreeType))//ajax --monitor { noExpandIcon_->hide(); }else { expandIcon_->hide(); } treeCheckBox_ = new WCheckBox(labelText); treeCheckBox_->setStyleClass("smallcheckbox"); if(nTreeType==Tree_MONITOR) { connect(treeCheckBox_,SIGNAL(clicked()),this,SLOT(OnTreeNodeCheck())); layout_->elementAt(0, 1)->setStyleClass("tree_text"); } if (labelIcon_) { if(bCheck) { layout_->elementAt(0, 0)->addWidget(treeCheckBox_); } layout_->elementAt(0, 1)->addWidget(labelIcon_); labelIcon_->setVerticalAlignment(AlignMiddle); } layout_->elementAt(0, 1)->addWidget(labelText_); layout_->elementAt(1, 1)->addWidget(expandedContent_); layout_->elementAt(0, 0)->setVerticalAlignment(AlignMiddle); layout_->elementAt(0, 0)->setContentAlignment(AlignMiddle); layout_->elementAt(0, 1)->setContentAlignment(AlignMiddle); layout_->elementAt(0, 1)->setVerticalAlignment(AlignMiddle); //add end connect(expandIcon_->icon1(), SIGNAL(clicked()), this, SLOT(expand()), STATIC); connect(expandIcon_->icon2(), SIGNAL(clicked()), this, SLOT(collapse()), STATIC); }