Ceylan::View Class Reference

View of the Model-View-Controller (MVC) design pattern. More...

#include <CeylanView.h>

Inheritance diagram for Ceylan::View:

Inheritance graph
[legend]
Collaboration diagram for Ceylan::View:

Collaboration graph
[legend]

List of all members.

Public Types

enum  TextOutputFormat { rawText, html }
 Defines what text output formats for TextDisplayable instances are available. More...

Public Member Functions

 View ()
 Constructs a view, not linked to any model.
 View (Model &model)
 Constructs a view linked to a model.
virtual ~View () throw ()
 Basic virtual destructor.
virtual void renderModel ()=0
 Requests that view to generate its interpretation of the model it is linked to.
virtual const std::string toString (Ceylan::VerbosityLevels level=Ceylan::high) const
 Returns a user-friendly description of the state of this object.
virtual void subscribeTo (EventSource &source)
 Subscribes this listener to the specified source, so that forthcoming events will be sent to it as well.
virtual void unsubscribeFrom (EventSource &source)
 Unsubscribes this listener from specified source, no forthcoming event will be received from it.
virtual void unsubscribeFromAllSources ()
 Unsubscribes this listener from all registered sources, no forthcoming event will be received from any.
virtual void forgetSource (EventSource &source)
 Forgets the specified source, but does not notify it that the unsubscription occured on the listener side.
virtual void beNotifiedOf (const Event &newEvent)=0
 Notifies this listener of a new event.
std::list< EventSource * > getSources () const
 Returns a shallow copy of the sources that listener is registered to.

Static Public Member Functions

static const std::string ToString (std::list< TextDisplayable * > displayables, Ceylan::VerbosityLevels level=Ceylan::high)
 Returns a user-friendly description of this list of pointers to text displayable instances.
static TextOutputFormat GetOutputFormat ()
 Returns the current overall text format to be used by TextDisplayable instances.
static void SetOutputFormat (TextOutputFormat newOutputFormat)
 Sets the current overall text format to be used by TextDisplayable instances.

Protected Member Functions

virtual ModelgetModel ()
 Returns the model presumably associated to this view.

Protected Attributes

std::list< EventSource * > _sources
 The event sources to which this listener is subscribed to.

Static Protected Attributes

static TextOutputFormat _OutputFormat = rawText
 The text format to be used currently by TextDisplayable instances.

Private Member Functions

 View (const View &source)
 Copy constructor made private to ensure that it will never be called.
Viewoperator= (const View &source)
 Assignment operator made private to ensure that it will never be called.


Detailed Description

View of the Model-View-Controller (MVC) design pattern.

The view of an object reflects the state of its model(s).

Such view is meant to communicate with its model(s) only by the means of exchanged events.

Note:
View is mainly a listener of events from its model, it can however listen to other objects as well, helping the view in its task.

The link between a model and its views could take into account various aspects: not all views are interested in each and every event.

Views might be shared between multiple models.

See also:
also the generic alternative MVC framework, for more lightweight and flexible exchanges: Ceylan::BaseView, Ceylan::BaseModel and Ceylan::BaseController.

Definition at line 72 of file CeylanView.h.


Member Enumeration Documentation

Defines what text output formats for TextDisplayable instances are available.

Enumerator:
rawText 
html 

Definition at line 124 of file CeylanTextDisplayable.h.


Constructor & Destructor Documentation

View::View (  ) 

Constructs a view, not linked to any model.

Definition at line 52 of file CeylanView.cc.

View::View ( Model model  )  [explicit]

Constructs a view linked to a model.

Note:
model cannot be 'const' since the underlying event listener not always deals with 'const' sources.

Definition at line 60 of file CeylanView.cc.

View::~View (  )  throw () [virtual]

Basic virtual destructor.

Definition at line 68 of file CeylanView.cc.

References toString().

Ceylan::View::View ( const View source  )  [private]

Copy constructor made private to ensure that it will never be called.

The compiler should complain whenever this undefined constructor is called, implicitly or not.


Member Function Documentation

virtual void Ceylan::EventListener::beNotifiedOf ( const Event newEvent  )  [pure virtual, inherited]

Notifies this listener of a new event.

Note:
The event is not by default checked to testify that this listener received an event from a source it is, at the time of this call, registered to.

This event remains property of the EventSource, which will take care of its life cycle.

Implemented in Ceylan::Locatable.

void EventListener::forgetSource ( EventSource source  )  [virtual, inherited]

Forgets the specified source, but does not notify it that the unsubscription occured on the listener side.

Therefore, if the source were to send new events, this listener would be notified, and may not be aware it received an event from a source it is not registered to any more.

See also:
beNotifiedOf
This method should mostly be used by event sources being deallocated, having realized that some listeners were still subscribed, and wanting nevertheless that the listeners remove these sources from their list. Otherwise, on the source side, should unsubscribeFrom be used instead, the listeners list would be modified in turn while iterating on it in the source destructor, which may cause a crash.

Alternatively, on these listener deallocations, if nothing was done in the case of a deallocated source still having at least one listener left, a call to the remove method of these source instances would be tempted, and may cause a crash since sources could be already deallocated.

