#ifndef CODE_CONTROLLER_H #define CODE_CONTROLLER_H #include #include #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/MessageChangeFileView.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 TokenLocation; class TokenLocationCollection; class TokenLocationFile; 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: 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(MessageChangeFileView* 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(); virtual void clear(); void showContents(MessageBase* message); std::vector getSnippetsForActiveTokenLocations( const TokenLocationCollection* collection, Id declarationId) const; std::vector getSnippetsForCollection( std::shared_ptr collection, bool addTokenLocations = false) const; std::vector getSnippetsForFile( std::shared_ptr file, bool addTokenLocations = false) const; std::shared_ptr buildMergerHierarchy( TokenLocation* location, std::shared_ptr context, SnippetMerger& fileScopedMerger, std::map>& mergers) const; std::shared_ptr getTokenLocationOfParentScope( const TokenLocation* location, std::shared_ptr context) const; std::vector getProjectDescription(TokenLocationFile* locationFile) const; void addModificationTimes(std::vector& snippets) const; StorageAccess* m_storageAccess; mutable std::shared_ptr m_collection; }; #endif // CODE_CONTROLLER_H