/// <summary> /// Inserts the subconnectors. /// </summary> /// <param name="connector">The connector.</param> /// <param name="loadWhenNecessary">if set to <c>true</c> [load when necessary].</param> /// <param name="recursiveExpand">if set to <c>true</c> [recursive expand].</param> /// <param name="item">The item.</param> private void InsertSubconnectors(ExpressionConnectorViewModel connector, bool loadWhenNecessary, bool recursiveExpand, ExpressionConnector item) { var idx = ConnectorsOut.IndexOf(connector); var newConnectors = new List<ExpressionConnectorViewModel>(); foreach (var sc in item.GetSubconnectors().OrderBy(x => x.Name)) { item.SubconnectorsLoaded = true; var newConnector = new ExpressionConnectorViewModel(new ExpressionConnector(ConnectorType.Out, sc), _diagramViewModel) { IndentLevel = connector.IndentLevel + 1 }; ConnectorsOut.Insert(++idx, newConnector); newConnectors.Add(newConnector); } if (recursiveExpand) { foreach (var newConnector in newConnectors) { var connectorItem = newConnector.Item as ExpressionConnector; if (connectorItem != null && connectorItem.IsConnectorsGroup && connectorItem.IsConnectorsGroupCollapsed) { continue; } ExpandSubconnectors(newConnector, loadWhenNecessary, true); } } item.Refresh(); _diagramViewModel.RaiseForceRelayout(); }
/// <summary> /// Deletes the subconnectors. /// </summary> /// <param name="connector">The connector.</param> /// <param name="loadWhenNecessary">if set to <c>true</c> [load when necessary].</param> /// <param name="item">The item.</param> private void DeleteSubconnectors(ExpressionConnectorViewModel connector, bool loadWhenNecessary, ExpressionConnector item) { foreach (var sc in item.GetSubconnectors().OrderBy(x => x.Name)) { var node = ConnectorsOut.FirstOrDefault(x => x.Item.Id == sc.Id); if (node != null) { if (sc.HasSubfields) { var newConnector = new ExpressionConnectorViewModel(new ExpressionConnector(ConnectorType.Out, sc), _diagramViewModel) { IndentLevel = connector.IndentLevel }; CollapseSubconnectors(newConnector, loadWhenNecessary); } item.SubconnectorsLoaded = false; ConnectorsOut.Remove(node); } } item.IsConnectorsGroupCollapsed = !item.SubconnectorsLoaded; item.ClearSubconnectors(); }