Esempio n. 1
0
        public IReadOnlyList <T> LoadFromTemplate <T>(TemplateType templateType)
        {
            _buildingBlockTypeString = _objectTypeResolver.TypeFor <T>();
            _view.Caption            = PKSimConstants.UI.LoadBuildingBlockFromTemplate(_buildingBlockTypeString);
            _shouldAddItemIcons      = !_templateTaskQuery.IsPrimitiveType(templateType);

            updateIcon(templateType);

            _availableBuildingBlocks = _templateTaskQuery.AllTemplatesFor(templateType);
            if (!_availableBuildingBlocks.Any())
            {
                throw new NoBuildingBlockTemplateAvailableException(_buildingBlockTypeString);
            }

            var userTemplateNode   = _treeNodeFactory.CreateFor(PKSimRootNodeTypes.UserTemplates);
            var systemTemplateNode = _treeNodeFactory.CreateFor(PKSimRootNodeTypes.SystemTemplates);

            addTemplatesTo(userTemplateNode, TemplateDatabaseType.User);
            addTemplatesTo(systemTemplateNode, TemplateDatabaseType.System);

            updateView();
            _view.Display();

            if (_view.Canceled)
            {
                return(new List <T>());
            }

            return(shouldLoadTemplateWithReferences() ? loadMultipleTemplate <T>() : loadSingleTemplate <T>());
        }
        public Task <IReadOnlyList <T> > LoadFromTemplateAsync <T>(TemplateType templateType)
        {
            _templateTypeDisplay = templateType.ToString();
            _view.Caption        = PKSimConstants.UI.LoadItemFromTemplate(_templateTypeDisplay);
            _shouldAddItemIcons  = !_templateTaskQuery.IsPrimitiveType(templateType);

            updateIcon(templateType);

            _availableTemplates.AddRange(_templateTaskQuery.AllTemplatesFor(templateType)
                                         .Where(x => x.IsSupportedByCurrentVersion(_configuration.Version))
                                         .OrderBy(x => x.Name));

            if (!_availableTemplates.Any())
            {
                throw new NoTemplateAvailableException(_templateTypeDisplay);
            }

            updateView();
            _view.Display();

            if (_view.Canceled)
            {
                return(Task.FromResult <IReadOnlyList <T> >(Array.Empty <T>()));
            }

            return(shouldLoadTemplateWithReferences(templateType) ? loadMultipleTemplate <T>() : loadSingleTemplate <T>());
        }
        protected void AddExistingTemplateNames(Template template, ObjectBaseDTO dto)
        {
            var allTemplates = _templateTaskQuery.AllTemplatesFor(template.DatabaseType, template.Type);

            dto.AddUsedNames(allTemplates.Select(x => x.Name));
            dto.ContainerType = PKSimConstants.UI.TemplateDatabase;
        }
Esempio n. 4
0
        public IReadOnlyList <T> LoadFromTemplate <T>(TemplateType templateType)
        {
            var    allTemplates            = new List <T>();
            string buildingBlockTypeString = _objectTypeResolver.TypeFor <T>();

            _view.Caption       = PKSimConstants.UI.LoadBuildingBlockFromTemplate(buildingBlockTypeString);
            _shouldAddItemIcons = !_templateTaskQuery.IsPrimitiveType(templateType);

            updateIcon(templateType);

            _availableBuildingBlocks = _templateTaskQuery.AllTemplatesFor(templateType);
            if (!_availableBuildingBlocks.Any())
            {
                throw new NoBuildingBlockTemplateAvailableException(buildingBlockTypeString);
            }

            var userTemplateNode   = _treeNodeFactory.CreateFor(PKSimRootNodeTypes.UserTemplates);
            var systemTemplateNode = _treeNodeFactory.CreateFor(PKSimRootNodeTypes.SystemTemplates);

            addTemplatesTo(userTemplateNode, TemplateDatabaseType.User);
            addTemplatesTo(systemTemplateNode, TemplateDatabaseType.System);

            updateView();
            _view.Display();

            if (_view.Canceled)
            {
                return(allTemplates);
            }

            if (_selectedTemplate.HasReferences)
            {
                if (_dialogCreator.MessageBoxYesNo(PKSimConstants.UI.DoYouWantToLoadReferencedTemplateAsWell) == ViewResult.Yes)
                {
                    return(loadMultipleTemplate <T>());
                }
            }

            allTemplates.Add(loadSingleTemplate <T>());
            return(allTemplates);
        }
Esempio n. 5
0
        private LocalTemplate templateItemFor(IPKSimBuildingBlock buildingBlockToSave, TemplateDatabaseType templateDatabaseType)
        {
            string buildingBlockName = buildingBlockToSave.Name;
            string buildingBlockType = TypeFor(buildingBlockToSave);
            var    templateType      = buildingBlockToSave.BuildingBlockType.AsTemplateType();

            if (_templateTaskQuery.Exists(templateDatabaseType, buildingBlockName, templateType))
            {
                var result = _dialogCreator.MessageBoxYesNoCancel(PKSimConstants.UI.TemplateWithNameAlreadyExistsInTheDatabase(buildingBlockToSave.Name, buildingBlockType),
                                                                  PKSimConstants.UI.Override, PKSimConstants.UI.SaveAs, PKSimConstants.UI.CancelButton);

                //user does not want to override
                if (result == ViewResult.Cancel)
                {
                    return(null);
                }

                //retrieve a new name
                if (result == ViewResult.No)
                {
                    var allTemplateNames = _templateTaskQuery.AllTemplatesFor(templateDatabaseType, templateType).Select(x => x.Name);
                    buildingBlockName = _entityTask.NewNameFor(buildingBlockToSave, allTemplateNames);
                    if (string.IsNullOrEmpty(buildingBlockName))
                    {
                        return(null);
                    }
                }
            }

            Load(buildingBlockToSave);
            return(new LocalTemplate
            {
                Name = buildingBlockName,
                Description = buildingBlockToSave.Description,
                Object = buildingBlockToSave,
                Type = templateType,
                DatabaseType = templateDatabaseType
            });
        }