void QmitkToolTrackingStatusWidget::ShowStatusLabels()
{
  RemoveGuiLabels();

  if(m_NavigationDatas == NULL || m_NavigationDatas->size() <= 0)
    {
    RemoveGuiLabels();
    AddEmptyLabel();
    return;
    }


  m_StatusLabels = new QVector<QLabel*>();
  mitk::NavigationData* navData;
  QLabel* label;


  for(unsigned int i = 0; i < m_NavigationDatas->size(); i++)
  {
    navData = m_NavigationDatas->at(i).GetPointer();

    QString name(navData->GetName());

    label = new QLabel(name, this);
    label->setObjectName(name);
    label->setAlignment(m_Alignment | Qt::AlignVCenter);
    label->setFrameStyle(QFrame::Panel | QFrame::Sunken);

    m_StatusLabels->append(label);
    if (m_Style == QmitkToolTrackingStatusWidget::VerticalUpperStyle) m_Controls->m_VerticalLayout->addWidget(m_StatusLabels->at(i));
    else m_Controls->m_GridLayout->addWidget(m_StatusLabels->at(i),0,i);

  }
}
void QmitkToolTrackingStatusWidget::RemoveStatusLabels()
{
  //remove GUI elements
  RemoveGuiLabels();  

  //clear members
  if(m_StatusLabels != NULL && m_StatusLabels->size() > 0)
    {
    delete m_StatusLabels;
    m_StatusLabels = new QVector< QLabel* >();
    }

  if(m_NavigationDatas != NULL && m_NavigationDatas->size() > 0)
    {
    delete m_NavigationDatas;
    m_NavigationDatas = new std::vector<mitk::NavigationData::Pointer>();
    }

}
void QmitkToolTrackingStatusWidget::PreShowTools(mitk::NavigationToolStorage::Pointer toolStorage)
  {
  RemoveGuiLabels();
  QLabel* label;

  for(unsigned int i = 0; i < toolStorage->GetToolCount(); i++)
    {
    QString name(toolStorage->GetTool(i)->GetToolName().c_str());

    label = new QLabel(name, this);
    label->setObjectName(name);
    label->setAlignment(m_Alignment | Qt::AlignVCenter);
    label->setFrameStyle(QFrame::Panel | QFrame::Sunken);
    label->setStyleSheet("QLabel{background-color: #dddddd }");
    if (m_Style == QmitkToolTrackingStatusWidget::VerticalUpperStyle) m_Controls->m_VerticalLayout->addWidget(label);
    else m_Controls->m_GridLayout->addWidget(label);

    }

  }
void QmitkToolTrackingStatusWidget::Refresh(int posPrecision, int quatPrecision)
{

  if(m_NavigationDatas == NULL || m_NavigationDatas->size() <= 0)
    {
    RemoveGuiLabels();
    AddEmptyLabel();
    return;
    }


  mitk::NavigationData* navData;

  for(unsigned int i = 0; i < m_NavigationDatas->size(); i++)
  {
    navData = m_NavigationDatas->at(i).GetPointer();
    QString name(navData->GetName());
    QString pos = "";
    QString quat = "";
    if (m_ShowPositions)
      {
      mitk::Point3D position = navData->GetPosition();
      pos = " [" + QString::number(position[0],'f',posPrecision) + ";" + QString::number(position[1],'f',posPrecision) + ";" + QString::number(position[2],'f',posPrecision) + "]";
      }
    if (m_ShowQuaternions)
      {
      mitk::Quaternion quaternion = navData->GetOrientation();
      quat = " / [qx:" + QString::number(quaternion.x(),'f',quatPrecision) + ";qy:" + QString::number(quaternion.y(),'f',quatPrecision) + ";qz:" + QString::number(quaternion.z(),'f',quatPrecision) + ";qr:" + QString::number(quaternion.r()) + "]";
      }


     if(!(m_StatusLabels->at(i)->text() == name+pos+quat))
        m_StatusLabels->at(i)->setText(name+pos+quat);

      if(navData->IsDataValid())
        m_StatusLabels->at(i)->setStyleSheet("QLabel{background-color: #8bff8b }");
      else
        m_StatusLabels->at(i)->setStyleSheet("QLabel{background-color: #ff7878 }");

  }
}