Wt examples 3.3.12
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
TreeNode Class Reference

Example implementation of a single tree list node. More...

#include <TreeNode.h>

Inheritance diagram for TreeNode:
Inheritance graph
[legend]

Public Member Functions

 TreeNode (const std::string labelText, Wt::TextFormat labelFormat, IconPair *labelIcon, Wt::WContainerWidget *parent=0)
 Construct a tree node with the given label.
 
void addChildNode (TreeNode *node)
 Adds a child node.
 
void removeChildNode (TreeNode *node)
 Removes a child node.
 
const std::vector< TreeNode * > & childNodes () const
 Returns the list of children.
 
void collapse ()
 Collapses this node.
 
void expand ()
 Expands this node.
 
- Public Member Functions inherited from Wt::WCompositeWidget
 WCompositeWidget (WContainerWidget *parent=0)
 
 WCompositeWidget (WWidget *implementation, WContainerWidget *parent)
 
virtual void setObjectName (const std::string &name)
 
virtual std::string objectName () const
 
virtual const std::string id () const
 
virtual void setPositionScheme (PositionScheme scheme)
 
virtual PositionScheme positionScheme () const
 
virtual void setOffsets (const WLength &offset, WFlags< Side > sides=All)
 
virtual WLength offset (Side s) const
 
virtual void resize (const WLength &width, const WLength &height)
 
virtual WLength width () const
 
virtual WLength height () const
 
virtual void setMinimumSize (const WLength &width, const WLength &height)
 
virtual WLength minimumWidth () const
 
virtual WLength minimumHeight () const
 
virtual void setMaximumSize (const WLength &width, const WLength &height)
 
virtual WLength maximumWidth () const
 
virtual WLength maximumHeight () const
 
virtual void setLineHeight (const WLength &height)
 
virtual WLength lineHeight () const
 
virtual void setFloatSide (Side s)
 
virtual Side floatSide () const
 
virtual void setClearSides (WFlags< Side > sides)
 
virtual WFlags< SideclearSides () const
 
virtual void setMargin (const WLength &margin, WFlags< Side > sides=All)
 
virtual WLength margin (Side side) const
 
virtual void setHiddenKeepsGeometry (bool enabled)
 
virtual bool hiddenKeepsGeometry () const
 
virtual void setHidden (bool hidden, const WAnimation &animation=WAnimation())
 
virtual bool isHidden () const
 
virtual bool isVisible () const
 
virtual void setDisabled (bool disabled)
 
virtual bool isDisabled () const
 
virtual bool isEnabled () const
 
virtual void setPopup (bool popup)
 
virtual bool isPopup () const
 
virtual void setInline (bool isInline)
 
virtual bool isInline () const
 
virtual void setDecorationStyle (const WCssDecorationStyle &style)
 
virtual WCssDecorationStyledecorationStyle ()
 
virtual void setStyleClass (const WString &styleClass)
 
virtual WString styleClass () const
 
virtual void addStyleClass (const WString &styleClass, bool force=false)
 
virtual void removeStyleClass (const WString &styleClass, bool force=false)
 
virtual bool hasStyleClass (const WString &styleClass) const
 
virtual void setVerticalAlignment (AlignmentFlag alignment, const WLength &length=WLength::Auto)
 
virtual AlignmentFlag verticalAlignment () const
 
virtual WLength verticalAlignmentLength () const
 
virtual void setToolTip (const WString &text, TextFormat textFormat=PlainText)
 
virtual WString toolTip () const
 
virtual void setDeferredToolTip (bool enable, TextFormat textFormat=PlainText)
 
virtual void refresh ()
 
virtual void setAttributeValue (const std::string &name, const WString &value)
 
virtual WString attributeValue (const std::string &name) const
 
virtual void setJavaScriptMember (const std::string &name, const std::string &value)
 
virtual std::string javaScriptMember (const std::string &name) const
 
virtual void callJavaScriptMember (const std::string &name, const std::string &args)
 
virtual void load ()
 
virtual bool loaded () const
 
virtual void setCanReceiveFocus (bool enabled)
 
virtual bool canReceiveFocus () const
 
virtual void setFocus (bool focus)
 
virtual bool setFirstFocus ()
 
virtual bool hasFocus () const
 
virtual void setTabIndex (int index)
 
virtual int tabIndex () const
 
virtual void setId (const std::string &id)
 
