public void Draw(CustomTreeNode node, bool isSelected)
        {
            double nodeSizeHalf = settings.NodeSize / 2.0f;
            double segmentHeightHalf = settings.SegmentHeight / 2.0f;
            double x, y;

            GetXY(node, out x, out y);

            // has at least one child
            if (node.ChildrenCount > 0)
            {
                // has at least one children draw half of vertical line above
                actualDrawer.DrawLine(x,
                                      x,
                                      y - segmentHeightHalf,
                                      y);

                // more children
                if (node.ChildrenCount > 1)
                {
                    // horizonatal line
                    actualDrawer.DrawLine(x,
                                          x + settings.SegmentWidth * node.ChildrenWidth,
                                          y - segmentHeightHalf,
                                          y - segmentHeightHalf);
                }
            }

            // not root draw half of vertical line bellow
            if (node.TopPadding > 0)
            {
                actualDrawer.DrawLine(x,
                                      x,
                                      y + settings.NodeSize,
                                      y + settings.NodeSize + segmentHeightHalf + (settings.SegmentHeight + settings.NodeSize) * (node.Id - node.ParentId - 1));
            }

            if (isSelected)
            {
                actualDrawer.DrawWholeLineSelected(y - segmentHeightHalf, settings.SegmentHeight + settings.NodeSize);
            }

            actualDrawer.DrawNode(x - nodeSizeHalf,
                                  y,
                                  settings.NodeSize,
                                  false, node.Info);
        }