ui: status showing data for active token ids

This commit is contained in:
Eberhard Graether
2015-05-12 16:21:02 +02:00
parent f58b6f50ed
commit 8e9b7ec7bc
6 changed files with 49 additions and 17 deletions
@@ -1,13 +1,16 @@
#include "component/controller/CodeController.h"
#include <memory>
#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<std::string>());
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<CodeView>();
}
std::vector<CodeView::CodeSnippetParams> CodeController::getSnippetsForActiveTokenIds(
const std::vector<Id>& ids, Id declarationId
std::vector<CodeView::CodeSnippetParams> CodeController::getSnippetsForActiveTokenLocations(
const TokenLocationCollection& collection, Id declarationId
) const {
TokenLocationCollection collection = m_storageAccess->getTokenLocationsForTokenIds(ids);
std::vector<CodeView::CodeSnippetParams> snippets;
collection.forEachTokenLocationFile(
@@ -193,7 +216,7 @@ std::vector<CodeView::CodeSnippetParams> CodeController::getSnippetsForFile(std:
std::shared_ptr<TokenLocationFile> 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);
}