data_view_mediator.h

Go to the documentation of this file.
00001 //--------------------------------------------------
00012 //--------------------------------------------------
00013 
00014 #ifndef IMEDGINEDATA_VIEW_MEDIATOR_H
00015 #define IMEDGINEDATA_VIEW_MEDIATOR_H
00016 
00017 #include "../global/global_definitions.h"
00018 #include "../datasets/dataset.h"
00019 #include "../viewer/view.h"
00020 #include "../viewer/view_factory.h"
00021 #include "../exceptions/null_pointer_exception.h"
00022 #include "../exceptions/invalid_cast_exception.h"
00023 
00024 #include <map>
00025 
00026 namespace imedgine 
00027 { 
00028   //--------------------------------------------------
00044   //--------------------------------------------------
00045 
00046   class DataViewMediator
00047   {
00048   public:
00049     
00050     //--------------------------------------------------
00053 
00054     DataViewMediator();
00055   
00056     //--------------------------------------------------
00059 
00060     ~DataViewMediator();
00061     
00062     //--------------------------------------------------
00069 
00070     view_pointer_type getViewOfDataset(dataset_pointer_type dataset,
00071                                        view_type type) 
00072         throw(NullPointerException);
00073     
00074     //--------------------------------------------------
00079     
00080     void getDependentViewIDsOfDataset(
00081         dataset_key_type dataset_key, view_id_container_type& target_container) const
00082         throw(NullPointerException);
00083     
00084     //--------------------------------------------------
00089     
00090     bool deleteView(unsigned int view_id)
00091         throw(NullPointerException);  
00092     
00093     //--------------------------------------------------
00099     
00100     bool removeDataset(
00101         dataset_key_type dataset_key);  
00102      
00103     //--------------------------------------------------
00112    
00113     void lockDatasets(dataset_key_type dataset_left, 
00114                       dataset_key_type dataset_right);
00115     
00116     //--------------------------------------------------
00124    
00125     void unlockDatasets(dataset_key_type dataset_left, 
00126                       dataset_key_type dataset_right);
00127     
00128     //--------------------------------------------------
00133     
00134     bool areDatasetsLocked(dataset_key_type dataset_left, 
00135                            dataset_key_type dataset_right);
00136     
00137     
00138     //--------------------------------------------------
00143 
00144     void updateDependentViews(dataset_key_type dataset)
00145         throw(NullPointerException);
00146     
00147     //--------------------------------------------------
00152 
00153     void updateDataChanged(dataset_key_type dataset,
00154                            dataset_attribute_type changed_attribute)
00155         throw(NullPointerException, InvalidCastException);
00156     
00157   protected:
00158       
00159     //--------------------------------------------------
00164 
00165     void registerViewOfDataset(dataset_pointer_type dataset, 
00166                                view_pointer_type view)
00167         throw(NullPointerException);
00168     
00169     //--------------------------------------------------
00175     void registerHybridViewOfDatasets(
00176         dataset_pointer_type first_dataset, dataset_pointer_type second_dataset,
00177     view_pointer_type hybrid_view);       
00178     
00179     typedef std::multimap<dataset_key_type, view_pointer_type>
00180         dataset_to_view_mmap_type;
00181     typedef dataset_to_view_mmap_type::iterator 
00182         dataset_to_view_mmap_iterator_type;
00183     typedef dataset_to_view_mmap_type::const_iterator 
00184         dataset_to_view_mmap_const_iterator_type;
00185     typedef std::multimap<dataset_key_type, dataset_key_type>
00186         dataset_to_datset_mmap_type;
00187     typedef dataset_to_datset_mmap_type::iterator 
00188         dataset_to_dataset_mmap_iterator_type;
00189         
00190     dataset_to_view_mmap_type dataset_to_view_mmap_;
00191     
00192     dataset_to_datset_mmap_type dataset_to_dataset_mmap_;
00193     
00194     ViewFactory view_factory_;  
00195         
00196   private:
00197     
00198     DataViewMediator(DataViewMediator const&) 
00199     {}
00200     
00201     DataViewMediator& operator = (DataViewMediator const&) 
00202     {
00203       return(*this);
00204     }      
00205   };
00206 }
00207 
00208 #endif

Generated on Sun Aug 13 18:19:38 2006 for iMEDgine by  doxygen 1.4.6