private void AddExistingSystemTypeTest(NodeView nodeView)
        {
            int? groupId = null;
            var controlSystemTypeId = -1;

            if (nodeView.Type == NodeType.ComponentTypeGroup)
            {
                groupId = nodeView.GroupId;
                controlSystemTypeId = nodeView.Parent.Parent.Id;
            }
            else
            {
                controlSystemTypeId = nodeView.Parent.Id;
            }

            var cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);

            cmsWebServiceClient.GetControlSystemTypeCompleted +=
                (s, e) =>
                {
                    var dialog = new AddEditExistingControlTypeTestingPropertyDialog(e.Result, groupId);
                    dialog.Show();

                    dialog.Closed += (s1, e1) =>
                    {
                        if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
                        {
                            EventHandler<AddUpdateControlSystemTypeTestingPropertyCompletedEventArgs> addCompleted = null;
                            addCompleted = (s2, eventArgs) =>
                            {
                                var pcpt = eventArgs.Result;

                                if (pcpt != null)
                                {
                                    var child = new NodeView(nodeView)
                                    {
                                        Id = pcpt.Id,
                                        Name = dialog.SystemTypeTestingProperty.ControlSystemTestingProperty.Name,
                                        Description = dialog.SystemTypeTestingProperty.ControlSystemTestingProperty.Description,
                                        Icon = "/CmsEquipmentDatabase;component/Images/Configuration.png",
                                        Type = NodeType.SystemTypeTest,
                                        HasChildren = false,
                                        SortField = groupId.HasValue ? pcpt.GroupOrdinal.ToString() : pcpt.Ordinal.ToString()
                                    };
                                    nodeView.Children.Add(child);
                                    nodeView.Sort(true);
                                }

                                cmsWebServiceClient.AddUpdateControlSystemTypeTestingPropertyCompleted -= addCompleted;
                            };
                            cmsWebServiceClient.AddUpdateControlSystemTypeTestingPropertyCompleted += addCompleted;

                            var controlSystemEquipmentComponentTypeProperty = new ControlSystemTypeTestingProperty
                            {
                                ControlSystemTypeId = controlSystemTypeId,
                                TestPropertyId = dialog.SystemTypeTestingProperty.TestPropertyId,
                                ComponentTypeGroupId = dialog.SystemTypeTestingProperty.ComponentTypeGroupId,
                                Ordinal = dialog.SystemTypeTestingProperty.Ordinal,
                                GroupOrdinal = dialog.SystemTypeTestingProperty.GroupOrdinal
                            };

                            if (dialog.GroupChanged)
                            {
                                //Group has changed, reload the Nodes
                                ReloadComponentTypeEquipmentProperties(CommonUtils.EquipmentPropertyType.SystemTestingProperty, nodeView, NodeType.SystemTypeTests);
                            }

                            cmsWebServiceClient.AddUpdateControlSystemTypeTestingPropertyAsync(controlSystemEquipmentComponentTypeProperty);
                        }
                    };
                };
            cmsWebServiceClient.GetControlSystemTypeAsync(controlSystemTypeId);
        }
        private void EditSystemTypeTest(NodeView nodeView)
        {
            var dialog = new AddEditExistingControlTypeTestingPropertyDialog(nodeView.Id) { Title = "Edit System Type Test" };

            dialog.Closed +=
                (s1, e1) =>
                {
                    if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
                    {
                        var cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);
                        EventHandler<AddUpdateControlSystemTypeTestingPropertyCompletedEventArgs> editCompleted = null;
                        editCompleted = (s2, eventArgs) =>
                        {
                            var property = eventArgs.Result;
                            if (property != null)
                            {
                                nodeView.Name = dialog.SystemTypeTestingProperty.ControlSystemTestingProperty.Name;
                                nodeView.Description = dialog.SystemTypeTestingProperty.ControlSystemTestingProperty.Description;
                                nodeView.SortField = dialog.SystemTypeTestingProperty.ComponentTypeGroupId.HasValue
                                    ? dialog.SystemTypeTestingProperty.GroupOrdinal.ToString()
                                    : dialog.SystemTypeTestingProperty.Ordinal.ToString();
                            }
                            cmsWebServiceClient.AddUpdateControlSystemTypeTestingPropertyCompleted -= editCompleted;
                            nodeView.Parent.Sort();
                        };
                        cmsWebServiceClient.AddUpdateControlSystemTypeTestingPropertyCompleted += editCompleted;

                        var typeProperty = new ControlSystemTypeTestingProperty
                        {
                            Id = dialog.SystemTypeTestingProperty.Id,
                            ControlSystemTypeId = dialog.SystemTypeTestingProperty.ControlSystemTypeId,
                            TestPropertyId = dialog.SystemTypeTestingProperty.TestPropertyId,
                            Ordinal = dialog.SystemTypeTestingProperty.Ordinal,
                            ComponentTypeGroupId = dialog.SystemTypeTestingProperty.ComponentTypeGroupId,
                            GroupOrdinal = dialog.SystemTypeTestingProperty.GroupOrdinal
                        };

                        cmsWebServiceClient.AddUpdateControlSystemTypeTestingPropertyAsync(typeProperty);

                        var propertiesNode = nodeView.Parent;
                        if (propertiesNode.Type != NodeType.SystemTypeTests)
                        {
                            propertiesNode = propertiesNode.Parent;
                        }

                        if (dialog.GroupChanged)
                        {
                            //Group has changed, reload the Nodes
                            ReloadComponentTypeEquipmentProperties(CommonUtils.EquipmentPropertyType.SystemTestingProperty,
                                propertiesNode, NodeType.SystemTypeTests);
                        }
                    }
                };
            dialog.Show();
        }