logic: Undoing file minimize, snippets and maximize actions
* MessageChangeFileView as single message for changing file state in the code view * Show code view after updates at once
This commit is contained in:
@@ -78,18 +78,14 @@ void CodeController::handleMessage(MessageActivateAll* message)
|
||||
snippets.insert(snippets.begin(), statsSnippet);
|
||||
|
||||
CodeView* view = getView();
|
||||
view->setActiveTokenIds(std::vector<Id>());
|
||||
view->setErrorMessages(errorMessages);
|
||||
view->showCodeSnippets(snippets);
|
||||
view->showCodeSnippets(snippets, std::vector<Id>());
|
||||
|
||||
showContents(message);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
if (message->keepContent() && message->isIgnorable())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<Id> activeTokenIds = message->tokenIds;
|
||||
Id declarationId = 0; // 0 means that no token is found.
|
||||
|
||||
@@ -100,42 +96,100 @@ void CodeController::handleMessage(MessageActivateTokens* message)
|
||||
// TODO: what about declarationId if more than 1 token is active? FIX THIS!
|
||||
|
||||
CodeView* view = getView();
|
||||
view->setActiveTokenIds(activeTokenIds);
|
||||
view->setErrorMessages(std::vector<std::string>());
|
||||
|
||||
if (message->isEdge)
|
||||
{
|
||||
view->showFirstActiveSnippet();
|
||||
view->showFirstActiveSnippet(activeTokenIds);
|
||||
}
|
||||
|
||||
if (message->keepContent())
|
||||
{
|
||||
view->showActiveTokenIds();
|
||||
return;
|
||||
view->showActiveTokenIds(activeTokenIds);
|
||||
}
|
||||
|
||||
std::shared_ptr<TokenLocationCollection> collection = m_storageAccess->getTokenLocationsForTokenIds(activeTokenIds);
|
||||
view->showCodeSnippets(getSnippetsForActiveTokenLocations(collection.get(), declarationId));
|
||||
|
||||
if (!message->isFromSystem)
|
||||
else
|
||||
{
|
||||
size_t fileCount = collection->getTokenLocationFileCount();
|
||||
size_t referenceCount = collection->getTokenLocationCount();
|
||||
std::shared_ptr<TokenLocationCollection> collection = m_storageAccess->getTokenLocationsForTokenIds(activeTokenIds);
|
||||
view->showCodeSnippets(getSnippetsForActiveTokenLocations(collection.get(), declarationId), activeTokenIds);
|
||||
|
||||
std::stringstream ss;
|
||||
ss << message->tokenIds.size() << ' ';
|
||||
ss << (message->tokenIds.size() == 1 ? "result" : "results");
|
||||
|
||||
if (fileCount > 0)
|
||||
if (!message->isFromSystem)
|
||||
{
|
||||
ss << " with " << referenceCount << ' ';
|
||||
ss << (referenceCount == 1 ? "reference" : "references");
|
||||
ss << " in " << fileCount << ' ';
|
||||
ss << (fileCount == 1 ? "file" : "files");
|
||||
}
|
||||
size_t fileCount = collection->getTokenLocationFileCount();
|
||||
size_t referenceCount = collection->getTokenLocationCount();
|
||||
|
||||
MessageStatus(ss.str()).dispatch();
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
showContents(message);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageChangeFileView* message)
|
||||
{
|
||||
CodeView* view = getView();
|
||||
|
||||
switch (message->state)
|
||||
{
|
||||
case MessageChangeFileView::FILE_MINIMIZED:
|
||||
view->setFileState(message->filePath, CodeView::FILE_MINIMIZED);
|
||||
break;
|
||||
|
||||
case MessageChangeFileView::FILE_SNIPPETS:
|
||||
if (message->needsData)
|
||||
{
|
||||
view->addCodeSnippets(getSnippetsForActiveTokenLocationsInFile(message->locationFile), false);
|
||||
}
|
||||
view->setFileState(message->filePath, CodeView::FILE_SNIPPETS);
|
||||
break;
|
||||
|
||||
case MessageChangeFileView::FILE_MAXIMIZED:
|
||||
if (message->needsData)
|
||||
{
|
||||
CodeView::CodeSnippetParams params;
|
||||
params.startLineNumber = 0;
|
||||
params.endLineNumber = 0;
|
||||
|
||||
std::shared_ptr<TextAccess> textAccess = m_storageAccess->getFileContent(message->filePath);
|
||||
params.code = textAccess->getText();
|
||||
|
||||
params.modificationTime = m_storageAccess->getFileModificationTime(message->filePath);
|
||||
|
||||
if (message->showErrors)
|
||||
{
|
||||
std::vector<std::string> errorMessages;
|
||||
TokenLocationCollection errorCollection = m_storageAccess->getErrorTokenLocations(&errorMessages);
|
||||
params.locationFile = std::make_shared<TokenLocationFile>(*errorCollection.findTokenLocationFileByPath(message->filePath));
|
||||
params.locationFile->isWholeCopy = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
params.locationFile = m_storageAccess->getTokenLocationsForFile(message->filePath.str());
|
||||
}
|
||||
|
||||
getView()->showCodeFile(params);
|
||||
}
|
||||
view->setFileState(message->filePath, CodeView::FILE_MAXIMIZED);
|
||||
break;
|
||||
}
|
||||
|
||||
showContents(message);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageFlushUpdates* message)
|
||||
{
|
||||
showContents(message);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageFocusIn* message)
|
||||
@@ -154,35 +208,10 @@ void CodeController::handleMessage(MessageShowErrors* message)
|
||||
std::vector<CodeView::CodeSnippetParams> snippets = getSnippetsForErrorLocations(&errorMessages);
|
||||
|
||||
CodeView* view = getView();
|
||||
view->setActiveTokenIds(std::vector<Id>());
|
||||
view->setErrorMessages(errorMessages);
|
||||
view->showCodeSnippets(snippets);
|
||||
}
|
||||
view->showCodeSnippets(snippets, std::vector<Id>());
|
||||
|
||||
void CodeController::handleMessage(MessageShowFile* message)
|
||||
{
|
||||
CodeView::CodeSnippetParams params;
|
||||
params.startLineNumber = 0;
|
||||
params.endLineNumber = 0;
|
||||
|
||||
std::shared_ptr<TextAccess> textAccess = m_storageAccess->getFileContent(message->filePath);
|
||||
params.code = textAccess->getText();
|
||||
|
||||
params.modificationTime = m_storageAccess->getFileModificationTime(message->filePath);
|
||||
|
||||
if (message->showErrors)
|
||||
{
|
||||
std::vector<std::string> errorMessages;
|
||||
TokenLocationCollection errorCollection = m_storageAccess->getErrorTokenLocations(&errorMessages);
|
||||
params.locationFile = std::make_shared<TokenLocationFile>(*errorCollection.findTokenLocationFileByPath(message->filePath));
|
||||
params.locationFile->isWholeCopy = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
params.locationFile = m_storageAccess->getTokenLocationsForFile(message->filePath.str());
|
||||
}
|
||||
|
||||
getView()->showCodeFile(params);
|
||||
showContents(message);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageShowScope* message)
|
||||
@@ -206,11 +235,8 @@ void CodeController::handleMessage(MessageShowScope* message)
|
||||
}
|
||||
|
||||
getView()->addCodeSnippets(snippets, true);
|
||||
}
|
||||
|
||||
void CodeController::handleMessage(MessageShowSnippets* message)
|
||||
{
|
||||
getView()->addCodeSnippets(getSnippetsForActiveTokenLocationsInFile(message->locationFile), false);
|
||||
showContents(message);
|
||||
}
|
||||
|
||||
CodeView* CodeController::getView()
|
||||
@@ -218,6 +244,14 @@ CodeView* CodeController::getView()
|
||||
return Controller::getView<CodeView>();
|
||||
}
|
||||
|
||||
void CodeController::showContents(MessageBase* message)
|
||||
{
|
||||
if (message->undoRedoType == MessageBase::UNDOTYPE_NORMAL)
|
||||
{
|
||||
getView()->showContents();
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<CodeView::CodeSnippetParams> CodeController::getSnippetsForActiveTokenLocations(
|
||||
const TokenLocationCollection* collection, Id declarationId
|
||||
) const {
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/MessageActivateAll.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/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageShowFile.h"
|
||||
#include "utility/messaging/type/MessageShowScope.h"
|
||||
#include "utility/messaging/type/MessageShowSnippets.h"
|
||||
#include "utility/types.h"
|
||||
|
||||
#include "component/controller/helper/SnippetMerger.h"
|
||||
@@ -27,12 +27,12 @@ class CodeController
|
||||
: public Controller
|
||||
, public MessageListener<MessageActivateAll>
|
||||
, public MessageListener<MessageActivateTokens>
|
||||
, public MessageListener<MessageChangeFileView>
|
||||
, public MessageListener<MessageFlushUpdates>
|
||||
, public MessageListener<MessageFocusIn>
|
||||
, public MessageListener<MessageFocusOut>
|
||||
, public MessageListener<MessageShowErrors>
|
||||
, public MessageListener<MessageShowFile>
|
||||
, public MessageListener<MessageShowScope>
|
||||
, public MessageListener<MessageShowSnippets>
|
||||
{
|
||||
public:
|
||||
CodeController(StorageAccess* storageAccess);
|
||||
@@ -43,14 +43,15 @@ private:
|
||||
|
||||
virtual void handleMessage(MessageActivateAll* 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(MessageShowErrors* message);
|
||||
virtual void handleMessage(MessageShowFile* message);
|
||||
virtual void handleMessage(MessageShowScope* message);
|
||||
virtual void handleMessage(MessageShowSnippets* message);
|
||||
|
||||
CodeView* getView();
|
||||
void showContents(MessageBase* message);
|
||||
|
||||
std::vector<CodeView::CodeSnippetParams> getSnippetsForActiveTokenLocations(
|
||||
const TokenLocationCollection* collection, Id declarationId) const;
|
||||
|
||||
@@ -79,6 +79,12 @@ void UndoRedoController::handleMessage(MessageActivateTokenIds* message)
|
||||
processCommand(command);
|
||||
}
|
||||
|
||||
void UndoRedoController::handleMessage(MessageChangeFileView* message)
|
||||
{
|
||||
Command command(std::make_shared<MessageChangeFileView>(*message), 1);
|
||||
processCommand(command);
|
||||
}
|
||||
|
||||
void UndoRedoController::handleMessage(MessageDeactivateEdge* message)
|
||||
{
|
||||
MessageBase* m = nullptr;
|
||||
@@ -205,18 +211,6 @@ void UndoRedoController::handleMessage(MessageShowErrors* message)
|
||||
processCommand(command);
|
||||
}
|
||||
|
||||
void UndoRedoController::handleMessage(MessageShowFile* message)
|
||||
{
|
||||
if (m_lastCommand.message && m_lastCommand.message->getType() == message->getType() &&
|
||||
static_cast<MessageShowFile*>(m_lastCommand.message.get())->filePath == message->filePath)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Command command(std::make_shared<MessageShowFile>(*message), 1);
|
||||
processCommand(command);
|
||||
}
|
||||
|
||||
void UndoRedoController::handleMessage(MessageShowScope* message)
|
||||
{
|
||||
Command command(std::make_shared<MessageShowScope>(*message), 1);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "utility/messaging/type/MessageActivateFile.h"
|
||||
#include "utility/messaging/type/MessageActivateNodes.h"
|
||||
#include "utility/messaging/type/MessageActivateTokenIds.h"
|
||||
#include "utility/messaging/type/MessageChangeFileView.h"
|
||||
#include "utility/messaging/type/MessageDeactivateEdge.h"
|
||||
#include "utility/messaging/type/MessageGraphNodeBundleSplit.h"
|
||||
#include "utility/messaging/type/MessageGraphNodeExpand.h"
|
||||
@@ -18,7 +19,6 @@
|
||||
#include "utility/messaging/type/MessageRefresh.h"
|
||||
#include "utility/messaging/type/MessageSearch.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageShowFile.h"
|
||||
#include "utility/messaging/type/MessageShowScope.h"
|
||||
#include "utility/messaging/type/MessageUndo.h"
|
||||
|
||||
@@ -34,6 +34,7 @@ class UndoRedoController
|
||||
, public MessageListener<MessageActivateFile>
|
||||
, public MessageListener<MessageActivateNodes>
|
||||
, public MessageListener<MessageActivateTokenIds>
|
||||
, public MessageListener<MessageChangeFileView>
|
||||
, public MessageListener<MessageDeactivateEdge>
|
||||
, public MessageListener<MessageGraphNodeBundleSplit>
|
||||
, public MessageListener<MessageGraphNodeExpand>
|
||||
@@ -43,7 +44,6 @@ class UndoRedoController
|
||||
, public MessageListener<MessageRefresh>
|
||||
, public MessageListener<MessageSearch>
|
||||
, public MessageListener<MessageShowErrors>
|
||||
, public MessageListener<MessageShowFile>
|
||||
, public MessageListener<MessageShowScope>
|
||||
, public MessageListener<MessageUndo>
|
||||
{
|
||||
@@ -66,6 +66,7 @@ private:
|
||||
virtual void handleMessage(MessageActivateFile* message);
|
||||
virtual void handleMessage(MessageActivateNodes* message);
|
||||
virtual void handleMessage(MessageActivateTokenIds* message);
|
||||
virtual void handleMessage(MessageChangeFileView* message);
|
||||
virtual void handleMessage(MessageDeactivateEdge* message);
|
||||
virtual void handleMessage(MessageGraphNodeBundleSplit* message);
|
||||
virtual void handleMessage(MessageGraphNodeExpand* message);
|
||||
@@ -75,7 +76,6 @@ private:
|
||||
virtual void handleMessage(MessageRefresh* message);
|
||||
virtual void handleMessage(MessageSearch* message);
|
||||
virtual void handleMessage(MessageShowErrors* message);
|
||||
virtual void handleMessage(MessageShowFile* message);
|
||||
virtual void handleMessage(MessageShowScope* message);
|
||||
virtual void handleMessage(MessageUndo* message);
|
||||
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
#include "utility/messaging/type/MessageActivateNodes.h"
|
||||
#include "utility/messaging/type/MessageActivateTokenIds.h"
|
||||
#include "utility/messaging/type/MessageActivateTokens.h"
|
||||
#include "utility/messaging/type/MessageChangeFileView.h"
|
||||
#include "utility/messaging/type/MessageSearch.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageShowFile.h"
|
||||
|
||||
ActivationTranslator::ActivationTranslator(StorageAccess* storageAccess)
|
||||
: m_storageAccess(storageAccess)
|
||||
@@ -58,7 +58,13 @@ std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(co
|
||||
|
||||
if (fileId == 0)
|
||||
{
|
||||
MessageShowFile msg(message->filePath, true);
|
||||
MessageChangeFileView msg(
|
||||
message->filePath,
|
||||
MessageChangeFileView::FILE_MAXIMIZED,
|
||||
true,
|
||||
false,
|
||||
nullptr
|
||||
);
|
||||
msg.undoRedoType = message->undoRedoType;
|
||||
msg.setKeepContent(message->keepContent());
|
||||
msg.dispatch();
|
||||
|
||||
Reference in New Issue
Block a user