logic: Removed ActivationTranslator and show old token names in search field
This commit is contained in:
@@ -2,8 +2,6 @@
|
||||
add_files(
|
||||
LIB_FILES
|
||||
|
||||
component/controller/helper/ActivationTranslator.cpp
|
||||
component/controller/helper/ActivationTranslator.h
|
||||
component/controller/helper/BucketGrid.cpp
|
||||
component/controller/helper/BucketGrid.h
|
||||
component/controller/helper/DummyEdge.h
|
||||
|
||||
@@ -3,13 +3,15 @@
|
||||
#include "data/access/StorageAccess.h"
|
||||
#include "settings/ApplicationSettings.h"
|
||||
|
||||
#include "utility/messaging/type/MessageActivateAll.h"
|
||||
#include "utility/messaging/type/MessageActivateTokens.h"
|
||||
#include "utility/messaging/type/MessageChangeFileView.h"
|
||||
#include "utility/messaging/type/MessageRefresh.h"
|
||||
#include "utility/messaging/type/MessageShowErrors.h"
|
||||
#include "utility/messaging/type/MessageStatus.h"
|
||||
|
||||
FeatureController::FeatureController(StorageAccess* storageAccess)
|
||||
: m_storageAccess(storageAccess)
|
||||
, m_activationTranslator(storageAccess)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -19,47 +21,124 @@ FeatureController::~FeatureController()
|
||||
|
||||
void FeatureController::handleMessage(MessageActivateEdge* message)
|
||||
{
|
||||
std::shared_ptr<MessageActivateTokens> m = m_activationTranslator.translateMessage(message);
|
||||
if (m)
|
||||
if (message->isAggregation())
|
||||
{
|
||||
m->dispatchImmediately();
|
||||
// TODO: validate aggregationIds
|
||||
MessageActivateTokens m(message, message->aggregationIds);
|
||||
m.setKeepContent(false);
|
||||
m.isAggregation = true;
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
else
|
||||
{
|
||||
Id edgeId = message->tokenId;
|
||||
|
||||
if (message->isReplayed())
|
||||
{
|
||||
edgeId = m_storageAccess->getIdForEdge(message->type, message->fromNameHierarchy, message->toNameHierarchy);
|
||||
}
|
||||
|
||||
std::vector<Id> ids;
|
||||
if (edgeId)
|
||||
{
|
||||
ids.push_back(edgeId);
|
||||
}
|
||||
|
||||
MessageActivateTokens m(message, ids);
|
||||
m.isEdge = true;
|
||||
m.unknownNames = std::vector<std::string>(1, message->getFullName());
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
}
|
||||
|
||||
void FeatureController::handleMessage(MessageActivateFile* message)
|
||||
{
|
||||
std::shared_ptr<MessageActivateTokens> m = m_activationTranslator.translateMessage(message);
|
||||
if (m)
|
||||
Id fileId = m_storageAccess->getTokenIdForFileNode(message->filePath);
|
||||
|
||||
if (fileId)
|
||||
{
|
||||
m->dispatchImmediately();
|
||||
MessageActivateTokens(message, std::vector<Id>(1, fileId)).dispatchImmediately();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageActivateTokens m(message, std::vector<Id>());
|
||||
m.unknownNames.push_back(message->filePath.fileName());
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
}
|
||||
|
||||
void FeatureController::handleMessage(MessageActivateNodes* message)
|
||||
{
|
||||
std::shared_ptr<MessageActivateTokens> m = m_activationTranslator.translateMessage(message);
|
||||
if (m)
|
||||
std::vector<Id> nodeIds;
|
||||
if (!message->isReplayed())
|
||||
{
|
||||
m->dispatchImmediately();
|
||||
for (const MessageActivateNodes::ActiveNode& node : message->nodes)
|
||||
{
|
||||
nodeIds.push_back(node.nodeId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (const MessageActivateNodes::ActiveNode& node : message->nodes)
|
||||
{
|
||||
Id nodeId = m_storageAccess->getIdForNodeWithNameHierarchy(node.nameHierarchy);
|
||||
if (nodeId > 0)
|
||||
{
|
||||
nodeIds.push_back(nodeId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MessageActivateTokens m(message, nodeIds);
|
||||
for (const MessageActivateNodes::ActiveNode& node : message->nodes)
|
||||
{
|
||||
m.unknownNames.push_back(node.nameHierarchy.getQualifiedName());
|
||||
}
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
|
||||
void FeatureController::handleMessage(MessageSearch* message)
|
||||
{
|
||||
std::shared_ptr<MessageActivateTokens> m = m_activationTranslator.translateMessage(message);
|
||||
if (m)
|
||||
const std::vector<SearchMatch>& matches = message->getMatches();
|
||||
|
||||
for (const SearchMatch& match : matches)
|
||||
{
|
||||
m->dispatchImmediately();
|
||||
if (match.searchType == SearchMatch::SEARCH_COMMAND &&
|
||||
match.getFullName() == SearchMatch::getCommandName(SearchMatch::COMMAND_ALL))
|
||||
{
|
||||
MessageActivateAll msg;
|
||||
msg.setIsReplayed(message->isReplayed());
|
||||
msg.dispatchImmediately();
|
||||
return;
|
||||
}
|
||||
else if (match.searchType == SearchMatch::SEARCH_COMMAND &&
|
||||
match.getFullName() == SearchMatch::getCommandName(SearchMatch::COMMAND_ERROR))
|
||||
{
|
||||
MessageShowErrors msg(ErrorCountInfo(-1, 0));
|
||||
msg.setIsReplayed(message->isReplayed());
|
||||
msg.dispatchImmediately();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<Id> tokenIds = m_storageAccess->getTokenIdsForMatches(matches);
|
||||
|
||||
MessageActivateTokens m(message, tokenIds);
|
||||
for (const SearchMatch& match : matches)
|
||||
{
|
||||
m.unknownNames.push_back(match.text);
|
||||
}
|
||||
if (!message->isReplayed())
|
||||
{
|
||||
m.isFromSearch = true;
|
||||
}
|
||||
m.dispatchImmediately();
|
||||
}
|
||||
|
||||
void FeatureController::handleMessage(MessageActivateTokenIds* message)
|
||||
{
|
||||
std::shared_ptr<MessageActivateTokens> m = m_activationTranslator.translateMessage(message);
|
||||
if (m)
|
||||
{
|
||||
m->dispatchImmediately();
|
||||
}
|
||||
MessageActivateTokens(message, message->tokenIds).dispatchImmediately();
|
||||
}
|
||||
|
||||
void FeatureController::handleMessage(MessageActivateTokenLocations* message)
|
||||
@@ -119,8 +198,7 @@ void FeatureController::handleMessage(MessageZoom* message)
|
||||
return;
|
||||
}
|
||||
|
||||
// settings->setFontSize(std::max(settings->getFontSize() + (message->zoomIn ? 1 : -1), 5));
|
||||
settings->setFontSize((settings->getFontSize() + (message->zoomIn ? 1 : -1)));
|
||||
settings->setFontSize(fontSize + (message->zoomIn ? 1 : -1));
|
||||
settings->save();
|
||||
|
||||
fontSize = settings->getFontSize();
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "component/controller/helper/ActivationTranslator.h"
|
||||
#include "component/controller/Controller.h"
|
||||
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
@@ -47,7 +46,6 @@ private:
|
||||
virtual void handleMessage(MessageZoom* message);
|
||||
|
||||
StorageAccess* m_storageAccess;
|
||||
ActivationTranslator m_activationTranslator;
|
||||
};
|
||||
|
||||
#endif // FEATURE_CONTROLLER_H
|
||||
|
||||
@@ -20,9 +20,28 @@ void SearchController::handleMessage(MessageActivateAll* message)
|
||||
|
||||
void SearchController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
if (!message->keepContent() && !message->isFromSearch)
|
||||
if (!message->isFromSearch)
|
||||
{
|
||||
getView()->setMatches(m_storageAccess->getSearchMatchesForTokenIds(message->tokenIds));
|
||||
if (!message->keepContent() && message->tokenIds.size())
|
||||
{
|
||||
getView()->setMatches(m_storageAccess->getSearchMatchesForTokenIds(message->tokenIds));
|
||||
}
|
||||
else if (message->isReplayed() || message->unknownNames.size())
|
||||
{
|
||||
std::vector<SearchMatch> matches;
|
||||
|
||||
for (const std::string& name : message->unknownNames)
|
||||
{
|
||||
matches.push_back(SearchMatch(name));
|
||||
}
|
||||
|
||||
if (!matches.size())
|
||||
{
|
||||
matches.push_back(SearchMatch("<invalid>"));
|
||||
}
|
||||
|
||||
getView()->setMatches(matches);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "data/access/StorageAccess.h"
|
||||
|
||||
UndoRedoController::UndoRedoController(StorageAccess* storageAccess)
|
||||
: m_activationTranslator(storageAccess)
|
||||
{
|
||||
m_iterator = m_list.end();
|
||||
}
|
||||
@@ -181,7 +180,7 @@ void UndoRedoController::handleMessage(MessageRefresh* message)
|
||||
return;
|
||||
}
|
||||
|
||||
if (requiresActivateFallbackToken())
|
||||
if (m_iterator == m_list.begin())
|
||||
{
|
||||
SearchMatch match = SearchMatch::createCommand(SearchMatch::COMMAND_ALL);
|
||||
MessageSearch msg(std::vector<SearchMatch>(1, match));
|
||||
@@ -389,51 +388,3 @@ MessageBase* UndoRedoController::lastMessage() const
|
||||
{
|
||||
return std::prev(m_iterator)->message.get();
|
||||
}
|
||||
|
||||
bool UndoRedoController::requiresActivateFallbackToken() const
|
||||
{
|
||||
if (m_iterator == m_list.begin())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
std::list<Command>::iterator it = m_iterator;
|
||||
|
||||
do
|
||||
{
|
||||
std::advance(it, -1);
|
||||
}
|
||||
while (it != m_list.begin() && it->order != Command::ORDER_ACTIVATE);
|
||||
|
||||
return !checkCommandCausesTokenActivation(*it);
|
||||
}
|
||||
|
||||
bool UndoRedoController::checkCommandCausesTokenActivation(const Command& command) const
|
||||
{
|
||||
MessageBase* commandMessage = command.message.get();
|
||||
if (commandMessage)
|
||||
{
|
||||
std::shared_ptr<MessageActivateTokens> m;
|
||||
std::string commandMessageTypeString = commandMessage->getType();
|
||||
if (commandMessageTypeString == MessageActivateEdge::getStaticType())
|
||||
{
|
||||
m = m_activationTranslator.translateMessage(dynamic_cast<const MessageActivateEdge*>(commandMessage));
|
||||
}
|
||||
else if (commandMessageTypeString == MessageActivateFile::getStaticType())
|
||||
{
|
||||
m = m_activationTranslator.translateMessage(dynamic_cast<const MessageActivateFile*>(commandMessage));
|
||||
}
|
||||
else if (commandMessageTypeString == MessageActivateNodes::getStaticType())
|
||||
{
|
||||
MessageActivateNodes inputMessage(*dynamic_cast<MessageActivateNodes*>(commandMessage));
|
||||
inputMessage.setIsReplayed(true);
|
||||
m = m_activationTranslator.translateMessage(&inputMessage);
|
||||
}
|
||||
else if (commandMessageTypeString == MessageSearch::getStaticType())
|
||||
{
|
||||
m = m_activationTranslator.translateMessage(dynamic_cast<const MessageSearch*>(commandMessage));
|
||||
}
|
||||
return (m && m->tokenIds.size() > 0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
#include "utility/messaging/type/MessageShowScope.h"
|
||||
#include "utility/messaging/type/MessageUndo.h"
|
||||
|
||||
#include "component/controller/helper/ActivationTranslator.h"
|
||||
#include "component/controller/Controller.h"
|
||||
|
||||
class StorageAccess;
|
||||
@@ -102,11 +101,6 @@ private:
|
||||
bool sameMessageTypeAsLast(MessageBase* message) const;
|
||||
MessageBase* lastMessage() const;
|
||||
|
||||
bool requiresActivateFallbackToken() const;
|
||||
bool checkCommandCausesTokenActivation(const Command& command) const;
|
||||
|
||||
ActivationTranslator m_activationTranslator;
|
||||
|
||||
std::list<Command> m_list;
|
||||
std::list<Command>::iterator m_iterator;
|
||||
};
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
#include "component/controller/helper/ActivationTranslator.h"
|
||||
|
||||
#include "data/access/StorageAccess.h"
|
||||
#include "utility/messaging/type/MessageActivateAll.h"
|
||||
#include "utility/messaging/type/MessageActivateEdge.h"
|
||||
#include "utility/messaging/type/MessageActivateFile.h"
|
||||
#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"
|
||||
|
||||
ActivationTranslator::ActivationTranslator(StorageAccess* storageAccess)
|
||||
: m_storageAccess(storageAccess)
|
||||
{
|
||||
}
|
||||
|
||||
ActivationTranslator::~ActivationTranslator()
|
||||
{
|
||||
}
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageActivateEdge* message) const
|
||||
{
|
||||
std::shared_ptr<MessageActivateTokens> m;
|
||||
if (message->isAggregation())
|
||||
{
|
||||
// TODO: validate aggregationIds
|
||||
m = std::make_shared<MessageActivateTokens>(message, message->aggregationIds);
|
||||
m->setKeepContent(false);
|
||||
m->isAggregation = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Id edgeId = message->tokenId;
|
||||
|
||||
if (message->isReplayed())
|
||||
{
|
||||
edgeId = m_storageAccess->getIdForEdge(message->type, message->fromNameHierarchy, message->toNameHierarchy);
|
||||
}
|
||||
|
||||
if (edgeId)
|
||||
{
|
||||
m = std::make_shared<MessageActivateTokens>(message, std::vector<Id>(1, edgeId));
|
||||
m->isEdge = true;
|
||||
}
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageActivateFile* message) const
|
||||
{
|
||||
Id fileId = m_storageAccess->getTokenIdForFileNode(message->filePath);
|
||||
|
||||
if (fileId == 0)
|
||||
{
|
||||
MessageChangeFileView msg(
|
||||
message->filePath,
|
||||
MessageChangeFileView::FILE_MAXIMIZED,
|
||||
true,
|
||||
false,
|
||||
nullptr
|
||||
);
|
||||
msg.setIsReplayed(message->isReplayed());
|
||||
msg.setKeepContent(message->keepContent());
|
||||
msg.dispatch();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return std::make_shared<MessageActivateTokens>(message, std::vector<Id>(1, fileId));
|
||||
}
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageActivateNodes* message) const
|
||||
{
|
||||
std::vector<Id> nodeIds;
|
||||
if (!message->isReplayed())
|
||||
{
|
||||
for (const MessageActivateNodes::ActiveNode& node : message->nodes)
|
||||
{
|
||||
nodeIds.push_back(node.nodeId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (const MessageActivateNodes::ActiveNode& node : message->nodes)
|
||||
{
|
||||
Id nodeId = m_storageAccess->getIdForNodeWithNameHierarchy(node.nameHierarchy);
|
||||
if (nodeId > 0)
|
||||
{
|
||||
nodeIds.push_back(nodeId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> m;
|
||||
m = std::make_shared<MessageActivateTokens>(message, nodeIds);
|
||||
return m;
|
||||
}
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageActivateTokenIds* message) const
|
||||
{
|
||||
return std::make_shared<MessageActivateTokens>(message, message->tokenIds);
|
||||
}
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(const MessageSearch* message) const
|
||||
{
|
||||
const std::vector<SearchMatch>& matches = message->getMatches();
|
||||
|
||||
for (const SearchMatch& match : matches)
|
||||
{
|
||||
if (match.searchType == SearchMatch::SEARCH_COMMAND &&
|
||||
match.getFullName() == SearchMatch::getCommandName(SearchMatch::COMMAND_ALL))
|
||||
{
|
||||
MessageActivateAll msg;
|
||||
msg.setIsReplayed(message->isReplayed());
|
||||
msg.dispatchImmediately();
|
||||
return nullptr;
|
||||
}
|
||||
else if (match.searchType == SearchMatch::SEARCH_COMMAND &&
|
||||
match.getFullName() == SearchMatch::getCommandName(SearchMatch::COMMAND_ERROR))
|
||||
{
|
||||
MessageShowErrors msg(ErrorCountInfo(-1, 0));
|
||||
msg.setIsReplayed(message->isReplayed());
|
||||
msg.dispatchImmediately();
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<Id> tokenIds = m_storageAccess->getTokenIdsForMatches(matches);
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> m = std::make_shared<MessageActivateTokens>(message, tokenIds);
|
||||
if (!message->isReplayed())
|
||||
{
|
||||
m->isFromSearch = true;
|
||||
}
|
||||
|
||||
return m;
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
#ifndef ACTIVATION_TRANSLATOR_H
|
||||
#define ACTIVATION_TRANSLATOR_H
|
||||
|
||||
#include <memory>
|
||||
|
||||
class MessageActivateEdge;
|
||||
class MessageActivateFile;
|
||||
class MessageActivateNodes;
|
||||
class MessageActivateTokenIds;
|
||||
class MessageActivateTokens;
|
||||
class MessageSearch;
|
||||
class StorageAccess;
|
||||
|
||||
class ActivationTranslator
|
||||
{
|
||||
public:
|
||||
ActivationTranslator(StorageAccess* storageAccess);
|
||||
~ActivationTranslator();
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> translateMessage(const MessageActivateEdge* message) const;
|
||||
std::shared_ptr<MessageActivateTokens> translateMessage(const MessageActivateFile* message) const;
|
||||
std::shared_ptr<MessageActivateTokens> translateMessage(const MessageActivateNodes* message) const;
|
||||
std::shared_ptr<MessageActivateTokens> translateMessage(const MessageActivateTokenIds* message) const;
|
||||
std::shared_ptr<MessageActivateTokens> translateMessage(const MessageSearch* message) const;
|
||||
|
||||
private:
|
||||
StorageAccess* m_storageAccess;
|
||||
};
|
||||
|
||||
#endif // ACTIVATION_TRANSLATOR_H
|
||||
@@ -37,6 +37,8 @@ public:
|
||||
bool isEdge;
|
||||
bool isAggregation;
|
||||
bool isFromSearch;
|
||||
|
||||
std::vector<std::string> unknownNames;
|
||||
};
|
||||
|
||||
#endif // MESSAGE_ACTIVATE_TOKENS_H
|
||||
|
||||
@@ -405,6 +405,19 @@ void QtCodeFile::clickedTitleBar()
|
||||
void QtCodeFile::clickedTitle()
|
||||
{
|
||||
MessageActivateFile(m_filePath).dispatch();
|
||||
|
||||
// TODO: check if external file and maximize instead
|
||||
|
||||
// MessageChangeFileView msg(
|
||||
// message->filePath,
|
||||
// MessageChangeFileView::FILE_MAXIMIZED,
|
||||
// true,
|
||||
// false,
|
||||
// nullptr
|
||||
// );
|
||||
// msg.setIsReplayed(message->isReplayed());
|
||||
// msg.setKeepContent(message->keepContent());
|
||||
// msg.dispatch();
|
||||
}
|
||||
|
||||
void QtCodeFile::editProject()
|
||||
|
||||
Reference in New Issue
Block a user