/*
    Copyright (C) 2012 Bartosz Broda, Jacek Bochenek, Łukasz Biłeńkij, 
    Damian Jaworski, Wojciech Mazur, Dominik Piasecki, Maciej Piasecki, 
    Radosław Ramocki
    
    This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option)
any later version.

    This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. 

    See the LICENSE and COPYING files for more details.
*/

#ifndef QGRAPHICSCLUSTERITEM_H
#define QGRAPHICSCLUSTERITEM_H

#include <QGraphicsRectItem>
#include <QPen>
#include "node.h"

/**
  Graphics item representing Node on GraphicsScene
  */
class QGraphicsClusterItem : public QGraphicsRectItem
{
public:
    QGraphicsClusterItem(size_t x, size_t y, size_t hlength, size_t vlength, Node * node, QColor color, const std::string & label = "");

    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);

    Node * GetNode();

    void SetHighlighted(bool highlighted);

private:
    size_t x, y, hlength, vlength;

    /**
      Node connected with this GraphicsItem
      */
    Node * node;

    /**
      Pens used to drawing graphics item (highlighted or normal)
      */
    QPen highlightedPen, normalPen;

    std::string label;

};

#endif // QGRAPHICSCLUSTERITEM_H
