/// <summary>
        /// Refreshes the view-model.
        /// </summary>
        /// <param name="model">
        /// The model.
        /// </param>
        /// <param name="parameter">
        /// The parameter.
        /// </param>
        public void Refresh(IWebMethodCallResultField model, IWebServiceMethodParameterDescription parameter)
        {
            if (parameter == null)
                throw new ArgumentNullException("parameter");

            Name = parameter.Name;
            DeclaringType = null;
            BaseType = parameter.ParameterType;
            Model = model;

            UpdateChildren(false);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="WebMethodCallResultViewModel"/> class.
        /// </summary>
        /// <param name="model">
        /// The model.
        /// </param>
        /// <param name="parameter">
        /// The parameter.
        /// </param>
        /// <param name="parentSettings">
        /// The parent settings.
        /// </param>
        /// <param name="popupFactory">
        /// The popup factory.
        /// </param>
        /// <param name="selectChildTypeFieldsViewModel">
        /// The select child type fields view model.
        /// </param>
        /// <param name="resultViewModelFactory">
        /// The result view model factory.
        /// </param>
        /// <param name="resultFieldFactory">
        /// The result field factory.
        /// </param>
        public WebMethodCallResultViewModel(
            IWebMethodCallResultField model,
            IWebServiceMethodParameterDescription parameter,
            IWebMethodCallSettingsViewModel parentSettings,
            PopupFactory popupFactory,
            ISelectChildTypeFieldsViewModel selectChildTypeFieldsViewModel,
            IWebMethodCallResultViewModelFactory resultViewModelFactory,
            IWebMethodCallResultFieldFactory resultFieldFactory)
        {
            if (parameter == null)
                throw new ArgumentNullException("parameter");

            if (parentSettings == null)
                throw new ArgumentNullException("parentSettings");

            if (popupFactory == null)
                throw new ArgumentNullException("popupFactory");

            if (selectChildTypeFieldsViewModel == null)
                throw new ArgumentNullException("selectChildTypeFieldsViewModel");

            if (resultViewModelFactory == null)
                throw new ArgumentNullException("resultViewModelFactory");

            if (resultFieldFactory == null)
                throw new ArgumentNullException("resultFieldFactory");

            _model = model;
            _name = parameter.Name;
            _baseType = parameter.ParameterType;
            _parentSettings = parentSettings;
            PopupFactory = popupFactory;
            SelectChildTypeFieldsViewModel = selectChildTypeFieldsViewModel;
            ResultViewModelFactory = resultViewModelFactory;
            ResultFieldFactory = resultFieldFactory;
        }
 /// <summary>
 /// Creates a <see cref="IWebMethodCallParameter"/> based on the specified parameter description.
 /// </summary>
 /// <param name="parameter">
 /// The parameter description.
 /// </param>
 /// <returns>
 /// The <see cref="IWebMethodCallParameter"/>.
 /// </returns>
 public IWebMethodCallParameter CreateParameter(IWebServiceMethodParameterDescription parameter)
 {
     return WebMethodCallParameterEdit.CreateParameter(parameter);
 }
 /// <summary>
 /// Creates a <see cref="IWebMethodCallResultViewModel"/>.
 /// </summary>
 /// <param name="model">
 /// The model.
 /// </param>
 /// <param name="parameter">
 /// The parameter.
 /// </param>
 /// <param name="parentSettings">
 /// The parent settings.
 /// </param>
 /// <returns>
 /// The <see cref="IWebMethodCallResultViewModel"/>.
 /// </returns>
 public IWebMethodCallResultViewModel CreateViewModel(
     IWebMethodCallResultField model,
     IWebServiceMethodParameterDescription parameter,
     IWebMethodCallSettingsViewModel parentSettings)
 {
     return new WebMethodCallResultViewModel(model, parameter, parentSettings, PopupFactory, SelectChildTypeFieldsViewModel, this, ResultFieldFactory);
 }
        private SourceField CreateSourceField(
            IWebServiceMethodParameterDescription parameter,
            IWebMethodCallResultField resultField,
            ExpressionObjectBase owner)
        {
            var dataType = GetNodeDataType(parameter.ParameterType);
            var retriever = GetSubfieldsRetriever(parameter.ParameterType, resultField != null ? resultField.Fields : null);
            var result = new SourceField(owner)
                         {
                             DataType = dataType,
                             Name = parameter.Name,
                             ConnectorOut = { DataType = dataType, Name = parameter.Name },
                             InnerName = parameter.Name,
                             SystemName = parameter.Name,
                             SubfieldsRetriever = retriever,
                             SetName = SourceFieldSetNames.IntegrationWebMethodCallResultItem
                         };

            return result;
        }
 private bool CanBeSourceField(IWebServiceMethodParameterDescription parameter)
 {
     return parameter.ParameterType != null;
 }