OptionList Class Reference
[Composer example]

A list of options, separated by '|'. More...

#include <OptionList.h>

Inherits Wt::WContainerWidget.

List of all members.

Public Slots

void update ()
 Update the stateless implementations after an Option has been hidden or shown.

Public Member Functions

 OptionList (WContainerWidget *parent=0)
 Create an OptionList.
void add (Option *option)
 Add an Option to the list.

Private Member Functions

void optionVisibilityChanged (Option *opt, bool hidden)
 An option changed visibility: possibly update the separators inbetween.

Private Attributes

std::vector< Option * > options_
 The list of options.
OptionoptionNeedReset_
 The option that needs its stateless code updated.

Friends

class Option

Detailed Description

A list of options, separated by '|'.

This widget is part of the Wt composer example.

An OptionList displays a list of Option widgets, which are separated by a '|' separator.

For example, Foo | Bar | Huu

When Options are hidden, the separators are adjusted so that there is no separator after the last visible option. However, this requires a call of update() each time an option is hidden or shown. This is because the removing of separators is optimized in stateless implementations, and thus in client-side JavaScript code. Since the behaviour is not entirely stateless, the update() method resets stateless implementations if necessary.

See also:
OptionList

Definition at line 40 of file OptionList.h.


Constructor & Destructor Documentation

OptionList::OptionList ( WContainerWidget parent = 0  ) 

Create an OptionList.

Definition at line 11 of file OptionList.C.

00012   : WContainerWidget(parent),
00013     optionNeedReset_(0)
00014 {
00015   resize(WLength::Auto, WLength(2.5, WLength::FontEx));
00016 }


Member Function Documentation

void OptionList::add ( Option option  ) 

Add an Option to the list.

Definition at line 18 of file OptionList.C.

00019 {
00020   addWidget(option);
00021   option->setOptionList(this);
00022 
00023   if (!options_.empty()) {
00024     options_.back()->addSeparator();
00025   }
00026 
00027   options_.push_back(option);
00028 }

void OptionList::optionVisibilityChanged ( Option opt,
bool  hidden 
) [private]

An option changed visibility: possibly update the separators inbetween.

Definition at line 38 of file OptionList.C.

00039 {
00040   /*
00041    * Check if it was the last visible option, in that case the second last
00042    * visible option loses its separator.
00043    */
00044   for (unsigned i = options_.size() - 1; i > 0; --i) {
00045     if (options_[i] == opt) {
00046       for (int j = i - 1; j >= 0; --j) {
00047         if (!options_[j]->isHidden()) {
00048           if (hidden)
00049             options_[j]->hideSeparator();
00050           else
00051             options_[j]->showSeparator();
00052           break;
00053         }
00054       }
00055       break;
00056     } else
00057       if (!options_[i]->isHidden())
00058         break;
00059   }
00060 
00061   /*
00062    * The Option to the right needs to relearn its stateless
00063    * slot code for hide() and show().
00064    */
00065   for (unsigned i = 0; i < options_.size(); ++i) {
00066     if (options_[i] == opt) {
00067       for (unsigned j = i + 1; j < options_.size(); ++j) {
00068         if (!options_[j]->isHidden()) {
00069           optionNeedReset_ = options_[j];
00070           break;
00071         }
00072       }
00073 
00074       break;
00075     }
00076   }
00077 }

void OptionList::update (  )  [slot]

Update the stateless implementations after an Option has been hidden or shown.

Definition at line 30 of file OptionList.C.

00031 {
00032   if (optionNeedReset_ != 0)
00033     optionNeedReset_->resetLearnedSlots();
00034 
00035   optionNeedReset_ = 0;
00036 }


Friends And Related Function Documentation

friend class Option [friend]

Definition at line 67 of file OptionList.h.


Member Data Documentation

The option that needs its stateless code updated.

Definition at line 62 of file OptionList.h.

std::vector<Option *> OptionList::options_ [private]

The list of options.

Definition at line 59 of file OptionList.h.


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

Generated on Thu May 13 05:16:01 2010 for Wt by doxygen 1.6.3