This change adds the class GraphViewStyle that holds all values for defining the style of Nodes and Edges in the Graph. The GraphViewStyleImpl interface and the QtGraphViewStyleImpl implementation are used to request Qt specific metrics, like the charwidth of used fonts. This change includes the following fixes: * aggregation number always in the middle between nodes * darker color for aggregation edge * split off QGraphicsLineItem implementations from QtGraphEdge * fixed some colors in color scheme fortune cookie message = Sorge dich nicht! Du wirst bekommen was du brauchst.
69 lines
2.2 KiB
C++
69 lines
2.2 KiB
C++
#ifndef GRAPH_CONTROLLER_H
|
|
#define GRAPH_CONTROLLER_H
|
|
|
|
#include <vector>
|
|
|
|
#include "utility/messaging/MessageListener.h"
|
|
#include "utility/messaging/type/MessageActivateTokens.h"
|
|
#include "utility/messaging/type/MessageFinishedParsing.h"
|
|
#include "utility/messaging/type/MessageGraphNodeExpand.h"
|
|
#include "utility/messaging/type/MessageGraphNodeMove.h"
|
|
|
|
#include "component/controller/Controller.h"
|
|
#include "component/controller/GraphLayouter.h"
|
|
#include "component/view/GraphView.h"
|
|
|
|
struct DummyNode;
|
|
struct DummyEdge;
|
|
class Graph;
|
|
class Node;
|
|
class StorageAccess;
|
|
|
|
class GraphController
|
|
: public Controller
|
|
, public MessageListener<MessageActivateTokens>
|
|
, public MessageListener<MessageFinishedParsing>
|
|
, public MessageListener<MessageGraphNodeExpand>
|
|
, public MessageListener<MessageGraphNodeMove>
|
|
{
|
|
public:
|
|
GraphController(StorageAccess* storageAccess);
|
|
~GraphController();
|
|
|
|
private:
|
|
virtual void handleMessage(MessageActivateTokens* message);
|
|
virtual void handleMessage(MessageFinishedParsing* message);
|
|
virtual void handleMessage(MessageGraphNodeExpand* message);
|
|
virtual void handleMessage(MessageGraphNodeMove* message);
|
|
|
|
GraphView* getView() const;
|
|
|
|
void setActiveTokenIds(const std::vector<Id>& activeTokenIds);
|
|
|
|
void createDummyGraphForTokenIds(const std::vector<Id>& tokenIds);
|
|
DummyNode createDummyNodeTopDown(Node* node);
|
|
|
|
void autoExpandActiveNode(const std::vector<Id>& activeTokenIds);
|
|
|
|
void setActiveAndVisibility(const std::vector<Id>& activeTokenIds);
|
|
void setNodeActiveRecursive(DummyNode& node, const std::vector<Id>& activeTokenIds) const;
|
|
bool setNodeVisibilityRecursiveBottomUp(DummyNode& node, bool aggregated) const;
|
|
void setNodeVisibilityRecursiveTopDown(DummyNode& node) const;
|
|
|
|
void layoutNesting();
|
|
void layoutNestingRecursive(DummyNode& node) const;
|
|
|
|
DummyNode* findDummyNodeRecursive(std::vector<DummyNode>& nodes, Id tokenId);
|
|
DummyNode* findDummyNodeAccessRecursive(std::vector<DummyNode>& nodes, Id parentId, TokenComponentAccess::AccessType type);
|
|
|
|
StorageAccess* m_storageAccess;
|
|
|
|
std::vector<DummyNode> m_dummyNodes;
|
|
std::vector<DummyEdge> m_dummyEdges;
|
|
|
|
std::vector<Id> m_activeTokenIds;
|
|
std::vector<Id> m_currentActiveTokenIds;
|
|
};
|
|
|
|
#endif // GRAPH_CONTROLLER_H
|