#ifndef COMPONENT_FACTORY_H #define COMPONENT_FACTORY_H #include #include "data/access/StorageAccess.h" class Component; class ViewFactory; class ViewLayout; class ComponentFactory { public: static std::shared_ptr create(ViewFactory* viewFactory, StorageAccess* storageAccess); ~ComponentFactory(); ViewFactory* getViewFactory() const; std::shared_ptr createCodeComponent(ViewLayout* viewLayout); std::shared_ptr createFeatureComponent(); std::shared_ptr createGraphComponent(ViewLayout* viewLayout); std::shared_ptr createRefreshComponent(ViewLayout* viewLayout); std::shared_ptr createSearchComponent(ViewLayout* viewLayout); std::shared_ptr createStatusBarComponent(ViewLayout* viewLayout); std::shared_ptr createUndoRedoComponent(ViewLayout* viewLayout); private: ComponentFactory(); ComponentFactory(const ComponentFactory&); ViewFactory* m_viewFactory; StorageAccess* m_storageAccess; }; #endif // COMPONENT_FACTORY_H