Beispiel #1
0
 public override void ShiftNodes(int offset)
 {
     foreach (var node in TopNodes.Union(BottomNodes))
     {
         node.Row += 1;
     }
 }
Beispiel #2
0
        protected override void RemoveANode(rMindBaseNode node)
        {
            var outMax = m_parent.VLines.Where(x => x != this).Max(x => x.TopNodes.Count);

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

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

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

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

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