virtual WWidgetfind (const std::string &name)
 
virtual WWidgetfindById (const std::string &name)
 
virtual void setSelectable (bool selectable)
 
virtual void doJavaScript (const std::string &js)
 
virtual void propagateSetEnabled (bool enabled)
 
virtual bool scrollVisibilityEnabled () const WT_CXX11ONLY(final override)
 
virtual void setScrollVisibilityEnabled (bool enabled) WT_CXX11ONLY(final override)
 
virtual int scrollVisibilityMargin () const WT_CXX11ONLY(final override)
 
virtual void setScrollVisibilityMargin (int margin) WT_CXX11ONLY(final override)
 
virtual Signal< bool > & scrollVisibilityChanged () WT_CXX11ONLY(final override)
 
virtual bool isScrollVisible () const WT_CXX11ONLY(final override)
 
virtual void setThemeStyleEnabled (bool enabled)
 
virtual bool isThemeStyleEnabled () const
 
virtual void removeChild (WObject *child)
 
void setFocus ()
 
virtual void setFocus (bool focus)=0
 
- Public Member Functions inherited from Wt::WWidget
virtual ~WWidget ()
 
WWidgetparent () const
 
void setWidth (const WLength &width)
 
void setHeight (const WLength &height)
 
virtual void positionAt (const WWidget *widget, Orientation orientation=Vertical)
 
virtual void toggleStyleClass (const WString &styleClass, bool add, bool force=false)
 
std::string jsRef () const
 
void setFocus ()
 
virtual void acceptDrops (const std::string &mimeType, const WString &hoverStyleClass=WString())
 
virtual void stopAcceptDrops (const std::string &mimeType)
 
virtual void htmlText (std::ostream &out)
 
bool isRendered () const
 
void hide ()
 
void animateHide (const WAnimation &animation)
 
void show ()
 
void animateShow (const WAnimation &animation)
 
void enable ()
 
void disable ()
 
bool layoutSizeAware () const
 
- Public Member Functions inherited from Wt::WObject
 WObject (WObject *parent=0)
 
virtual ~WObject ()
 
void resetLearnedSlots ()
 
void resetLearnedSlot (void(T::*method)())
 
WStatelessSlot * implementStateless (void(T::*method)())
 
WStatelessSlot * implementStateless (void(T::*method)(), void(T::*undoMethod)())
 
void isNotStateless ()
 
WStatelessSlot * implementJavaScript (void(T::*method)(), const std::string &jsCode)
 
void addChild (WObject *child)
 
const std::vector< WObject * > & children () const
 
WObjectparent () const
 

Private Types

enum  ImageIndex { Middle = 0 , Last = 1 }
 Two sets of images, for a normal node, and for the last node. More...
 

Private Member Functions

void adjustExpandIcon ()
 Adjust the expand icon.
 
bool isLastChildNode () const
 Returns if is the last child within its parent (is rendered differently)
 
void childNodesChanged ()
 Rerender when children have changed.
 
void undoCollapse ()
 Undo function for prelearning collapse()
 
void undoExpand ()
 Undo function for prelearning expand()
 

Private Attributes

std::vector< TreeNode * > childNodes_
 List of child nodes.
 
TreeNodeparentNode_
 The parent node.
 
Wt::WTablelayout_
 Layout (2x2 table).
 
IconPairexpandIcon_
 The icon for expanding or collapsing.
 
Wt::WImagenoExpandIcon_
 The single image shown instead of the expand/collapse icon when no children.
 
IconPairlabelIcon_
 The icon next to the label.
 
Wt::WTextlabelText_
 The label.
 
Wt::WTextchildCountLabel_
 The children count '(x)' for x children.
 
Wt::WContainerWidgetexpandedContent_
 The container in which the children are managed.
 
