public SolutionFolderViewModel(SolutionModel solution, SolutionFolderModel folderParent, SolutionFolderModel folder) { _solution = solution; _folderParent = folderParent; _folder = folder; InitProperties(); }
/// <summary> /// Carga los datos de la definición de la web /// </summary> private SolutionFolderModel LoadFolder(SolutionModel solution, MLNode nodeML) { SolutionFolderModel folder = new SolutionFolderModel(solution); // Carga los datos del nodo foreach (MLNode childML in nodeML.Nodes) { switch (childML.Name) { case TagName: folder.Name = childML.Value; break; case TagDescription: folder.Description = childML.Value; break; case TagFolder: folder.Folders.Add(LoadFolder(solution, childML)); break; case TagFile: folder.Projects.Add(LoadProject(solution, childML.Value)); break; } } // Devuelve la carpeta cargada return(folder); }
/// <summary> /// Graba los datos /// </summary> protected override void Save() { if (ValidateData()) { // Crea / modifica el directorio if (_folder == null) { // Crea la carpeta y le asigna el nombre _folder = new SolutionFolderModel(_solution); _folder.Name = Name; // Añade la carpeta a la solución o a la carpeta padre if (_folderParent == null) { _solution.Folders.Add(_folder); } else { _folderParent.Folders.Add(_folder); } } else { _folder.Name = Name; } // Cierra el formulario RaiseEventClose(true); } }
/// <summary> /// Crea un proyecto /// </summary> public ProjectModel Create(SolutionModel solution, SolutionFolderModel folder, string path) { ProjectModel project = new ProjectModel(solution); // Asigna el directorio y nombre de archivo if (!path.EndsWith(ProjectModel.FileName)) { // Crea el directorio LibCommonHelper.Files.HelperFiles.MakePath(path); // Asigna el nobmre de archivo project.File.FullFileName = System.IO.Path.Combine(path, "WebDefinition.wdx"); } else { project.File.FullFileName = path; } // Añade el proyecto a la solución if (folder != null) { folder.Projects.Add(project); } else { solution.Projects.Add(project); } // Graba la solución new SolutionBussiness().Save(solution); // Devuelve el proyecto return(project); }
private void SyncProjectsAndFolders( SlnFile slnFile, SolutionItemComplexNode slnParent, SolutionFolderModel modelParent, IEnumerable <SolutionFolderModel> modelFolders, List <Node> projectConfigurationPlatforms, IReadOnlyCollection <string> solutionConfigurationPlatforms) { foreach (var projectModel in Projects.Where(x => x.ParentFolder?.Id == modelParent?.Id)) { var path = $"{projectModel.ToOutputTargetConfig().RelativeLocation}\\{projectModel.Name}.{projectModel.FileExtension}".Replace("/", "\\"); if (!slnFile.GetOrCreateProjectNode( typeId: VisualStudioSolution.ProjectTypeIds.CsProject, name: projectModel.Name, path: path, id: projectModel.Id, parentId: slnParent?.Id, project: out var slnProject)) { projectConfigurationPlatforms.AddRange(solutionConfigurationPlatforms .SelectMany( _ => SolutionConfigurationPlatformTypes, (platform, platformType) => new KeyValueNode($"{slnProject.Id}.{platform}.{platformType}", platform))); continue; } slnProject.Values[0] = projectModel.Name; slnProject.Values[1] = path; slnFile.SetParent(slnProject, slnParent); } foreach (var folderModel in modelFolders) { if (slnFile.GetOrCreateProjectNode( typeId: VisualStudioSolution.ProjectTypeIds.SolutionFolder, name: folderModel.Name, path: folderModel.Name, id: folderModel.Id, parentId: slnParent?.Id, project: out var slnFolder)) { slnFolder.Values[0] = folderModel.Name; slnFolder.Values[1] = folderModel.Name; slnFile.SetParent(slnFolder, slnParent); } SyncProjectsAndFolders( slnFile: slnFile, slnParent: slnFolder, modelParent: folderModel, modelFolders: folderModel.Folders, projectConfigurationPlatforms: projectConfigurationPlatforms, solutionConfigurationPlatforms: solutionConfigurationPlatforms); } }
public ProjectNewView(SolutionModel solution, SolutionFolderModel folder) { // Inicializa los componentes InitializeComponent(); // Inicializa el ViewModel ViewModel = new ProjectNewViewModel(solution, folder); DataContext = ViewModel; ViewModel.Close += (sender, result) => { DialogResult = result.IsAccepted; Close(); }; }
public SolutionFolderView(SolutionModel solution, SolutionFolderModel folderParent, SolutionFolderModel folder) { SolutionFolderViewModel viewModel = new SolutionFolderViewModel(solution, folderParent, folder); // Inicializa los componentes InitializeComponent(); // Inicializa el ViewModel DataContext = viewModel; viewModel.Close += (sender, result) => { DialogResult = result.IsAccepted; Close(); }; }
/// <summary> /// Carga los datos de una carpeta de proyecto /// </summary> private SolutionFolderModel LoadFolder(SolutionModel solution, ProjectDefinitionModelCollection definitions, MLNode nodeML) { SolutionFolderModel folder = new SolutionFolderModel(solution); // Asigna las propiedades folder.Name = nodeML.Nodes[TagName].Value; // Carga los proyectos foreach (MLNode childML in nodeML.Nodes) { if (childML.Name == TagProject) { folder.Projects.Add(LoadProject(solution, definitions, childML)); } } // Devuelve la carpeta return(folder); }
public ProjectNewViewModel(SolutionModel solution, SolutionFolderModel folder) { _solution = solution; _folder = folder; InitProperties(); }
public SolutionFolderNodeViewModel(SolutionFolderModel folder) : base(folder.GlobalId, folder.Name, null, true) { Folder = folder; IsBold = true; }
public SolutionFolderNodeViewModel(BaseNodeViewModel parent, SolutionFolderModel folder) : base(folder.GlobalId, folder.Name, parent, true) { Folder = folder; IsBold = true; }
/// <summary> /// Abre la ventana para crear / modificar una carpeta de solución /// </summary> public SystemControllerEnums.ResultType OpenUpdateFolderSolutionView(SolutionModel solution, SolutionFolderModel solutionFolderParent, SolutionFolderModel solutionFolder) { return(DocWriterPlugin.MainInstance.HostPluginsController.HostViewsController.ShowDialog(new SolutionFolderView(solution, solutionFolderParent, solutionFolder))); }
/// <summary> /// Abre la ventana para crear un nuevo proyecto /// </summary> public SystemControllerEnums.ResultType OpenFormNewProject(SolutionModel solution, SolutionFolderModel folder) { return(DocWriterPlugin.MainInstance.HostPluginsController.HostViewsController.ShowDialog(null, new ProjectNewView(solution, folder))); }