ui: Click edges in trail to show source location

This commit is contained in:
Eberhard Graether
2017-05-06 22:56:17 +02:00
parent f5979f5ead
commit e5cad53e85
13 changed files with 215 additions and 71 deletions
+1
View File
@@ -339,6 +339,7 @@ add_files(
utility/messaging/type/MessageActivateTokenIds.h
utility/messaging/type/MessageActivateTokens.h
utility/messaging/type/MessageActivateTrail.h
utility/messaging/type/MessageActivateTrailEdge.h
utility/messaging/type/MessageActivateWindow.h
utility/messaging/type/MessageChangeFileView.h
utility/messaging/type/MessageClearErrorCount.h
@@ -175,6 +175,25 @@ void CodeController::handleMessage(MessageActivateTokens* message)
showContents(message);
}
void CodeController::handleMessage(MessageActivateTrailEdge* message)
{
TRACE("trail edge activate");
CodeView* view = getView();
view->clearCodeSnippets();
std::vector<Id> activeTokenIds = { message->tokenId };
m_collection = m_storageAccess->getSourceLocationsForTokenIds(activeTokenIds);
view->showCodeSnippets(
getSnippetsForActiveSourceLocations(m_collection.get(), 0),
activeTokenIds,
!message->isReplayed() || message->isReplayCleared()
);
showContents(message);
}
void CodeController::handleMessage(MessageChangeFileView* message)
{
TRACE("code change file");
@@ -9,6 +9,7 @@
#include "utility/messaging/type/MessageActivateAll.h"
#include "utility/messaging/type/MessageActivateLocalSymbols.h"
#include "utility/messaging/type/MessageActivateTokens.h"
#include "utility/messaging/type/MessageActivateTrailEdge.h"
#include "utility/messaging/type/MessageChangeFileView.h"
#include "utility/messaging/type/MessageClearErrorCount.h"
#include "utility/messaging/type/MessageCodeViewExpandedInitialFiles.h"
@@ -37,6 +38,7 @@ class CodeController
, public MessageListener<MessageActivateAll>
, public MessageListener<MessageActivateLocalSymbols>
, public MessageListener<MessageActivateTokens>
, public MessageListener<MessageActivateTrailEdge>
, public MessageListener<MessageChangeFileView>
, public MessageListener<MessageClearErrorCount>
, public MessageListener<MessageCodeViewExpandedInitialFiles>
@@ -60,6 +62,7 @@ private:
virtual void handleMessage(MessageActivateAll* message);
virtual void handleMessage(MessageActivateLocalSymbols* message);
virtual void handleMessage(MessageActivateTokens* message);
virtual void handleMessage(MessageActivateTrailEdge* message);
virtual void handleMessage(MessageChangeFileView* message);
virtual void handleMessage(MessageClearErrorCount* message);
virtual void handleMessage(MessageCodeViewExpandedInitialFiles* message);
@@ -152,11 +152,24 @@ void GraphController::handleMessage(MessageActivateTrail* message)
MessageStatus("Displaying graph", false, true).dispatch();
buildGraph(message, true, true, false);
message->setIsReplayed(false);
buildGraph(message, message->isLast(), true, false);
}
void GraphController::handleMessage(MessageActivateTrailEdge* message)
{
TRACE("trail edge activate");
getView()->activateEdge(message->tokenId, message->isReplayed());
}
void GraphController::handleMessage(MessageFlushUpdates* message)
{
if (m_graph->getTrailMode() != Graph::TRAIL_NONE)
{
return;
}
buildGraph(message, true, !message->keepContent(), false);
}
@@ -8,6 +8,7 @@
#include "utility/messaging/type/MessageActivateAll.h"
#include "utility/messaging/type/MessageActivateTokens.h"
#include "utility/messaging/type/MessageActivateTrail.h"
#include "utility/messaging/type/MessageActivateTrailEdge.h"
#include "utility/messaging/type/MessageColorSchemeTest.h"
#include "utility/messaging/type/MessageFlushUpdates.h"
#include "utility/messaging/type/MessageFocusIn.h"
@@ -36,6 +37,7 @@ class GraphController
, public MessageListener<MessageActivateAll>
, public MessageListener<MessageActivateTokens>
, public MessageListener<MessageActivateTrail>
, public MessageListener<MessageActivateTrailEdge>
, public MessageListener<MessageColorSchemeTest>
, public MessageListener<MessageFlushUpdates>
, public MessageListener<MessageFocusIn>
@@ -56,6 +58,7 @@ private:
virtual void handleMessage(MessageActivateAll* message);
virtual void handleMessage(MessageActivateTokens* message);
virtual void handleMessage(MessageActivateTrail* message);
virtual void handleMessage(MessageActivateTrailEdge* message);
virtual void handleMessage(MessageFlushUpdates* message);
virtual void handleMessage(MessageFocusIn* message);
virtual void handleMessage(MessageFocusOut* message);
@@ -90,6 +90,18 @@ void UndoRedoController::handleMessage(MessageActivateTrail* message)
processCommand(command);
}
void UndoRedoController::handleMessage(MessageActivateTrailEdge* message)
{
if (sameMessageTypeAsLast(message) &&
static_cast<MessageActivateTrailEdge*>(lastMessage())->tokenId == message->tokenId)
{
return;
}
Command command(std::make_shared<MessageActivateTrailEdge>(*message), Command::ORDER_ADAPT, true);
processCommand(command);
}
void UndoRedoController::handleMessage(MessageChangeFileView* message)
{
Command command(std::make_shared<MessageChangeFileView>(*message), Command::ORDER_VIEW);
@@ -9,6 +9,7 @@
#include "utility/messaging/type/MessageActivateLocalSymbols.h"
#include "utility/messaging/type/MessageActivateTokens.h"
#include "utility/messaging/type/MessageActivateTrail.h"
#include "utility/messaging/type/MessageActivateTrailEdge.h"
#include "utility/messaging/type/MessageChangeFileView.h"
#include "utility/messaging/type/MessageDeactivateEdge.h"
#include "utility/messaging/type/MessageFinishedParsing.h"
@@ -36,6 +37,7 @@ class UndoRedoController
, public MessageListener<MessageActivateLocalSymbols>
, public MessageListener<MessageActivateTokens>
, public MessageListener<MessageActivateTrail>
, public MessageListener<MessageActivateTrailEdge>
, public MessageListener<MessageChangeFileView>
, public MessageListener<MessageDeactivateEdge>
, public MessageListener<MessageFinishedParsing>
@@ -81,6 +83,7 @@ private:
virtual void handleMessage(MessageActivateLocalSymbols* message);
virtual void handleMessage(MessageActivateTokens* message);
virtual void handleMessage(MessageActivateTrail* message);
virtual void handleMessage(MessageActivateTrailEdge* message);
virtual void handleMessage(MessageChangeFileView* message);
virtual void handleMessage(MessageDeactivateEdge* message);
virtual void handleMessage(MessageFinishedParsing* message);
+2
View File
@@ -44,6 +44,8 @@ public:
virtual Vec2i getViewSize() const = 0;
virtual void scrollToValues(int xValue, int yValue) = 0;
virtual void activateEdge(Id edgeId, bool centerOrigin) = 0;
};
#endif // GRAPH_VIEW_H
@@ -0,0 +1,48 @@
#ifndef MESSAGE_ACTIVATE_TRAIL_EDGE_H
#define MESSAGE_ACTIVATE_TRAIL_EDGE_H
#include "utility/messaging/Message.h"
#include "utility/types.h"
#include "data/graph/Edge.h"
#include "data/name/NameHierarchy.h"
class MessageActivateTrailEdge
: public Message<MessageActivateTrailEdge>
{
public:
MessageActivateTrailEdge(
Id tokenId, Edge::EdgeType type, const NameHierarchy& sourceNameHierarchy, const NameHierarchy& targetNameHierarchy
)
: tokenId(tokenId)
, type(type)
, sourceNameHierarchy(sourceNameHierarchy)
, targetNameHierarchy(targetNameHierarchy)
{
}
static const std::string getStaticType()
{
return "MessageActivateTrailEdge";
}
std::string getFullName() const
{
std::string name = Edge::getReadableTypeString(type) + ":";
name += sourceNameHierarchy.getQualifiedNameWithSignature() + "->";
name += targetNameHierarchy.getQualifiedNameWithSignature();
return name;
}
virtual void print(std::ostream& os) const
{
os << tokenId << " - " << getFullName();
}
const Id tokenId;
const Edge::EdgeType type;
const NameHierarchy sourceNameHierarchy;
const NameHierarchy targetNameHierarchy;
};
#endif // MESSAGE_ACTIVATE_TRAIL_EDGE_H