![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtMenuAssembler.h,v $ $Revision: 1.10 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtMenuAssembler_H_ 00014 #define DtMenuAssembler_H_ 00015 00016 #include <vrvCore/vrvCore.h> 00017 #include <vrvUtil/DtVirtualBaseClass.h> 00018 #include <vrvCore/DtMenuPath.h> 00019 00020 #include <stack> 00021 00022 namespace makVrv 00023 { 00024 class DtMenuConfiguration; 00025 class DtMenuPath; 00026 class DtDe; 00027 00030 class DT_DLL_VRVCORE DtMenuAssembler : public DtVirtualBaseClass 00031 { 00032 public: 00033 00034 friend class DtMenuAssemblerCreator; 00035 00037 static DtMenuAssembler& instance(DtDe&); 00038 00040 virtual ~DtMenuAssembler(); 00041 00043 virtual void assemble(const DtMenuConfiguration& configuration); 00044 00045 protected: 00046 00047 DtMenuAssembler(DtDe& de); 00048 00050 void assembleMenuPath(const DtMenuPath& menuPath, 00051 const DtMenuConfiguration& configuration); 00052 00054 virtual void assembleMenu(const DtMenuPath& menuPath); 00055 00057 virtual void assembleMenuItem(const DtMenuPath& menuPath); 00058 00059 protected: 00060 00061 std::stack<DtMenuPath> myMenuStack; 00062 00063 DtDe& myDe; 00064 00065 }; 00066 00071 class DT_DLL_VRVCORE DtMenuAssemblerCreator : public DtVirtualBaseClass 00072 { 00073 public: 00074 00076 static DtMenuAssemblerCreator& instance(DtDe& de); 00077 00079 static void registerInstance(DtDe& de, DtMenuAssemblerCreator* creator); 00080 00082 virtual ~DtMenuAssemblerCreator(); 00083 00085 virtual DtMenuAssembler* create(DtDe& de); 00086 00087 protected: 00088 00090 DtMenuAssemblerCreator(); 00091 }; 00092 } 00093 00094 #endif 00095