#include "TestTreeTable.h" #include using namespace Wt; PanelTreeTable::PanelTreeTable (Wt::WContainerWidget *parent) :WContainerWidget(parent) { this->m_disabled = true; this->createUI(); } PanelTreeTable::~PanelTreeTable () { } void PanelTreeTable::createUI () { m_layout = new WGridLayout(); m_layout->setHorizontalSpacing(0); m_layout->setVerticalSpacing(0); m_layout->setContentsMargins(0, 0, 0, 0); this->m_treeTable = this->createTreeTable(); m_layout->addWidget(this->m_treeTable, 0, 0, AlignLeft | AlignTop); this->m_treeTable->disable(); this->m_treeView = this->createTreeView(); m_layout->addWidget(this->m_treeView, 0, 1, AlignLeft | AlignTop); this->m_treeView->disable(); WPushButton *button = new WPushButton("toggle enabled/diabled"); //button->resize(WLength::Auto, 28); button->clicked().connect(this, &PanelTreeTable::btnClick); m_layout->addWidget(button, 0, 2); this->setLayout(m_layout, AlignLeft); } WTreeTable * PanelTreeTable::createTreeTable () { WTreeTable *treeTable = new WTreeTable(); treeTable->tree()->setSelectionMode(SingleSelection); // default NoSelection treeTable->addColumn("", 10); // for edited * treeTable->addColumn("", 5); // for error and selected img treeTable->resize(250, WLength::Auto); Wt::WTreeTableNode *rootNode = new Wt::WTreeTableNode("root"); treeTable->setTreeRoot(rootNode, "TreeTable"); rootNode->setLoadPolicy(WTreeNode::PreLoading); createTableEntry("single entry", 0, rootNode); // first visible expandable node Wt::WTreeTableNode *entry = createTableEntry("expandable entry", 0, rootNode); createTableEntry("sub entry", 0, entry); entry = createTableEntry("another entry", 0, rootNode); createTableEntry("sub1", 0, entry); createTableEntry("sub2", 0, entry); createTableEntry("last one", 0, rootNode); // after populating, expand root and make it invisible rootNode->expand(); rootNode->setStyleClass("treeGreen"); rootNode->setNodeVisible(false); //rootNode->setChildrenDecorated(false); // to remove +/-/no-expand icons return treeTable; } WTreeTableNode * PanelTreeTable::createTableEntry (const WString &i_name, WIconPair *i_icon, WTreeTableNode *i_parent) { return new Wt::WTreeTableNode(i_name, i_icon, i_parent); } WTreeView * PanelTreeTable::createTreeView () { WTreeView *treeView = new WTreeView(); treeView->setSelectionMode(ExtendedSelection); treeView->resize(250, 150); treeView->setRowHeight(25); //treeView->setHeaderHeight(20); // TreeView Model! WStandardItemModel *model = new WStandardItemModel(0, 1); // Headers ... model->setHeaderData(0, Horizontal, WString::tr("Title")); std::vector list; WStandardItem *level1; model->appendRow(createViewEntry("View entry1")); list = createViewEntry("View entry2"); level1 = list[0]; model->appendRow(list); level1->appendRow(createViewEntry("View entry2.1")); level1->appendRow(createViewEntry("View entry2.2")); level1->appendRow(createViewEntry("View entry2.3")); model->appendRow(createViewEntry("View entry3")); treeView->setModel(model); return treeView; } std::vector PanelTreeTable::createViewEntry (const WString &name) { std::vector list; WStandardItem *result = new WStandardItem(name); list.push_back(result); return list; } void PanelTreeTable::btnClick () { if (this->m_disabled) { this->m_treeTable->enable(); this->m_treeView->enable(); } else { this->m_treeTable->disable(); this->m_treeView->disable(); } this->m_disabled = !this->m_disabled; }