#ifndef CODE_CONTROLLER_H #define CODE_CONTROLLER_H #include #include #include "utility/file/FilePath.h" #include "utility/messaging/MessageListener.h" #include "utility/messaging/type/MessageActivateAll.h" #include "utility/messaging/type/MessageActivateLocalSymbols.h" #include "utility/messaging/type/MessageActivateTokens.h" #include "utility/messaging/type/MessageActivateTrailEdge.h" #include "utility/messaging/type/MessageChangeFileView.h" #include "utility/messaging/type/MessageClearErrorCount.h" #include "utility/messaging/type/MessageDeactivateEdge.h" #include "utility/messaging/type/MessageFlushUpdates.h" #include "utility/messaging/type/MessageFocusIn.h" #include "utility/messaging/type/MessageFocusOut.h" #include "utility/messaging/type/MessageScrollCode.h" #include "utility/messaging/type/MessageScrollToLine.h" #include "utility/messaging/type/MessageSearchFullText.h" #include "utility/messaging/type/MessageShowErrors.h" #include "utility/messaging/type/MessageShowScope.h" #include "utility/types.h" #include "component/controller/helper/SnippetMerger.h" #include "component/controller/Controller.h" #include "component/view/CodeView.h" class StorageAccess; class SourceLocation; class SourceLocationCollection; class SourceLocationFile; class CodeController : public Controller , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener , public MessageListener { public: CodeController(StorageAccess* storageAccess); ~CodeController(); private: static const uint s_lineRadius; virtual void handleMessage(MessageActivateAll* message); virtual void handleMessage(MessageActivateLocalSymbols* message); virtual void handleMessage(MessageActivateTokens* message); virtual void handleMessage(MessageActivateTrailEdge* message); virtual void handleMessage(MessageChangeFileView* message); virtual void handleMessage(MessageClearErrorCount* message); virtual void handleMessage(MessageDeactivateEdge* message); virtual void handleMessage(MessageFlushUpdates* message); virtual void handleMessage(MessageFocusIn* message); virtual void handleMessage(MessageFocusOut* message); virtual void handleMessage(MessageScrollCode* message); virtual void handleMessage(MessageScrollToLine* message); virtual void handleMessage(MessageSearchFullText* message); virtual void handleMessage(MessageShowErrors* message); virtual void handleMessage(MessageShowScope* message); CodeView* getView() const; virtual void clear(); void expandVisibleSnippets(std::vector* snippets, bool addSourceLocations) const; std::vector getSnippetsForFileWithState( const FilePath& filePath, CodeView::FileState state, bool addSourceLocations) const; std::vector getSnippetsForActiveSourceLocations( const SourceLocationCollection* collection, Id declarationId) const; std::vector getSnippetsForCollection( std::shared_ptr collection, bool addSourceLocations = false) const; std::vector getSnippetsForFile( std::shared_ptr file, bool addSourceLocations = false) const; std::shared_ptr buildMergerHierarchy( SourceLocation* location, std::shared_ptr context, SnippetMerger& fileScopedMerger, std::map>& mergers) const; std::shared_ptr getSourceLocationOfParentScope( const SourceLocation* location, std::shared_ptr context) const; std::vector getProjectDescription(SourceLocationFile* locationFile) const; void addModificationTimes(std::vector& snippets) const; void addActiveSourceLocations(std::shared_ptr locationFile) const; StorageAccess* m_storageAccess; mutable std::shared_ptr m_collection; }; #endif // CODE_CONTROLLER_H