diff --git a/src/lib/Application.cpp b/src/lib/Application.cpp index 2dddfdae..5a021ceb 100644 --- a/src/lib/Application.cpp +++ b/src/lib/Application.cpp @@ -106,7 +106,9 @@ void Application::handleMessage(MessageFinishedParsing* message) if (mainId) { - MessageActivateTokens(mainId).dispatch(); + MessageActivateTokens message(mainId); + message.isFromSystem = true; + message.dispatch(); } } diff --git a/src/lib/component/controller/CodeController.cpp b/src/lib/component/controller/CodeController.cpp index 0e5e50d2..bef599e5 100644 --- a/src/lib/component/controller/CodeController.cpp +++ b/src/lib/component/controller/CodeController.cpp @@ -1,13 +1,16 @@ #include "component/controller/CodeController.h" #include + +#include "utility/messaging/type/MessageStatus.h" +#include "utility/text/TextAccess.h" + #include "data/access/StorageAccess.h" #include "data/location/TokenLocation.h" #include "data/location/TokenLocationCollection.h" #include "data/location/TokenLocationFile.h" #include "data/location/TokenLocationLine.h" #include "settings/ApplicationSettings.h" -#include "utility/text/TextAccess.h" CodeController::CodeController(StorageAccess* storageAccess) : m_storageAccess(storageAccess) @@ -43,7 +46,29 @@ void CodeController::handleMessage(MessageActivateTokens* message) CodeView* view = getView(); view->setActiveTokenIds(activeTokenIds); view->setErrorMessages(std::vector()); - view->showCodeSnippets(getSnippetsForActiveTokenIds(activeTokenIds, declarationId)); + + TokenLocationCollection collection = m_storageAccess->getTokenLocationsForTokenIds(activeTokenIds); + view->showCodeSnippets(getSnippetsForActiveTokenLocations(collection, declarationId)); + + if (!message->isFromSystem) + { + size_t fileCount = collection.getTokenLocationFileCount(); + size_t referenceCount = collection.getTokenLocationCount(); + + std::stringstream ss; + ss << message->tokenIds.size() << ' '; + ss << (message->tokenIds.size() == 1 ? "result" : "results"); + + if (fileCount > 0) + { + ss << " with " << referenceCount << ' '; + ss << (referenceCount == 1 ? "reference" : "references"); + ss << " in " << fileCount << ' '; + ss << (fileCount == 1 ? "file" : "files"); + } + + MessageStatus(ss.str()).dispatch(); + } } void CodeController::handleMessage(MessageFinishedParsing* message) @@ -105,11 +130,9 @@ CodeView* CodeController::getView() return Controller::getView(); } -std::vector CodeController::getSnippetsForActiveTokenIds( - const std::vector& ids, Id declarationId +std::vector CodeController::getSnippetsForActiveTokenLocations( + const TokenLocationCollection& collection, Id declarationId ) const { - TokenLocationCollection collection = m_storageAccess->getTokenLocationsForTokenIds(ids); - std::vector snippets; collection.forEachTokenLocationFile( @@ -193,7 +216,7 @@ std::vector CodeController::getSnippetsForFile(std: std::shared_ptr tempFile = m_storageAccess->getTokenLocationsForLinesInFile(file->getFilePath().str(), params.startLineNumber, params.endLineNumber); TokenLocationLine* firstUsedLine = nullptr; - for (size_t i = params.startLineNumber; i <= params.endLineNumber, firstUsedLine == nullptr; i++) + for (size_t i = params.startLineNumber; i <= params.endLineNumber && firstUsedLine == nullptr; i++) { firstUsedLine = tempFile->findTokenLocationLineByNumber(i); } diff --git a/src/lib/component/controller/CodeController.h b/src/lib/component/controller/CodeController.h index 77582ced..faaaf50c 100644 --- a/src/lib/component/controller/CodeController.h +++ b/src/lib/component/controller/CodeController.h @@ -1,12 +1,9 @@ #ifndef CODE_CONTROLLER_H #define CODE_CONTROLLER_H -#include #include +#include -#include "component/controller/helper/SnippetMerger.h" -#include "component/controller/Controller.h" -#include "component/view/CodeView.h" #include "utility/messaging/MessageListener.h" #include "utility/messaging/type/MessageActivateTokenLocation.h" #include "utility/messaging/type/MessageActivateTokens.h" @@ -17,7 +14,12 @@ #include "utility/messaging/type/MessageShowFile.h" #include "utility/types.h" +#include "component/controller/helper/SnippetMerger.h" +#include "component/controller/Controller.h" +#include "component/view/CodeView.h" + class StorageAccess; +class TokenLocationCollection; class TokenLocationFile; class CodeController @@ -47,8 +49,8 @@ private: CodeView* getView(); - std::vector getSnippetsForActiveTokenIds( - const std::vector& ids, Id declarationId) const; + std::vector getSnippetsForActiveTokenLocations( + const TokenLocationCollection& collection, Id declarationId) const; std::vector getSnippetsForFile(std::shared_ptr file) const; std::shared_ptr buildMergerHierarchy( TokenLocation* location, SnippetMerger& fileScopedMerger, std::map>& mergers) const; diff --git a/src/lib/component/controller/GraphController.cpp b/src/lib/component/controller/GraphController.cpp index 540e06ac..1ef1fd09 100644 --- a/src/lib/component/controller/GraphController.cpp +++ b/src/lib/component/controller/GraphController.cpp @@ -51,8 +51,6 @@ void GraphController::handleMessage(MessageFinishedParsing* message) getView()->clear(); } -#include - void GraphController::handleMessage(MessageFocusIn* message) { getView()->focusToken(message->tokenId); diff --git a/src/lib/component/controller/SearchController.cpp b/src/lib/component/controller/SearchController.cpp index 28a1eafb..97ec03e8 100644 --- a/src/lib/component/controller/SearchController.cpp +++ b/src/lib/component/controller/SearchController.cpp @@ -56,7 +56,11 @@ void SearchController::handleMessage(MessageSearch* message) std::vector ids = m_storageAccess->getTokenIdsForQuery(query); if (!ids.size()) { - ids.push_back(m_storageAccess->getIdForNodeWithName(query)); + Id id = m_storageAccess->getIdForNodeWithName(query); + if (id > 0) + { + ids.push_back(id); + } } MessageActivateTokens(ids).dispatch(); diff --git a/src/lib/utility/messaging/type/MessageActivateTokens.h b/src/lib/utility/messaging/type/MessageActivateTokens.h index 53b222b3..923669a0 100644 --- a/src/lib/utility/messaging/type/MessageActivateTokens.h +++ b/src/lib/utility/messaging/type/MessageActivateTokens.h @@ -11,6 +11,7 @@ public: : tokenIds(tokenIds) , isEdge(false) , isAggregation(false) + , isFromSystem(false) { } @@ -18,6 +19,7 @@ public: : tokenIds(1, tokenId) , isEdge(false) , isAggregation(false) + , isFromSystem(false) { } @@ -30,6 +32,7 @@ public: bool isEdge; bool isAggregation; + bool isFromSystem; }; #endif // MESSAGE_ACTIVATE_TOKENS_H