Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

XmlController.h

Go to the documentation of this file.
00001 /* -*- mode: c++ -*- */
00002 
00014 #ifndef _XmlController_H_
00015 #define _XmlController_H_
00016 
00017 #include "pattern/libhippo.h"
00018 
00019 
00020 #include <list>
00021 #include <map>
00022 #include <string>
00023 #include <vector>
00024 
00025 class DataRep;
00026 class DataRepXML;
00027 class DataSource;
00028 class FontBase;
00029 class HiNTupleXML;
00030 class PlotterBase;
00031 class TupleCut;
00032 class TupleCutXML;
00033 class ViewBase;
00034 class ViewBaseXML;
00035 class ViewFactory;
00036 class XmlDocument;
00037 class XmlElement;
00038 
00052 class MDL_HIPPOPLOT_API XmlController
00053 {
00054 
00055 public:
00056 
00058   enum Status { Success, OpenError, ParseError, NTupleError };
00059 
00060 private:
00061 
00063   ViewFactory * m_view_factory;
00064 
00066   XmlController ( const XmlController & );
00067   std::list < std::string > m_missing_tuples;
00068 
00070   void fillNTupleMap ();
00071 
00074   void fillTupleCutMap ( const std::vector < const ViewBase * > & views );
00075 
00079   void saveToDocument ( const std::vector < const ViewBase * > & selviews );
00080 
00082   const std::list < ViewBase * > &
00083   getFromDocument ( ViewFactory * facotry,
00084                     const std::vector < const ViewBase * > & views );
00085 
00087   XmlDocument * m_pasteboard;
00088 
00090   XmlDocument * m_selectboard;
00091 
00093   std::list < ViewBase * > m_views;
00094 
00096   std::map < const DataSource *, XmlElement * > m_data;
00097 
00100   std::map < const void *, int > m_addr_map;
00101 
00104   typedef std::map < const void *, int >::iterator AddrMapIterator_t;
00105 
00108   int m_id;
00109 
00111   std::map < int, const DataSource * > m_tuple_map;
00112 
00114   std::map < int, const TupleCut * > m_tuple_cut_map;
00115 
00117   std::map < int, DataRep * > m_datarep_map;
00118 
00120   std::map < int, PlotterBase * > m_plotter_map;
00121 
00123   ViewBaseXML * m_view;
00124 
00126   DataRepXML * m_datarep_xml;
00127 
00129   HiNTupleXML * m_ntuple;
00130 
00132   TupleCutXML * m_tuple_cut_xml;
00133 
00135   XmlElement * m_element;
00136 
00140   virtual void newDocument ( const std::string & name ) = 0;
00141 
00148   virtual Status openDocument ( const std::string & filename );
00149 
00153   virtual Status openNTuples ( );
00154 
00156   void getDataReps ();
00157 
00159   void getTupleCuts ();
00160 
00162   virtual void getViews ( );
00163 
00165   void getViews ( const XmlElement * root );
00166 
00167 protected:
00168 
00171   XmlController();
00172 
00173 public:
00174 
00176   virtual ~XmlController();
00177 
00181   static XmlDocument * m_xml_doc;
00182 
00185   virtual void createDocument ( const std::string & doc_name );
00186 
00188   virtual bool fileExists ( const std::string & filename ) const = 0;
00189 
00193   Status openFile ( const std::string & filename );
00194 
00197   virtual const std::list < ViewBase * > & getViews ( ViewFactory * );
00198 
00201   bool areDataSourcesSaved ( const std::vector < const ViewBase * > & views );
00202 
00206   virtual bool 
00207   serializeViews ( const std::vector < const ViewBase * > & views );
00208 
00210   bool isPasteboardEmpty ();
00211 
00217   const std::list < ViewBase * > & 
00218   getFromPasteboard ( ViewFactory * factory,
00219                       const std::vector < const ViewBase * > & views );
00220 
00223   const std::list < ViewBase * > & 
00224   getFromSelectionCopy ( ViewFactory * factory,
00225                          const std::vector < const ViewBase * > & views );
00226 
00231   void saveToPasteboard ( const std::vector < const ViewBase * > & );
00232 
00237   void saveToSelectionCopy ( const std::vector < const ViewBase * > & views );
00238 
00241   Status saveToFile ( const std::vector < const ViewBase * > & views,
00242                       const std::string & filename );
00243 
00244 
00246   PlotterBase *  createDisplay ( );
00247 
00249   void addViews ( const std::vector < const ViewBase * > & views );
00250 
00254   ViewBase * createView ( PlotterBase * );
00255 
00258   FontBase * createFont () const;
00259 
00262   virtual XmlElement * addDataSource ( const DataSource * ntuple );
00263 
00265   const DataSource * getDataSource ( int ref_id );
00266 
00269   const TupleCut * getTupleCut ( int ref_id );
00270 
00272   DataRep * getDataRep ( int ref );
00273 
00277   PlotterBase * getPlotter ( int ref );
00278 
00281   void registerPlotter ( int id, PlotterBase * plotter );
00282 
00285   int getId ( const void * address );
00286 
00287 };
00288 
00289 #endif // _XmlController_H_

Generated for HippoDraw-1.14.8.5 by doxygen 1.4.3