logic: Refactored namespace activation
* show namespace name in search view when activated * show namespace definitions in code view when activated * no children in namespace * no implicit nodes in overview or namespace * Show a maximum of 10 open snippets * Fixed bug causing nodes in GraphView to be stacked at 0,0
This commit is contained in:
@@ -91,8 +91,7 @@ void CodeController::handleMessage(MessageActivateTokens* message)
|
||||
CodeView* view = getView();
|
||||
view->setErrorMessages(std::vector<std::string>());
|
||||
|
||||
std::vector<Id> activeTokenIds =
|
||||
(message->originalTokenIds.size() > 0 ? message->originalTokenIds : message->tokenIds);
|
||||
std::vector<Id> activeTokenIds = message->tokenIds;
|
||||
Id declarationId = 0; // 0 means that no token is found.
|
||||
|
||||
if (!message->isAggregation)
|
||||
@@ -106,11 +105,6 @@ void CodeController::handleMessage(MessageActivateTokens* message)
|
||||
activeTokenIds = m_storageAccess->getActiveTokenIdsForId(activeTokenIds[0], &declarationId);
|
||||
}
|
||||
|
||||
if (message->originalTokenIds.size() > 0)
|
||||
{
|
||||
declarationId = 0;
|
||||
}
|
||||
|
||||
if (message->isEdge)
|
||||
{
|
||||
view->showFirstActiveSnippet(activeTokenIds, message->isLast());
|
||||
@@ -305,7 +299,7 @@ std::vector<CodeSnippetParams> CodeController::getSnippetsForActiveTokenLocation
|
||||
}
|
||||
);
|
||||
|
||||
if (isDeclarationFile || collection->getTokenLocationFileCount() < 5 || file->isWholeCopy)
|
||||
if (snippets.size() < 10 && (isDeclarationFile || collection->getTokenLocationFileCount() < 5 || file->isWholeCopy))
|
||||
{
|
||||
std::vector<CodeSnippetParams> fileSnippets = getSnippetsForActiveTokenLocationsInFile(file);
|
||||
|
||||
|
||||
@@ -65,8 +65,6 @@ void FeatureController::handleMessage(MessageActivateTokenIds* message)
|
||||
void FeatureController::handleMessage(MessageActivateTokenLocations* message)
|
||||
{
|
||||
std::vector<Id> nodeIds = m_storageAccess->getNodeIdsForLocationIds(message->locationIds);
|
||||
nodeIds = m_storageAccess->getActiveTokenIdsForTokenIds(nodeIds);
|
||||
|
||||
MessageActivateNodes m;
|
||||
for (Id nodeId : nodeIds)
|
||||
{
|
||||
|
||||
@@ -67,16 +67,10 @@ void GraphController::handleMessage(MessageActivateTokens* message)
|
||||
|
||||
std::vector<Id> tokenIds = utility::concat(m_activeNodeIds, m_activeEdgeIds);
|
||||
|
||||
std::shared_ptr<Graph> graph =
|
||||
m_storageAccess->getGraphForActiveTokenIds(tokenIds, message->originalTokenIds.size() > 0);
|
||||
std::shared_ptr<Graph> graph = m_storageAccess->getGraphForActiveTokenIds(tokenIds);
|
||||
|
||||
createDummyGraphForTokenIds(tokenIds, graph);
|
||||
|
||||
if (message->originalTokenIds.size() > 0)
|
||||
{
|
||||
deactivateNodesRecursive(&m_dummyNodes);
|
||||
}
|
||||
|
||||
if (m_activeNodeIds.size() == 1)
|
||||
{
|
||||
bundleNodes();
|
||||
@@ -344,10 +338,13 @@ void GraphController::autoExpandActiveNode(const std::vector<Id>& activeTokenIds
|
||||
void GraphController::setActiveAndVisibility(const std::vector<Id>& activeTokenIds)
|
||||
{
|
||||
bool noActive = activeTokenIds.size() == 0;
|
||||
|
||||
for (DummyNode& node : m_dummyNodes)
|
||||
if (activeTokenIds.size() > 0)
|
||||
{
|
||||
setNodeActiveRecursive(node, activeTokenIds);
|
||||
noActive = true;
|
||||
for (DummyNode& node : m_dummyNodes)
|
||||
{
|
||||
setNodeActiveRecursive(node, activeTokenIds, &noActive);
|
||||
}
|
||||
}
|
||||
|
||||
for (DummyEdge& edge : m_dummyEdges)
|
||||
@@ -382,18 +379,23 @@ void GraphController::setActiveAndVisibility(const std::vector<Id>& activeTokenI
|
||||
}
|
||||
}
|
||||
|
||||
void GraphController::setNodeActiveRecursive(DummyNode& node, const std::vector<Id>& activeTokenIds) const
|
||||
void GraphController::setNodeActiveRecursive(DummyNode& node, const std::vector<Id>& activeTokenIds, bool* noActive) const
|
||||
{
|
||||
node.active = false;
|
||||
|
||||
if (node.isGraphNode())
|
||||
{
|
||||
node.active = find(activeTokenIds.begin(), activeTokenIds.end(), node.data->getId()) != activeTokenIds.end();
|
||||
|
||||
if (node.active)
|
||||
{
|
||||
*noActive = false;
|
||||
}
|
||||
}
|
||||
|
||||
for (DummyNode& subNode : node.subNodes)
|
||||
{
|
||||
setNodeActiveRecursive(subNode, activeTokenIds);
|
||||
setNodeActiveRecursive(subNode, activeTokenIds, noActive);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -474,15 +476,6 @@ void GraphController::setNodeVisibilityRecursiveTopDown(DummyNode& node, bool pa
|
||||
}
|
||||
}
|
||||
|
||||
void GraphController::deactivateNodesRecursive(std::vector<DummyNode>* nodes) const
|
||||
{
|
||||
for (DummyNode& node : *nodes)
|
||||
{
|
||||
node.active = false;
|
||||
deactivateNodesRecursive(&node.subNodes);
|
||||
}
|
||||
}
|
||||
|
||||
void GraphController::bundleNodes()
|
||||
{
|
||||
bundleNodesAndEdgesMatching(
|
||||
|
||||
@@ -63,11 +63,10 @@ private:
|
||||
void autoExpandActiveNode(const std::vector<Id>& activeTokenIds);
|
||||
|
||||
void setActiveAndVisibility(const std::vector<Id>& activeTokenIds);
|
||||
void setNodeActiveRecursive(DummyNode& node, const std::vector<Id>& activeTokenIds) const;
|
||||
void setNodeActiveRecursive(DummyNode& node, const std::vector<Id>& activeTokenIds, bool* noActive) const;
|
||||
void removeImplicitAndUndefinedChildrenRecursive(DummyNode& node);
|
||||
bool setNodeVisibilityRecursiveBottomUp(DummyNode& node, bool noActive) const;
|
||||
void setNodeVisibilityRecursiveTopDown(DummyNode& node, bool parentExpanded) const;
|
||||
void deactivateNodesRecursive(std::vector<DummyNode>* nodes) const;
|
||||
|
||||
void bundleNodes();
|
||||
void bundleNodesAndEdgesMatching(std::function<bool(const DummyNode&)> matcher, size_t count, const std::string& name);
|
||||
|
||||
@@ -22,10 +22,7 @@ void SearchController::handleMessage(MessageActivateTokens* message)
|
||||
{
|
||||
if (!message->keepContent() && !message->isFromSearch)
|
||||
{
|
||||
const std::vector<Id>& tokenIds =
|
||||
(message->originalTokenIds.size() > 0 ? message->originalTokenIds : message->tokenIds);
|
||||
|
||||
getView()->setMatches(m_storageAccess->getSearchMatchesForTokenIds(tokenIds));
|
||||
getView()->setMatches(m_storageAccess->getSearchMatchesForTokenIds(message->tokenIds));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -95,11 +95,7 @@ std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(co
|
||||
}
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> m;
|
||||
m = std::make_shared<MessageActivateTokens>(message, m_storageAccess->getActiveTokenIdsForTokenIds(nodeIds));
|
||||
if (nodeIds != m->tokenIds)
|
||||
{
|
||||
m->originalTokenIds = nodeIds;
|
||||
}
|
||||
m = std::make_shared<MessageActivateTokens>(message, nodeIds);
|
||||
m->isFromSystem = message->isFromSystem;
|
||||
return m;
|
||||
}
|
||||
@@ -135,12 +131,7 @@ std::shared_ptr<MessageActivateTokens> ActivationTranslator::translateMessage(co
|
||||
|
||||
std::vector<Id> tokenIds = m_storageAccess->getTokenIdsForMatches(matches);
|
||||
|
||||
std::shared_ptr<MessageActivateTokens> m =
|
||||
std::make_shared<MessageActivateTokens>(message, m_storageAccess->getActiveTokenIdsForTokenIds(tokenIds));
|
||||
if (tokenIds != m->tokenIds)
|
||||
{
|
||||
m->originalTokenIds = tokenIds;
|
||||
}
|
||||
std::shared_ptr<MessageActivateTokens> m = std::make_shared<MessageActivateTokens>(message, tokenIds);
|
||||
if (message->isFresh())
|
||||
{
|
||||
m->isFromSearch = true;
|
||||
|
||||
Reference in New Issue
Block a user