Ejemplo n.º 1
0
        /// <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();
        }
Ejemplo n.º 2
0
        /// <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();
        }