bool wasCollapsed_
 Was collapsed (for undo of prelearned collapse() and expand() slots.
 

Static Private Attributes

static std::string imageLine_ []
 
static std::string imagePlus_ []
 
static std::string imageMin_ []
 

Additional Inherited Members

- Public Types inherited from Wt::WObject
typedef void(WObject::* Method) ()
 
- Static Public Member Functions inherited from Wt::WWidget
static WString tr (const char *key)
 
- Protected Member Functions inherited from Wt::WCompositeWidget
virtual void enableAjax ()
 
void setImplementation (WWidget *widget)
 
WWidgetimplementation ()
 
virtual int boxPadding (Orientation orientation) const
 
virtual int boxBorder (Orientation orientation) const
 
virtual void render (WFlags< RenderFlag > flags)
 
- Protected Member Functions inherited from Wt::WWidget
void setLayoutSizeAware (bool sizeAware)
 
virtual void layoutSizeChanged (int width, int height)
 
 WWidget (WContainerWidget *parent=0)
 
virtual void dropEvent (WDropEvent dropEvent)
 
void scheduleRender (WFlags< RepaintFlag > flags=0)
 
virtual WStatelessSlot * getStateless (Method method)
 
- Static Protected Member Functions inherited from Wt::WObject
static WObjectsender ()
 

Detailed Description

Example implementation of a single tree list node.

This is an example of a basic treelist implementation. As of version 1.1.8, a more flexible treenode implementation is included as part of the library: WTreeNode.

A tree list is constructed by nesting TreeNode objects in a tree hierarchy.

A TreeNode has a label, and optionally a two-state label icon, which defines a different image depending on the state of the node (expanded or collapsed). When the node has any children, a child count is also indicated.

Next to the icons, two style classes determine the look of a TreeNode: the label has style "treenodelabel", and the child count has as style "treenodechildcount".

Use CSS nested selectors to apply different styles to different treenodes. For example, to style the treenode with style class "mynode":

The behaviour of the tree node is to collapse all children when the node is expanded (this is similar to how most tree node implementations work).

The widget uses a number of images which must be available in an "icons/" folder (see the Wt treelist examples).

This widget is part of the Wt treelist example.

Definition at line 55 of file TreeNode.h.

Member Enumeration Documentation

◆ ImageIndex

enum TreeNode::ImageIndex
private

Two sets of images, for a normal node, and for the last node.

Enumerator
Middle 
Last 

Definition at line 139 of file TreeNode.h.

139{ Middle = 0, Last = 1 };

Constructor & Destructor Documentation

◆ TreeNode()

TreeNode::TreeNode ( const std::string  labelText,
Wt::TextFormat  labelFormat,
IconPair labelIcon,
Wt::WContainerWidget parent = 0 
)

Construct a tree node with the given label.

The label is formatted in a WText with the given formatting. The labelIcon (if not 0) will appear next to the label and its state will reflect the expand/collapse state of the node.

Optionally, a userContent widget may be associated with the node. When expanded, this widget will be shown below the widget, but above any of the children nodes.

Definition at line 26 of file TreeNode.C.

31 parentNode_(0),
32 labelIcon_(labelIcon)
33{
34 // pre-learned stateless implementations ...
37
38 // ... or auto-learned stateless implementations
39 // which do not need undo functions
40 //implementStateless(&TreeNode::expand);
41 //implementStateless(&TreeNode::collapse);
42
44
48
51
52 labelText_ = new Wt::WText(labelText);
53 labelText_->setTextFormat(labelFormat);
54 labelText_->setStyleClass("treenodelabel");
57 childCountLabel_->setStyleClass("treenodechildcount");
58
61
62 if (labelIcon_) {
65 }
68
70
73
76} //
An icon pair (identical to WIconPair)
Definition IconPair.h:35
Wt::EventSignal< Wt::WMouseEvent > & icon2Clicked
Signal emitted when clicked while in state 1 (icon 2 is shown).
Definition IconPair.h:93
Wt::EventSignal< Wt::WMouseEvent > & icon1Clicked
Signal emitted when clicked while in state 0 (icon 1 is shown).
Definition IconPair.h:88
void undoCollapse()
Undo function for prelearning collapse()
Definition TreeNode.C:150
Wt::WContainerWidget * expandedContent_
The container in which the children are managed.
Definition TreeNode.h:118
void undoExpand()
Undo function for prelearning expand()
Definition TreeNode.C:161
Wt::WTable * layout_
Layout (2x2 table).
Definition TreeNode.h:100
static std::string imageLine_[]
Definition TreeNode.h:19
IconPair * expandIcon_
The icon for expanding or collapsing.
Definition TreeNode.h:103
Wt::WText * childCountLabel_
The children count '(x)' for x children.
Definition TreeNode.h:115
static std::string imagePlus_[]
Definition TreeNode.h:21
void collapse()
Collapses this node.
Definition TreeNode.C:124
Wt::WText * labelText_
The label.
Definition TreeNode.h:112
Wt::WImage * noExpandIcon_
The single image shown instead of the expand/collapse icon when no children.
Definition TreeNode.h:106
static std::string imageMin_[]
Definition TreeNode.h:23
void expand()
Expands this node.
Definition TreeNode.C:134
TreeNode * parentNode_
The parent node.
Definition TreeNode.h:97
IconPair * labelIcon_
The icon next to the label.
Definition TreeNode.h:109
Wt::Signals::connection connect(const F &function)
void setImplementation(WWidget *widget)
virtual void setVerticalAlignment(AlignmentFlag alignment, const WLength &length=WLength::Auto)
virtual void addWidget(WWidget *widget)
void setContentAlignment(WFlags< AlignmentFlag > contentAlignment)
WStatelessSlot * implementStateless(void(T::*method)())
WTableCell * elementAt(int row, int column)
bool setTextFormat(TextFormat format)
virtual void setMargin(const WLength &margin, WFlags< Side > sides=All)
virtual void setStyleClass(const WString &styleClass)
WWidget * parent() const
AlignMiddle
AlignTop

Member Function Documentation

◆ addChildNode()

void TreeNode::addChildNode ( TreeNode node)

Adds a child node.

Definition at line 86 of file TreeNode.C.

87{
88 childNodes_.push_back(node);
89 node->parentNode_ = this;
90
92
94}
std::vector< TreeNode * > childNodes_
List of child nodes.
Definition TreeNode.h:94
void childNodesChanged()
Rerender when children have changed.
Definition TreeNode.C:107

◆ adjustExpandIcon()

void TreeNode::adjustExpandIcon ( )
private

Adjust the expand icon.

Definition at line 178 of file TreeNode.C.

179{
181
182 if (expandIcon_->icon1()->imageLink().url() != imagePlus_[index])
184 if (expandIcon_->icon2()->imageLink().url() != imageMin_[index])
186 if (noExpandIcon_->imageLink().url() != imageLine_[index])
188
189 if (index == Last) {
190 layout_->elementAt(0, 0)
192 layout_->elementAt(1, 0)
194 } else {
195 layout_->elementAt(0, 0)
196 ->decorationStyle().setBackgroundImage("icons/line-trunk.gif",
198 layout_->elementAt(1, 0)
199 ->decorationStyle().setBackgroundImage("icons/line-trunk.gif",
201 } //
202
203 if (childNodes_.empty()) {
204 if (noExpandIcon_->isHidden()) {
206 expandIcon_->hide();
207 }
208 } else {
209 if (expandIcon_->isHidden()) {
211 expandIcon_->show();
212 }
213 }
214} //
Wt::WImage * icon1() const
Get the first icon image.
Definition IconPair.h:61
Wt::WImage * icon2() const
Get the second icon image.
Definition IconPair.h:65
bool isLastChildNode() const
Returns if is the last child within its parent (is rendered differently)
Definition TreeNode.C:78
ImageIndex
Two sets of images, for a normal node, and for the last node.
Definition TreeNode.h:139
virtual bool isHidden() const
void setBackgroundImage(const WLink &link, Repeat repeat=RepeatXY, WFlags< Side > sides=0)
void setImageLink(const WLink &link)
const WLink & imageLink() const
virtual WCssDecorationStyle & decorationStyle()
virtual bool isHidden() const

◆ childNodes()

const std::vector< TreeNode * > & TreeNode::childNodes ( ) const
inline

Returns the list of children.

Definition at line 82 of file TreeNode.h.

82{ return childNodes_; }

◆ childNodesChanged()

void TreeNode::childNodesChanged ( )
private

Rerender when children have changed.

Definition at line 107 of file TreeNode.C.

108{
109 for (unsigned i = 0; i < childNodes_.size(); ++i)
111
113
114 if (childNodes_.size())
116 ->setText("(" + boost::lexical_cast<std::string>(childNodes_.size())
117 + ")");
118 else
120
122} //
void adjustExpandIcon()
Adjust the expand icon.
Definition TreeNode.C:178
void resetLearnedSlots()
bool setText(const WString &text)

◆ collapse()

void TreeNode::collapse ( )

Collapses this node.

Definition at line 124 of file TreeNode.C.

125{
127
130 if (labelIcon_)
132} //
void setState(int num)
Set which icon should be visible.
Definition IconPair.C:41
bool wasCollapsed_
Was collapsed (for undo of prelearned collapse() and expand() slots.
Definition TreeNode.h:130

◆ expand()

void TreeNode::expand ( )

Expands this node.

Definition at line 134 of file TreeNode.C.

135{
137
140 if (labelIcon_)
142
143 /*
144 * collapse all children
145 */
146 for (unsigned i = 0; i < childNodes_.size(); ++i)
147 childNodes_[i]->collapse();
148} //

◆ isLastChildNode()

bool TreeNode::isLastChildNode ( ) const
private

Returns if is the last child within its parent (is rendered differently)

Definition at line 78 of file TreeNode.C.

79{
80 if (parentNode_) {
81 return parentNode_->childNodes_.back() == this;
82 } else
83 return true;
84}

◆ removeChildNode()

void TreeNode::removeChildNode ( TreeNode node)

Removes a child node.

Definition at line 96 of file TreeNode.C.

97{
98 childNodes_.erase(std::find(childNodes_.begin(), childNodes_.end(), node));
99
100 node->parentNode_ = 0;
101
103
105} //
virtual void removeWidget(WWidget *widget)

◆ undoCollapse()

void TreeNode::undoCollapse ( )
private

Undo function for prelearning collapse()

Definition at line 150 of file TreeNode.C.

151{
152 if (!wasCollapsed_) {
153 // re-expand
156 if (labelIcon_)
157 labelIcon_->setState(1);
158 }
159}

◆ undoExpand()

void TreeNode::undoExpand ( )
private

Undo function for prelearning expand()

Definition at line 161 of file TreeNode.C.

162{
163 if (wasCollapsed_) {
164 // re-collapse
167 if (labelIcon_)
169 }
170
171 /*
172 * undo collapse of children
173 */
174 for (unsigned i = 0; i < childNodes_.size(); ++i)
176} //

Member Data Documentation

◆ childCountLabel_

Wt::WText* TreeNode::childCountLabel_
private

The children count '(x)' for x children.

Definition at line 115 of file TreeNode.h.

◆ childNodes_

std::vector<TreeNode *> TreeNode::childNodes_
private

List of child nodes.

Definition at line 94 of file TreeNode.h.

◆ expandedContent_

Wt::WContainerWidget* TreeNode::expandedContent_
private

The container in which the children are managed.

Definition at line 118 of file TreeNode.h.

◆ expandIcon_

IconPair* TreeNode::expandIcon_
private

The icon for expanding or collapsing.

Definition at line 103 of file TreeNode.h.

◆ imageLine_

std::string TreeNode::imageLine_
staticprivate
Initial value:
= { "icons/line-middle.gif",
"icons/line-last.gif" }

Definition at line 19 of file TreeNode.h.

◆ imageMin_

std::string TreeNode::imageMin_
staticprivate
Initial value:
= { "icons/nav-minus-line-middle.gif",
"icons/nav-minus-line-last.gif" }

Definition at line 23 of file TreeNode.h.

◆ imagePlus_

std::string TreeNode::imagePlus_
staticprivate
Initial value:
= { "icons/nav-plus-line-middle.gif",
"icons/nav-plus-line-last.gif" }

Definition at line 21 of file TreeNode.h.

◆ labelIcon_

IconPair* TreeNode::labelIcon_
private

The icon next to the label.

Definition at line 109 of file TreeNode.h.

◆ labelText_

Wt::WText* TreeNode::labelText_
private

The label.

Definition at line 112 of file TreeNode.h.

◆ layout_

Wt::WTable* TreeNode::layout_
private

Layout (2x2 table).

Definition at line 100 of file TreeNode.h.

◆ noExpandIcon_

Wt::WImage* TreeNode::noExpandIcon_
private

The single image shown instead of the expand/collapse icon when no children.

Definition at line 106 of file TreeNode.h.

◆ parentNode_

TreeNode* TreeNode::parentNode_
private

The parent node.

Definition at line 97 of file TreeNode.h.

◆ wasCollapsed_

bool TreeNode::wasCollapsed_
private

Was collapsed (for undo of prelearned collapse() and expand() slots.

Definition at line 130 of file TreeNode.h.


The documentation for this class was generated from the following files:

Generated on Fri May 17 2024 for the C++ Web Toolkit (Wt) by doxygen 1.9.8