00001 #ifndef SCTDATADISPLAY_DISPLAYMANAGER_H
00002 #define SCTDATADISPLAY_DISPLAYMANAGER_H
00003
00004 #include <boost/shared_ptr.hpp>
00005 #include <map>
00006 #include <string>
00007 #include <vector>
00008
00009 class TDirectory;
00010
00011 using std::map;
00012 using std::vector;
00013 using std::string;
00014 using boost::shared_ptr;
00015
00016 namespace Sct {
00017 class Serializable;
00018 }
00019
00020 namespace SctDataDisplay {
00021
00022 class Displayer;
00023 class GenericDisplayer;
00024 class DisplayInfo;
00025 class DisplayData;
00026
00031 class DisplayManager {
00032 public:
00036 static DisplayManager& instance();
00037
00042 static bool addToMap(string className, shared_ptr<Displayer> displayer);
00043
00048 static shared_ptr<DisplayData> display(shared_ptr<const Sct::Serializable> ob, const DisplayInfo& info, std::ostream& os);
00049
00050
00056 static bool addGeneric(shared_ptr<GenericDisplayer> generic);
00057
00061 static bool batchMode();
00065 static void setBatchMode(bool b=true);
00066
00070 static bool rootMode();
00071
00075 static void setRootMode(bool b=true);
00076
00080 static shared_ptr<TDirectory> getTDirectory();
00084 static std::string getOutputDir();
00088 static void setOutputDir(const std::string& dirname);
00092 static void OutputCanvases();
00093 private:
00094 DisplayManager();
00095 map<string, shared_ptr<Displayer> > displayerMap;
00096 vector<shared_ptr<GenericDisplayer> > genericList;
00097 bool m_batchMode;
00098 bool m_rootMode;
00099 std::string m_outputdir;
00100 static shared_ptr<TDirectory> s_file;
00101 };
00102
00103 }
00104
00105 #endif //SCTDATADISPLAY_DISPLAYMANAGER_H