ui: GraphView can set active tokenId on node clicked

By now the graph displays the active node, without neighbours or anything, and clicking a node sets the active token id to the clicked nodes id.

fortune cookie message = Be prepared to accept an exciting opportunity in the future.
This commit is contained in:
Manuel Dobusch
2014-07-07 16:53:44 +02:00
parent e38914887d
commit 0f60a9a556
14 changed files with 215 additions and 62 deletions
+2 -2
View File
@@ -27,9 +27,9 @@ void ComponentManager::setup()
std::shared_ptr<Component> graphComponent = m_componentFactory->createGraphComponent();
GraphView* graphView = graphComponent->getView<GraphView>();
std::weak_ptr<GraphNode> node0 = graphView->addNode(Vec2i(-50, -50), "foo");
/*std::weak_ptr<GraphNode> node0 = graphView->addNode(Vec2i(-50, -50), "foo");
graphView->addEdge(node0, graphView->addNode(Vec2i(100, 100), "bar"));
graphView->addEdge(node0, graphView->addNode(Vec2i(50, -50), "war production co-ordinating commitee"));
graphView->addEdge(node0, graphView->addNode(Vec2i(50, -50), "war production co-ordinating commitee"));*/
m_components.push_back(graphComponent);
@@ -1,11 +1,12 @@
#include "component/controller/GraphController.h"
#include "component/view/graphElements/GraphEdge.h"
#include "component/view/graphElements/GraphNode.h"
#include "component/view/GraphView.h"
#include "data/access/GraphAccess.h"
#include "utility/logging/logging.h"
GraphController::GraphController(std::shared_ptr<GraphAccess> graphAccess)
: m_graphAccess(graphAccess)
{
@@ -15,6 +16,24 @@ GraphController::~GraphController()
{
}
void GraphController::handleMessage(MessageActivateToken* message)
{
GraphView* view = getView();
if (view != NULL)
{
std::string name = m_graphAccess->getNameForNodeWithId(message->tokenId);
DummyNode node(name, message->tokenId, Vec2i(0,0));
std::vector<DummyNode> nodes;
nodes.push_back(node);
std::vector<DummyEdge> edges;
view->rebuildGraph(nodes, edges);
}
}
GraphView* GraphController::getView()
{
return Controller::getView<GraphView>();
@@ -1,18 +1,24 @@
#ifndef GRAPH_CONTROLLER_H
#define GRAPH_CONTROLLER_H
#include "utility/messaging/MessageListener.h"
#include "utility/messaging/type/MessageActivateToken.h"
#include "component/controller/Controller.h"
class GraphView;
class GraphAccess;
class GraphController: public Controller
class GraphController:
public Controller,
public MessageListener<MessageActivateToken>
{
public:
GraphController(std::shared_ptr<GraphAccess> graphAccess);
~GraphController();
private:
virtual void handleMessage(MessageActivateToken* message);
GraphView* getView();
std::shared_ptr<GraphAccess> m_graphAccess;
+5 -2
View File
@@ -6,6 +6,8 @@
#include "component/view/View.h"
struct DummyEdge;
struct DummyNode;
class GraphEdge;
class GraphNode;
@@ -17,8 +19,9 @@ public:
virtual std::string getName() const;
virtual std::weak_ptr<GraphNode> addNode(const Vec2i& position, const std::string& name) = 0;
virtual void addEdge(const std::weak_ptr<GraphNode>& owner, const std::weak_ptr<GraphNode>& target) = 0;
virtual void rebuildGraph(const std::vector<DummyNode>& nodes, const std::vector<DummyEdge>& edges) = 0;
virtual void clear() = 0;
protected:
std::list<std::shared_ptr<GraphNode> > m_nodes;
@@ -1,6 +1,10 @@
#ifndef GRAPH_EDGE_H
#define GRAPH_EDGE_H
#include <memory>
class GraphNode;
class GraphEdge
{
public:
@@ -11,4 +15,18 @@ public:
virtual void targetMoved() = 0;
};
// temporary data structure for (visual) graph creation process
struct DummyEdge
{
public:
DummyEdge(const std::weak_ptr<GraphNode> o, const std::weak_ptr<GraphNode> t)
: owner(o)
, target(t)
{
}
std::weak_ptr<GraphNode> owner;
std::weak_ptr<GraphNode> target;
};
#endif // GRAPH_EDGE_H
@@ -1,9 +1,15 @@
#include "component/view/graphElements/GraphNode.h"
GraphNode::GraphNode()
GraphNode::GraphNode(const Id tokenId)
: m_tokenId(tokenId)
{
}
GraphNode::~GraphNode()
{
}
Id GraphNode::getTokenId()
{
return m_tokenId;
}
@@ -1,22 +1,47 @@
#ifndef GRAPH_NODE_H
#define GRAPH_NODE_H
#include <memory>
#include "utility/math/Vector2.h"
#include "utility/types.h"
class GraphEdge;
class GraphNode
{
public:
GraphNode();
GraphNode(const Id tokenId);
virtual ~GraphNode();
virtual std::string getName() = 0;
Id getTokenId();
virtual Vec2i getPosition() = 0;
virtual void addOutEdge(const std::shared_ptr<GraphEdge>& edge) = 0;
virtual void addInEdge(const std::weak_ptr<GraphEdge>& edge) = 0;
virtual void removeOutEdge(const std::shared_ptr<GraphEdge>& edge) = 0;
protected:
Id m_tokenId;
};
struct DummyNode
{
public:
DummyNode(const std::string& n, const Id tId, const Vec2i& p)
: name(n)
, tokenId(tId)
, position(p)
{
}
std::string name;
Id tokenId;
Vec2i position;
std::weak_ptr<GraphNode> actualNode;
};
#endif // GRAPH_NODE_H
+11 -2
View File
@@ -13,12 +13,13 @@ public:
Vector2();
Vector2(const T& x, const T& y);
Vector2(const VectorBase<T, 2>& vector);
Vector2(const Vector2<T>& vector);
virtual ~Vector2();
T getValue(const unsigned int index) const;
void setValue(const unsigned int index, const T& value);
T& operator[](const unsigned int index);
T operator[](const unsigned int index);
Property<T> x;
Property<T> y;
@@ -62,6 +63,14 @@ Vector2<T>::Vector2(const VectorBase<T, 2>& vector)
{
}
template<class T>
Vector2<T>::Vector2(const Vector2<T>& vector)
: VectorBase<T, 2>(vector)
, x(&VectorBase<T, 2>::m_values[m_xIndex])
, y(&VectorBase<T, 2>::m_values[m_yIndex])
{
}
template<class T>
Vector2<T>::~Vector2()
{
@@ -95,7 +104,7 @@ void Vector2<T>::setValue(const unsigned int index, const T& value)
}
template<class T>
T& Vector2<T>::operator[](const unsigned int index)
T Vector2<T>::operator[](const unsigned int index)
{
try
{
+11
View File
@@ -13,6 +13,7 @@ public:
Vector4();
Vector4(const T& x, const T& y, const T& z, const T& w);
Vector4(const VectorBase<T, 4>& vector);
Vector4(const Vector4<T>& vector);
virtual ~Vector4();
T getValue(const unsigned int index) const;
@@ -76,6 +77,16 @@ Vector4<T>::Vector4(const VectorBase<T, 4>& vector)
{
}
template<class T>
Vector4<T>::Vector4(const Vector4<T>& vector)
: VectorBase<T, 4>(vector)
, x(&VectorBase<T, 4>::m_values[m_xIndex])
, y(&VectorBase<T, 4>::m_values[m_yIndex])
, z(&VectorBase<T, 4>::m_values[m_zIndex])
, w(&VectorBase<T, 4>::m_values[m_wIndex])
{
}
template<class T>
Vector4<T>::~Vector4()
{
+2 -2
View File
@@ -54,7 +54,7 @@ public:
template<class U>
bool isSame(const VectorBase<U, N>& other) const;
T& operator[](const unsigned int index);
T operator[](const unsigned int index);
template<class U>
void operator=(VectorBase<U, N>& other);
@@ -326,7 +326,7 @@ bool VectorBase<T, N>::isSame(const VectorBase<U, N>& other) const
}
template<class T, unsigned int N>
T& VectorBase<T, N>::operator[](const unsigned int index)
T VectorBase<T, N>::operator[](const unsigned int index)
{
VECTOR_CHECK_INDEX(index);