#ifndef QT_GRAPH_NODE_H #define QT_GRAPH_NODE_H #include #include "utility/math/Vector2.h" #include "utility/messaging/type/MessageActivateToken.h" #include "component/view/graphElements/GraphNode.h" class QtGraphEdge; class QtGraphNode : public GraphNode , public QGraphicsRectItem { public: QtGraphNode(const Vec2i& position, const std::string& name, const Id tokenId); virtual ~QtGraphNode(); virtual std::string getName() const; virtual Vec2i getPosition() const; virtual void setPosition(const Vec2i& position); virtual bool addOutEdge(const std::shared_ptr& edge); virtual bool addInEdge(const std::weak_ptr& edge); virtual void removeOutEdge(GraphEdge* edge); virtual std::list> getSubNodes() const; virtual void addSubNode(const std::shared_ptr& node); void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event); virtual void notifyParentMoved(); protected: void notifyEdgesAfterMove(); std::list> m_outEdges; std::list> m_inEdges; private: QGraphicsTextItem* m_text; std::list> m_subNodes; }; #endif // QT_GRAPH_NODE_H