![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtToolbarAssembler.h,v $ $Revision: 1.10 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00013 00014 #pragma once 00015 00016 #include <vrvCore/vrvCore.h> 00017 #include <vrvUtil/DtVirtualBaseClass.h> 00018 #include <vrvCore/DtToolbarConfiguration.h> 00019 #include <vrvCore/DtToolbarPath.h> 00020 00021 #include <stack> 00022 00023 namespace makVrv 00024 { 00025 class DtToolbarConfiguration; 00026 class DtToolbarPath; 00027 class DtDe; 00028 00031 class DT_DLL_VRVCORE DtToolbarAssembler : public DtVirtualBaseClass 00032 { 00033 public: 00034 00035 friend class DtToolbarAssemblerCreator; 00036 00038 static DtToolbarAssembler& instance(DtDe&); 00039 00041 virtual ~DtToolbarAssembler(); 00042 00044 virtual void assemble(const DtToolbarConfiguration& configuration); 00045 00048 virtual void updateToolbars( const DtToolbarConfiguration& configuration ); 00049 00050 protected: 00051 00052 // Data structures used to sort the toolbars when restoring the UI. Used std::map because 00053 // ordering is important here. 00054 typedef std::multimap<DtToolbarConfiguration::ToolbarLocation, DtToolbarPath> LocationPathMap; 00055 typedef std::map<int, DtToolbarPath> ToolbarPathsMap; 00056 typedef std::map<int, ToolbarPathsMap> ToolbarPathsMapMap; 00057 00058 DtToolbarAssembler(DtDe& de); 00059 00061 void assembleToolbarPath(const DtToolbarPath& toolbarPath, 00062 const DtToolbarConfiguration& configuration, DtToolbarConfiguration::ToolbarLocation location); 00063 00065 virtual void assembleRow(const DtToolbarPath& toolbarPath, DtToolbarConfiguration::ToolbarLocation location); 00066 00068 virtual void addToolbarBreak(DtToolbarConfiguration::ToolbarLocation loc); 00069 00071 virtual void assembleToolbar(const DtToolbarPath& toolbarPath, const DtToolbarConfiguration& configuration); 00072 00074 virtual void assembleToolbarItem(const DtToolbarPath& toolbarPath); 00075 00077 virtual void assembleToolbarMenuItem(const DtToolbarPath& toolbarPath); 00078 00080 virtual void assembleToolbarWidget(const DtToolbarPath& toolbarPath); 00081 00083 virtual void assembleToolbarMenu(const DtToolbarPath& toolbarPath); 00084 00086 virtual void assembleTopLeftToolbars(const LocationPathMap& locMap, DtToolbarConfiguration::ToolbarLocation loc, 00087 const DtToolbarConfiguration& configuration); 00088 00090 virtual void assembleBottomRightToolbars(const LocationPathMap&, DtToolbarConfiguration::ToolbarLocation, 00091 const DtToolbarConfiguration& ); 00092 00094 virtual void populateToobarPathsMap(const LocationPathMap& locMap, DtToolbarConfiguration::ToolbarLocation loc, 00095 const DtToolbarConfiguration& configuration, ToolbarPathsMapMap& tpMap); 00096 00098 virtual void updateToolbarPath( const DtToolbarPath& toolbarPath, const DtToolbarConfiguration& configuration); 00099 00102 virtual void updateToolbar(const DtToolbarPath& toolbarPath, const DtToolbarConfiguration& configuration); 00103 00104 protected: 00105 00106 std::stack<DtToolbarPath> myToolbarStack; 00107 DtDe& myDe; 00108 }; 00109 00112 class DT_DLL_VRVCORE DtToolbarAssemblerCreator : public DtVirtualBaseClass 00113 { 00114 public: 00115 00117 static DtToolbarAssemblerCreator& instance(DtDe& de); 00118 00120 virtual ~DtToolbarAssemblerCreator(); 00121 00123 virtual DtToolbarAssembler* create(DtDe& de); 00124 00125 protected: 00126 00128 DtToolbarAssemblerCreator(); 00129 }; 00130 }