private void DeleteIdea(ExIdea idea) { foreach (ExIdea child in idea.Children(Key.Left)) { DeleteIdea(child); } foreach (ExIdea child in idea.Children(Key.Right)) { DeleteIdea(child); } foreach (ExIdea child in idea.Children(Key.Up)) { DeleteIdea(child); } foreach (ExIdea child in idea.Children(Key.Down)) { DeleteIdea(child); } canvas.Children.Remove(idea); if (idea.parent_rel != null) { canvas.Children.Remove(idea.parent_rel); } }
private ExIdea MakeIdea(Key direction) { const int each_distance = 100; const int peer_distance = 200; ExIdea idea = new ExIdea(); var children = active_idea.Children(direction); int sign = (children.Count % 2 == 1) ? -1 : 1; int distance = sign * (children.Count + 1) / 2 * each_distance; switch (direction) { case Key.Left: idea.Margin = new Thickness(active_idea.Margin.Left - peer_distance, active_idea.Margin.Top + distance, 0, 0); break; case Key.Right: idea.Margin = new Thickness(active_idea.Margin.Left + peer_distance, active_idea.Margin.Top + distance, 0, 0); break; case Key.Up: idea.Margin = new Thickness(active_idea.Margin.Left + distance * 2, active_idea.Margin.Top - peer_distance, 0, 0); break; case Key.Down: idea.Margin = new Thickness(active_idea.Margin.Left + distance * 2, active_idea.Margin.Top + peer_distance, 0, 0); break; } idea.notify += Active; children.Add(idea); active_idea.AddRelation(idea); canvas.Children.Add(idea); canvas.Children.Add(idea.parent_rel); Canvas.SetZIndex(canvas.Children[canvas.Children.Count - 1], -1); return(idea); }