//!
//! \addtogroup linuxui Linux UI
//! @{
//! 

#ifndef _MODEL_SIDEBAR_H_
#define _MODEL_SIDEBAR_H_

#include "wb_config.h"
#include <sigc++/sigc++.h>
#include "MGGladeXML.h"

namespace wb
{
  class WBContextUI;
};

namespace bec
{
  class UIForm;
}

class CatalogTree;
class LayerTree;
class HistoryTree;
class UserTypesBox;
class PropertiesTree;
class DocumentationBox;
class NavigatorBox;
class InfoBox;

class ModelSidebar : public sigc::trackable
{
  wb::WBContextUI *_wbui;
  MGGladeXML *_ui;

  NavigatorBox                *_navigator_box;
  InfoBox                     *_info_box;
  CatalogTree                 *_catalog_tree;
  LayerTree                   *_layer_tree;
  HistoryTree                 *_history_tree;
  UserTypesBox                *_usertypes_box;
  DocumentationBox            *_documentation_box;
  PropertiesTree              *_properties_tree;
  
public:
  ModelSidebar(wb::WBContextUI *wb);
  virtual ~ModelSidebar();
  
  void refresh_all();
  void refresh_layers();
  void refresh_catalog();
  void refresh_properties();
  void refresh_documentation(bec::UIForm *form);
  void refresh_history();
  void refresh_navigator();
  void refresh_usertypes();

  void reset_layout();
  
  Gtk::Widget *get_base();
  std::string get_title();
  
  InfoBox *get_info_box() { return _info_box; }
};


#endif /* _MODEL_SIDEBAR_H_ */

//!                                                                                                                                     
//! @}                                                                                                                                  
//!
