Пример #1
0
 public override void ShiftNodes(int offset)
 {
     foreach (var node in LeftNodes.Union(RightNodes))
     {
         node.Column += 1;
     }
 }
Пример #2
0
        protected override void RemoveANode(rMindBaseNode node)
        {
            var outMax = m_parent.HLines.Where(x => x != this).Max(x => x.LeftNodes.Count);

            if (LeftNodes.Count > outMax)
            {
                /* Если количество занимаемых колонок больше, чем у остальных строк
                 * Нужно удалять колонку грида и сдвинуть все узлы. Кроме своих.
                 */
                var nodes = m_parent.HLines.Where(x => x != this).Select(x => x as rMindLine)
                            .Union(m_parent.VLines.Select(x => x as rMindLine))
                            .Select(x => x.NodesA.Union(x.NodesB));

                foreach (var arr in nodes)
                {
                    foreach (var n in arr)
                    {
                        n.Column--;
                    }
                }

                // Среди своих узлов удаляем только те, что правее
                var offsetNodes = LeftNodes.Union(RightNodes).Where(x => x.Column > node.Column);
                foreach (var n in offsetNodes)
                {
                    n.Column--;
                }

                if (m_parent.Template.ColumnDefinitions.Count > 1)
                {
                    m_parent.Template.ColumnDefinitions.Remove(
                        m_parent.Template.ColumnDefinitions.Last()
                        );
                }
            }
            else
            {
                var offsetNodes = LeftNodes.Where(x => x.Column < node.Column);
                foreach (var n in offsetNodes)
                {
                    n.Column++;
                }
            }

            LeftNodes.Remove(node);
            m_parent.UpdateBase();
            m_parent.RemoveNode(node);
        }