Example #1
0
        private void AddChildButton_Click(object sender, EventArgs e)
        {
            var currentControl = (IPredicateBuilderControl)panelBuilderPlaceholder.Controls[0];

            var currentPredicate = currentControl.GetPredicateDescription();

            _validationBuilder.AddValidationDescription(currentPredicate);

            // Кнопка ОК и предпросмотр становится активной после того, как
            // выражение содержит минимально необходимый набор предикатов.
            // Мы не можем закончить выражение композитным или корневым предикатом
            if (currentPredicate.Type == PredicateDescriptionType.Root ||
                currentPredicate.Type == PredicateDescriptionType.CollectionComposite ||
                currentPredicate.Type == PredicateDescriptionType.ObjectComposite)
            {
                ButtonOK.Enabled = false;
            }
            else
            {
                ButtonOK.Enabled = true;
                UpdatePreview();
            }

            ValidationTreeView.Nodes.Clear();

            var currentNode = new TreeNode
            {
                Text = _validationBuilder.RootPredicate.ToString(),
                Tag  = _validationBuilder.RootPredicate
            };

            ValidationTreeView.Nodes.Add(currentNode);

            AddChildNodes(currentNode, _validationBuilder.RootPredicate.Children);

            ValidationTreeView.ExpandAll();

            panelBuilderPlaceholder.Controls.Clear();
        }
Example #2
0
        private void ValidationTreeView_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                ValidationTreeView.SelectedNode = ValidationTreeView.GetNodeAt(e.X, e.Y);

                if (ValidationTreeView.SelectedNode != null)
                {
                    var activePredicate = (PredicateDescriptionNode)ValidationTreeView.SelectedNode.Tag;

                    if (activePredicate.Type != PredicateDescriptionType.Object &&
                        activePredicate.Type != PredicateDescriptionType.Collection)
                    {
                        menu.Show(ValidationTreeView, e.Location);
                    }
                }
                else if (ValidationTreeView.Nodes.Count == 0)
                {
                    menu.Show(ValidationTreeView, e.Location);
                }
            }
        }