ui: bidirectional hovering

hovering for graphview and codeview via messaging, hovering in one view will "hover" the equivalent in the other view
This commit is contained in:
Andreas Stallinger
2015-05-12 13:55:23 +02:00
parent 97345cc72f
commit a41c0e1b85
25 changed files with 302 additions and 10 deletions
+2
View File
@@ -253,6 +253,8 @@ add_files(
utility/messaging/type/MessageAutoRefreshChanged.h
utility/messaging/type/MessageFind.h
utility/messaging/type/MessageFinishedParsing.h
utility/messaging/type/MessageFocusIn.h
utility/messaging/type/MessageFocusOut.h
utility/messaging/type/MessageGraphNodeExpand.h
utility/messaging/type/MessageGraphNodeMove.h
utility/messaging/type/MessageInterruptTasks.h
@@ -70,6 +70,16 @@ void CodeController::handleMessage(MessageFinishedParsing* message)
}
}
void CodeController::handleMessage(MessageFocusIn* message)
{
getView()->focusToken(message->tokenId);
}
void CodeController::handleMessage(MessageFocusOut* message)
{
getView()->defocusToken();
}
void CodeController::handleMessage(MessageRefresh* message)
{
getView()->refreshView();
@@ -183,7 +193,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 (rsize_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);
}
@@ -11,6 +11,8 @@
#include "utility/messaging/type/MessageActivateTokenLocation.h"
#include "utility/messaging/type/MessageActivateTokens.h"
#include "utility/messaging/type/MessageFinishedParsing.h"
#include "utility/messaging/type/MessageFocusIn.h"
#include "utility/messaging/type/MessageFocusOut.h"
#include "utility/messaging/type/MessageRefresh.h"
#include "utility/messaging/type/MessageShowFile.h"
#include "utility/types.h"
@@ -23,6 +25,8 @@ class CodeController
, public MessageListener<MessageActivateTokenLocation>
, public MessageListener<MessageActivateTokens>
, public MessageListener<MessageFinishedParsing>
, public MessageListener<MessageFocusIn>
, public MessageListener<MessageFocusOut>
, public MessageListener<MessageRefresh>
, public MessageListener<MessageShowFile>
{
@@ -36,6 +40,8 @@ private:
virtual void handleMessage(MessageActivateTokenLocation* message);
virtual void handleMessage(MessageActivateTokens* message);
virtual void handleMessage(MessageFinishedParsing* message);
virtual void handleMessage(MessageFocusIn* message);
virtual void handleMessage(MessageFocusOut* message);
virtual void handleMessage(MessageRefresh* message);
virtual void handleMessage(MessageShowFile* message);
@@ -51,6 +51,18 @@ void GraphController::handleMessage(MessageFinishedParsing* message)
getView()->clear();
}
#include <iostream>
void GraphController::handleMessage(MessageFocusIn* message)
{
getView()->focusToken(message->tokenId);
}
void GraphController::handleMessage(MessageFocusOut *message)
{
getView()->defocusToken(message->tokenId);
}
void GraphController::handleMessage(MessageGraphNodeExpand* message)
{
DummyNode* node = findDummyNodeRecursive(m_dummyNodes, message->tokenId);
@@ -6,6 +6,8 @@
#include "utility/messaging/MessageListener.h"
#include "utility/messaging/type/MessageActivateTokens.h"
#include "utility/messaging/type/MessageFinishedParsing.h"
#include "utility/messaging/type/MessageFocusIn.h"
#include "utility/messaging/type/MessageFocusOut.h"
#include "utility/messaging/type/MessageGraphNodeExpand.h"
#include "utility/messaging/type/MessageGraphNodeMove.h"
@@ -24,6 +26,8 @@ class GraphController
: public Controller
, public MessageListener<MessageActivateTokens>
, public MessageListener<MessageFinishedParsing>
, public MessageListener<MessageFocusIn>
, public MessageListener<MessageFocusOut>
, public MessageListener<MessageGraphNodeExpand>
, public MessageListener<MessageGraphNodeMove>
{
@@ -34,6 +38,8 @@ public:
private:
virtual void handleMessage(MessageActivateTokens* message);
virtual void handleMessage(MessageFinishedParsing* message);
virtual void handleMessage(MessageFocusIn* message);
virtual void handleMessage(MessageFocusOut* message);
virtual void handleMessage(MessageGraphNodeExpand* message);
virtual void handleMessage(MessageGraphNodeMove* message);
+3
View File
@@ -43,6 +43,9 @@ public:
virtual void showCodeSnippets(const std::vector<CodeSnippetParams>& snippets) = 0;
virtual void showCodeFile(const CodeSnippetParams& params) = 0;
virtual void focusToken(const Id tokenId) = 0;
virtual void defocusToken() = 0;
private:
CodeController* getController();
};
+2
View File
@@ -24,6 +24,8 @@ public:
virtual void rebuildGraph(
std::shared_ptr<Graph> graph, const std::vector<DummyNode>& nodes, const std::vector<DummyEdge>& edges) = 0;
virtual void clear() = 0;
virtual void focusToken(Id tokenId) = 0;
virtual void defocusToken(Id tokenId) = 0;
virtual void resizeView() = 0;
@@ -0,0 +1,23 @@
#ifndef MESSAGE_FOCUS_IN_H
#define MESSAGE_FOCUS_IN_H
#include "utility/messaging/Message.h"
#include "utility/types.h"
class MessageFocusIn : public Message<MessageFocusIn>
{
public:
MessageFocusIn(Id tokenId)
: tokenId(tokenId)
{
}
static const std::string getStaticType()
{
return "MessageFocusIn";
}
const Id tokenId;
};
#endif //MESSAGE_FOCUS_IN_H
@@ -0,0 +1,23 @@
#ifndef MESSAGE_FOCUS_OUT_H
#define MESSAGE_FOCUS_OUT_H
#include "utility/messaging/Message.h"
#include "utility/types.h"
class MessageFocusOut : public Message<MessageFocusOut>
{
public:
MessageFocusOut(Id tokenId)
: tokenId(tokenId)
{
}
static const std::string getStaticType()
{
return "MessageHoverLeave";
}
const Id tokenId;
};
#endif //MESSAGE_FOCUS_OUT_H