logic: Scroll active definition to top of code view is possible

* don't log hande message
* fixed graph gets animated when using next and previous code reference shortcuts
* fixed message scroll code handling
This commit is contained in:
Eberhard Graether
2016-12-07 14:18:24 +01:00
parent 5d5a0922f5
commit 2d9052992c
20 changed files with 181 additions and 46 deletions
+1
View File
@@ -262,6 +262,7 @@ add_files(
utility/messaging/type/MessageClearLogView.h
utility/messaging/type/MessageClearStatusView.h
utility/messaging/type/MessageCodeReference.h
utility/messaging/type/MessageCodeViewExpandedInitialFiles.h
utility/messaging/type/MessageColorSchemeTest.h
utility/messaging/type/MessageDeactivateEdge.h
utility/messaging/type/MessageDispatchWhenLicenseValid.h
@@ -18,6 +18,8 @@
CodeController::CodeController(StorageAccess* storageAccess)
: m_storageAccess(storageAccess)
, m_scrollToDefinition(false)
, m_scrollToValue(-1)
{
}
@@ -131,6 +133,7 @@ void CodeController::handleMessage(MessageActivateTokens* message)
{
m_collection = m_storageAccess->getTokenLocationsForTokenIds(activeTokenIds);
view->showCodeSnippets(getSnippetsForActiveTokenLocations(m_collection.get(), declarationId), activeTokenIds, true);
m_scrollToDefinition = !message->isReplayed() || message->isLast();
size_t fileCount = m_collection->getTokenLocationFileCount();
size_t referenceCount = m_collection->getTokenLocationCount();
@@ -229,6 +232,9 @@ void CodeController::handleMessage(MessageClearErrorCount* message)
void CodeController::handleMessage(MessageFlushUpdates* message)
{
MessageCodeViewExpandedInitialFiles* msgPtr = nullptr;
handleMessage(msgPtr);
showContents(message);
}
@@ -242,6 +248,21 @@ void CodeController::handleMessage(MessageFocusOut* message)
getView()->defocusTokenIds();
}
void CodeController::handleMessage(MessageCodeViewExpandedInitialFiles* message)
{
if (m_scrollToDefinition)
{
getView()->scrollToDefinition();
m_scrollToDefinition = false;
}
if (m_scrollToValue != -1)
{
getView()->scrollToValue(m_scrollToValue);
m_scrollToValue = -1;
}
}
void CodeController::handleMessage(MessageScrollToLine* message)
{
getView()->scrollToLine(message->filePath, message->line);
@@ -266,7 +287,7 @@ void CodeController::handleMessage(MessageScrollCode* message)
{
if (message->isReplayed())
{
getView()->scrollToValue(message->value);
m_scrollToValue = message->value;
}
}
@@ -10,6 +10,7 @@
#include "utility/messaging/type/MessageActivateTokens.h"
#include "utility/messaging/type/MessageChangeFileView.h"
#include "utility/messaging/type/MessageClearErrorCount.h"
#include "utility/messaging/type/MessageCodeViewExpandedInitialFiles.h"
#include "utility/messaging/type/MessageFlushUpdates.h"
#include "utility/messaging/type/MessageFocusIn.h"
#include "utility/messaging/type/MessageFocusOut.h"
@@ -36,6 +37,7 @@ class CodeController
, public MessageListener<MessageActivateTokens>
, public MessageListener<MessageChangeFileView>
, public MessageListener<MessageClearErrorCount>
, public MessageListener<MessageCodeViewExpandedInitialFiles>
, public MessageListener<MessageFlushUpdates>
, public MessageListener<MessageFocusIn>
, public MessageListener<MessageFocusOut>
@@ -57,6 +59,7 @@ private:
virtual void handleMessage(MessageActivateTokens* message);
virtual void handleMessage(MessageChangeFileView* message);
virtual void handleMessage(MessageClearErrorCount* message);
virtual void handleMessage(MessageCodeViewExpandedInitialFiles* message);
virtual void handleMessage(MessageFlushUpdates* message);
virtual void handleMessage(MessageFocusIn* message);
virtual void handleMessage(MessageFocusOut* message);
@@ -91,6 +94,9 @@ private:
StorageAccess* m_storageAccess;
mutable std::shared_ptr<TokenLocationCollection> m_collection;
bool m_scrollToDefinition;
int m_scrollToValue;
};
#endif // CODE_CONTROLLER_H
@@ -191,7 +191,7 @@ void GraphController::handleMessage(MessageShowReference* message)
m_activeEdgeIds = std::vector<Id>(1, message->tokenId);
setActiveAndVisibility(utility::concat(m_activeNodeIds, m_activeEdgeIds));
buildGraph(message, false);
buildGraph(message, false, false);
}
GraphView* GraphController::getView() const
+1
View File
@@ -51,6 +51,7 @@ public:
virtual void scrollToValue(int value) = 0;
virtual void scrollToLine(const FilePath filePath, unsigned int line) = 0;
virtual void scrollToDefinition() = 0;
private:
CodeController* getController();
+4 -4
View File
@@ -25,10 +25,10 @@ private:
virtual void doHandleMessageBase(MessageBase* message)
{
if (message->isLogged())
{
LOG_INFO_STREAM_BARE(<< "handle " << message->str());
}
// if (message->isLogged())
// {
// LOG_INFO_STREAM_BARE(<< "handle " << message->str());
// }
handleMessage(dynamic_cast<MessageType*>(message));
}
@@ -0,0 +1,20 @@
#ifndef MESSAGE_CODE_VIEW_EXPANDED_INITIAL_FILES_H
#define MESSAGE_CODE_VIEW_EXPANDED_INITIAL_FILES_H
#include "utility/messaging/Message.h"
class MessageCodeViewExpandedInitialFiles
: public Message<MessageCodeViewExpandedInitialFiles>
{
public:
MessageCodeViewExpandedInitialFiles()
{
}
static const std::string getStaticType()
{
return "MessageCodeViewExpandedInitialFiles";
}
};
#endif // MESSAGE_CODE_VIEW_EXPANDED_INITIAL_FILES_H