public void ConvertShouldReturnNullIfFieldIsNull()
        {
            var converter = new ProcessViewFieldCustomConfigEditorConverter { IsInitialized = true };

            var vm = new ProcessViewFieldViewModel(null, null);
            
            Assert.IsNull(converter.Convert(vm, null, null, null));
        }
        public void ConvertShouldReturnNullIfTemplateFieldIsNotFound()
        {
            var converter = new ProcessViewFieldCustomConfigEditorConverter
                                {
                                    IsInitialized = true,
                                    ProcessViewManager = new ProcessViewManager
                                    {
                                        ProcessViewsFactory = new[]
                                        {
                                            new Lazy<IProcessViewTemplate, IExportAsProcessViewTemplateAttributeMetadata>(() => new DataCollectProcessViewTemplate(), null), 
                                            new Lazy<IProcessViewTemplate, IExportAsProcessViewTemplateAttributeMetadata>(() => new APQPProcessViewTemplate(), null), 
                                            new Lazy<IProcessViewTemplate, IExportAsProcessViewTemplateAttributeMetadata>(() => new DocumentProcessViewTemplate(), null), 
                                        }
                                    }
                                };

            var vm = new ProcessViewFieldViewModel(new ProcessViewFieldEdit { TemplateFieldGuid = Guid.Empty }, null);

            Assert.IsNull(converter.Convert(vm, null, null, null));
        }
        public void ConvertShouldReturnNullIfTemplateFieldCustomConfiguratorIsNull()
        {
            var dataCollectionTemplate = new DataCollectProcessViewTemplate();
            var converter = new ProcessViewFieldCustomConfigEditorConverter
            {
                IsInitialized = true,
                ProcessViewManager = new ProcessViewManager
                {
                    ProcessViewsFactory = new[]
                                        {
                                            new Lazy<IProcessViewTemplate, IExportAsProcessViewTemplateAttributeMetadata>(() => dataCollectionTemplate, null), 
                                            new Lazy<IProcessViewTemplate, IExportAsProcessViewTemplateAttributeMetadata>(() => new APQPProcessViewTemplate(), null), 
                                            new Lazy<IProcessViewTemplate, IExportAsProcessViewTemplateAttributeMetadata>(() => new DocumentProcessViewTemplate(), null), 
                                        }
                }
            };

            var checkListField = dataCollectionTemplate.Sections.SelectMany(s => s.Fields).FirstOrDefault(f => f.Guid == DataCollectProcessViewTemplate.ChecklistFieldGuid);
            Mock.Arrange(() => checkListField.CustomConfigurator).Returns((IProcessViewFieldCustomConfigurator)null);

            var vm = new ProcessViewFieldViewModel(new ProcessViewFieldEdit { TemplateFieldGuid = DataCollectProcessViewTemplate.ChecklistFieldGuid }, null);

            Assert.IsNull(converter.Convert(vm, null, null, null));
        }
        public void ConvertShouldReturnTemplateFieldCustomConfigurator()
        {
            var dataCollectionTemplate = new DataCollectProcessViewTemplate();
            var converter = new ProcessViewFieldCustomConfigEditorConverter
            {
                IsInitialized = true,
                ProcessViewManager = new ProcessViewManager
                {
                    ProcessViewsFactory = new[]
                                        {
                                            new Lazy<IProcessViewTemplate, IExportAsProcessViewTemplateAttributeMetadata>(() => dataCollectionTemplate, null), 
                                            new Lazy<IProcessViewTemplate, IExportAsProcessViewTemplateAttributeMetadata>(() => new APQPProcessViewTemplate(), null), 
                                            new Lazy<IProcessViewTemplate, IExportAsProcessViewTemplateAttributeMetadata>(() => new DocumentProcessViewTemplate(), null), 
                                        }
                },
                FieldConfigurators = new[]
                                         {
                                             new Lazy<IProcessViewFieldCustomConfigViewModel, IExportAsProcessViewFieldCustomConfigViewModelAttributeMetadata>(Mock.Create<IProcessViewFieldCustomConfigViewModel>, new ExportAsProcessViewFieldCustomConfigViewModelAttribute(typeof(DataCollectProcessViewChecklistFieldConfigurator))), 
                                         }
            };

            var vm = new ProcessViewFieldViewModel(new ProcessViewFieldEdit { TemplateFieldGuid = DataCollectProcessViewTemplate.ChecklistFieldGuid }, null);

            Assert.IsNotNull(converter.Convert(vm, null, null, null));
        }
 /// <summary>
 /// Determines whether this instance [can execute change field icon] the specified object.
 /// </summary>
 /// <param name="obj">The object.</param>
 /// <returns><c>true</c> if this instance [can execute change field icon] the specified object; otherwise, <c>false</c>.</returns>
 private bool CanExecuteChangeFieldIcon(ProcessViewFieldViewModel obj)
 {
     var setcionTemplate = SelectedSectionTemplate;
     return setcionTemplate != null && !setcionTemplate.IsFieldSetFixed && obj != null && obj.Model.ShowIcon && AllowAddRemoveObjects;
 }
        /// <summary>
        /// Executes the change field icon.
        /// </summary>
        /// <param name="obj">The object.</param>
        private void ExecuteChangeFieldIcon(ProcessViewFieldViewModel obj)
        {
            var iconListViewModel = IconListFactory.CreateExport().Value;
            iconListViewModel.LoadIcons();

            if (obj.Model.IconId.HasValue)
            {
                iconListViewModel.SelectedIconId = obj.Model.IconId.Value;
            }

            ThePopupFactory.Value.Popup()
                .SetCaption(LanguageService.Translate("Msg_SelectIcon"))
                .SetPosition(PopupPosition.Center)
                .SetCustomViewModel(iconListViewModel)
                .SetIsModal(true)
                .Show(() =>
                {
                    obj.Model.IconId = iconListViewModel.SelectedIconId;
                });
        }
 /// <summary>
 /// Executes the remove section field.
 /// </summary>
 /// <param name="obj">The object.</param>
 private void ExecuteRemoveSectionField(ProcessViewFieldViewModel obj)
 {
     SelectedSection.Model.FieldList.Remove(obj.Model);
     SelectedSection.Fields.Remove(obj);
 }
 /// <summary>
 /// Determines whether this instance [can execute remove section field] the specified object.
 /// </summary>
 /// <param name="obj">The object.</param>
 /// <returns><c>true</c> if this instance [can execute remove section field] the specified object; otherwise, <c>false</c>.</returns>
 private bool CanExecuteRemoveSectionField(ProcessViewFieldViewModel obj)
 {
     var sectionTemplate = SelectedSectionTemplate;
     return sectionTemplate != null && !sectionTemplate.IsFieldSetFixed && obj != null && AllowAddRemoveObjects;
 }
        /// <summary>
        /// Executes the add section field.
        /// </summary>
        /// <param name="obj">The object.</param>
        private void ExecuteAddSectionField(object obj)
        {
            var item = ProcessViewFieldEdit.NewItem();
            item.DisplayOrder = SelectedSection.Model.FieldList.DefaultIfEmpty().Max(f => f == null ? 0.0 : f.DisplayOrder) + 1.0;
            SelectedSection.Model.FieldList.Add(item);

            var fieldViewModel = new ProcessViewFieldViewModel(item, SelectedSection);

            SelectedSection.Fields.Add(fieldViewModel);
        }
 /// <summary>
 /// Handles the <see cref="E:ModelChildChanged" /> event.
 /// </summary>
 /// <param name="viewModel">The view model.</param>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="ChildChangedEventArgs"/> instance containing the event data.</param>
 private static void OnModelChildChanged(ProcessViewFieldViewModel viewModel, object sender, ChildChangedEventArgs e)
 {
     if (e.ChildObject is FieldEdit || e.ChildObject is FieldList || e.ChildObject is ProcessSections || e.ChildObject is SectionEdit)
     {
         viewModel.RaisePropertyChanged(() => viewModel.AvailableFields);
     }
 }
        /// <summary>
        /// Sets the model.
        /// </summary>
        /// <param name="model">The model.</param>
        private void SetModel(ProcessViewSectionEdit model)
        {
            Model = model;
            if (ProcessViewManager != null)
                Model.ShowFieldList = ProcessViewManager.ShowFields(Model.TemplateSectionGuid);
            Fields.Clear();

            if (Model != null)
            {
                foreach (var field in Model.FieldList)
                {
                    var viewModel = new ProcessViewFieldViewModel(field, this);

                    Fields.Add(viewModel);
                }

                foreach (var stepEdit in Model.StepList)
                {
                    var stepVmExport = StepViewModels.FirstOrDefault(vm => vm.Metadata.StepType == stepEdit.GetType());
                    if (stepVmExport != null)
                    {
                        var stepVm = stepVmExport.CreateExport().Value;
                        stepVm.Init(stepEdit, this);
                        Steps.Add(stepVm);
                    }
                }
            }
        }