Note:
This method is therefore a parachute which should not be used by the application. It is used too when the source has to manage the life cycle of its listeners, and has to deallocate them.
This listener can be registered multiple times to this source.

Exceptions:
EventException if listener was not already registered to the event source, and if debug mode for events is activated.

Definition at line 191 of file CeylanEventListener.cc.

References Ceylan::EventListener::_sources, generalUtils::false, Ceylan::EventSource::toString(), and generalUtils::true.

Model & View::getModel (  )  [protected, virtual]

Returns the model presumably associated to this view.

Note:
A view might not be associated with any model (yet) or it might be associated to more than one model.
Exceptions:
EventException if there is not exactly one model registered by this view.

Definition at line 97 of file CeylanView.cc.

References Ceylan::EventListener::_sources, and Ceylan::toString().

TextDisplayable::TextOutputFormat TextDisplayable::GetOutputFormat (  )  [static, inherited]

list< EventSource * > EventListener::getSources (  )  const [inherited]

Returns a shallow copy of the sources that listener is registered to.

Note:
The returned list contains the same pointer values as the internal one.

Definition at line 238 of file CeylanEventListener.cc.

References Ceylan::EventListener::_sources.

View& Ceylan::View::operator= ( const View source  )  [private]

Assignment operator made private to ensure that it will never be called.

The compiler should complain whenever this undefined operator is called, implicitly or not.

virtual void Ceylan::View::renderModel (  )  [pure virtual]

Requests that view to generate its interpretation of the model it is linked to.

void TextDisplayable::SetOutputFormat ( TextOutputFormat  newOutputFormat  )  [static, inherited]

Sets the current overall text format to be used by TextDisplayable instances.

Parameters:
newOutputFormat the new output format.

Definition at line 72 of file CeylanTextDisplayable.cc.

References Ceylan::TextDisplayable::_OutputFormat.

Referenced by Ceylan::Log::LogHolder::LogHolder().

void EventListener::subscribeTo ( EventSource source  )  [virtual, inherited]

Subscribes this listener to the specified source, so that forthcoming events will be sent to it as well.

Note:
A listener can be subscribed to multiple sources at once.
Exceptions:
EventException if listener is already registered to the specified event source.

Definition at line 87 of file CeylanEventListener.cc.

References Ceylan::EventListener::_sources, Ceylan::EventSource::add(), and Ceylan::EventSource::toString().

Referenced by Ceylan::Controller::Controller(), Ceylan::EventListener::EventListener(), Ceylan::Locatable::Locatable(), and Ceylan::Model::subscribeToController().

const std::string TextDisplayable::ToString ( std::list< TextDisplayable * >  displayables,
Ceylan::VerbosityLevels  level = Ceylan::high 
) [static, inherited]

Returns a user-friendly description of this list of pointers to text displayable instances.

Parameters:
displayables a list of pointers to TextDisplayable instances/
level the requested verbosity level.
Note:
Text output format is determined from overall settings.
See also:
toString, Ceylan::VerbosityLevels

Definition at line 45 of file CeylanTextDisplayable.cc.

References Ceylan::formatStringList().

const string View::toString ( Ceylan::VerbosityLevels  level = Ceylan::high  )  const [virtual]

Returns a user-friendly description of the state of this object.

Parameters:
level the requested verbosity level.
Note:
Text output format is determined from overall settings.
See also:
TextDisplayable

Reimplemented from Ceylan::CallerEventListener.

Definition at line 79 of file CeylanView.cc.

References Ceylan::EventListener::_sources.

Referenced by ~View().

void EventListener::unsubscribeFrom ( EventSource source  )  [virtual, inherited]

Unsubscribes this listener from specified source, no forthcoming event will be received from it.

This is the usual method to call when one wants that this listener to not listen any more to the specified source.

It is in fact implemented by notifying this source of the unsubscription of this listener, and by forgetting it.

Exceptions:
EventException if listener was not already registered to the event source.

Definition at line 113 of file CeylanEventListener.cc.

References Ceylan::EventListener::_sources, and Ceylan::EventSource::toString().

Referenced by Ceylan::Locatable::detachFromFather(), and Ceylan::Model::unsubscribeFromController().

void EventListener::unsubscribeFromAllSources (  )  [virtual, inherited]

Unsubscribes this listener from all registered sources, no forthcoming event will be received from any.

Definition at line 160 of file CeylanEventListener.cc.

References Ceylan::EventListener::_sources.

Referenced by Ceylan::Model::unsubscribeFromAllControllers(), and Ceylan::EventListener::~EventListener().


Member Data Documentation

TextDisplayable::TextOutputFormat TextDisplayable::_OutputFormat = rawText [static, protected, inherited]

The text format to be used currently by TextDisplayable instances.

Note:
Defaults to raw text.

Definition at line 158 of file CeylanTextDisplayable.h.

Referenced by Ceylan::TextDisplayable::GetOutputFormat(), and Ceylan::TextDisplayable::SetOutputFormat().

std::list<EventSource *> Ceylan::EventListener::_sources [protected, inherited]


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

Generated on Thu Jun 4 20:40:20 2009 for Ceylan by  doxygen 1.5.8