public override void LinkItemAndFile(ProjectBase project, ItemUri itemUri, string relativeFileName, bool saveProject = true) { Assert.ArgumentNotNull(project, nameof(project)); Assert.ArgumentNotNull(itemUri, nameof(itemUri)); Assert.ArgumentNotNull(relativeFileName, nameof(relativeFileName)); var projectItem = project.ProjectItems.OfType <ProjectFileItem>().FirstOrDefault(i => string.Compare(i.File, relativeFileName, StringComparison.InvariantCultureIgnoreCase) == 0); if (projectItem == null) { projectItem = new ProjectFileItem(project) { File = relativeFileName }; project.Add(projectItem); } if (projectItem.Items.Contains(itemUri)) { return; } projectItem.Items.Add(itemUri); if (saveProject) { project.Save(); } }
public static bool AddToVisualStudioProject([NotNull] this ProjectFileItem projectFile) { Assert.ArgumentNotNull(projectFile, nameof(projectFile)); var project = projectFile.Project.GetVisualStudioProject(); if (project == null) { return(false); } var folder = Path.GetDirectoryName(projectFile.Path); if (folder == null) { return(false); } var parent = CreateVisualStudioFolder(project, folder); if (parent == null) { project.ProjectItems.AddFromFile(projectFile.AbsoluteFileName); } else { parent.ProjectItems.AddFromFile(projectFile.AbsoluteFileName); } return(true); }
private ProjectItem Add([NotNull] CreateItem element) { Debug.ArgumentNotNull(element, nameof(element)); var project = element.Project; var fileName = project.GetProjectItemFileName(element.Item); var result = ProjectFileItem.Load(project, fileName); project.Add(result); foreach (var item in element.Item.ProjectItems) { var subitem = item as EnvDTE.ProjectItem; if (subitem == null) { continue; } fileName = project.GetProjectItemFileName(subitem); project.Add(ProjectFileItem.Load(project, fileName)); } return(result); }
private void FindProjectItem(Type declaringType, Project project) { // TODO: Besser suchen (prüfen ob der Type in dem Item enthalten ist oder so) ProjectFileItem = project.GetItems("Compile").FirstOrDefault(item => item.EvaluatedInclude.Contains(declaringType.Name)); if (ProjectFileItem != null && (ProjectFileItem.GetFile().Exists)) { UpdateLineColumnInfo(); } }
private void LinkItems() { var selectedItems = TreeView.SelectedItems; if (selectedItems.Count != 1) { return; } var selectedItem = selectedItems[0] as ItemTreeViewItem; if (selectedItem == null) { return; } var itemUri = selectedItem.ItemUri; var projects = new List <Project>(); foreach (var item in Items) { var project = ProjectManager.GetProject(item); if (project == null) { continue; } var projectItem = project.GetProjectItem(item); if (projectItem == null) { var fileName = project.GetProjectItemFileName(item); projectItem = ProjectFileItem.Load(project, fileName); project.Add(projectItem); } var projectFile = projectItem as ProjectFileItem; if (projectFile == null) { continue; } projectFile.Items.Add(itemUri); if (!projects.Contains(project)) { projects.Add(project); } } foreach (var project in projects) { project.Save(); } }
/// <summary> /// 保存项目对话框已经加载。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SaveProjectDialog_Load(object sender, EventArgs e) { // 将数据源和文件项目关联起来。 dgvFiles.DataSource = FilesItems; foreach (DataGridViewRow row in dgvFiles.Rows) { ProjectFileItem item = row.DataBoundItem as ProjectFileItem; row.Cells["colCopy"].ReadOnly = !item.IsUnderProjectFolder; } }
protected override void Process(DuplicateItemPipeline pipeline) { Debug.ArgumentNotNull(pipeline, nameof(pipeline)); if (pipeline.NewItemUri == ItemUri.Empty) { return; } var projectFileItem = ProjectManager.GetProjectFileItem(pipeline.ItemUri); if (projectFileItem == null) { return; } var project = projectFileItem.Project; var source = projectFileItem.AbsoluteFileName; var sourceFolder = Path.GetDirectoryName(source) ?? string.Empty; var extension = Path.GetExtension(source); var target = Path.Combine(sourceFolder, pipeline.NewName) + extension; if (!AppHost.Files.FileExists(target)) { AppHost.Files.Copy(source, target, false); } EnvDTE.ProjectItem newProjectItem; try { newProjectItem = SitecorePackage.Instance.Dte.ItemOperations.AddExistingItem(target); } catch (Exception ex) { AppHost.Output.LogException(ex); return; } var fileName = project.GetProjectItemFileName(newProjectItem); var projectItem = ProjectFileItem.Load(project, fileName); projectItem.Items.Add(pipeline.NewItemUri); project.Add(projectItem); project.Save(); var fileItemHandler = FileItemManager.GetFileItemHandler(source); if (fileItemHandler != null) { fileItemHandler.UpdateItemPath(pipeline.NewItemUri, projectItem.Path); } }
private ProjectFileItem AddToProject([NotNull] Project project, [NotNull] EnvDTE.ProjectItem item) { Debug.ArgumentNotNull(project, nameof(project)); Debug.ArgumentNotNull(item, nameof(item)); var fileName = project.GetProjectItemFileName(item); var projectItem = ProjectFileItem.Load(project, fileName); project.Add(projectItem); return(projectItem); }
private void UpdateLineColumnInfo() { var lines = File.ReadAllLines(ProjectFileItem.GetFile().FullName); var line = lines.FirstOrDefault(s => s.ToLower().Contains(string.Format("public void {0}", TestMethodName).ToLower())); if (!string.IsNullOrEmpty(line)) { Line = lines.IndexOf(line) + 1; if (Line > 1) { Column = line.IndexOf(TestMethodName, StringComparison.InvariantCultureIgnoreCase); } } }
private void Add() { var logWindow = new ProjectLogWindow { Maximum = addItems.Count }; logWindow.AutoStart = delegate { var iterator = new ElementIterator <AddItem>(addItems); iterator.Process = delegate(AddItem element) { logWindow.Increment(); if (!element.IsChecked) { iterator.Next(); return; } var project = element.Project; var fileName = project.GetProjectItemFileName(element.Item); var projectItem = ProjectFileItem.Load(project, fileName); project.Add(projectItem); logWindow.Write(projectItem.Path, Rocks.Resources.AddWindow_Add_added, string.Empty); logWindow.Increment(); iterator.Next(); }; iterator.Finish = delegate { logWindow.Write(Rocks.Resources.Finished, string.Empty, string.Empty); logWindow.Finish(); }; iterator.Start(); }; AppHost.Shell.ShowDialog(logWindow); SaveProjects(); }
private void CopyFile([NotNull] List <ProjectBase> projects, [NotNull] DragCopyPipeline.NewItem item) { Debug.ArgumentNotNull(projects, nameof(projects)); Debug.ArgumentNotNull(item, nameof(item)); var projectFileItem = ProjectManager.GetProjectFileItem(item.Item.ItemUri); if (projectFileItem == null) { return; } var project = projectFileItem.Project; var source = projectFileItem.AbsoluteFileName; var sourceFolder = Path.GetDirectoryName(source) ?? string.Empty; var extension = Path.GetExtension(source); var target = Path.Combine(sourceFolder, item.NewName) + extension; AppHost.Files.Copy(source, target, false); var newProjectItem = SitecorePackage.Instance.Dte.ItemOperations.AddExistingItem(target); var fileName = project.GetProjectItemFileName(newProjectItem); var projectItem = ProjectFileItem.Load(project, fileName); projectItem.Items.Add(item.NewItemUri); project.Add(projectItem); if (!projects.Contains(project)) { projects.Add(project); } var fileItemHandler = FileItemManager.GetFileItemHandler(source); if (fileItemHandler == null) { return; } fileItemHandler.UpdateItemPath(item.NewItemUri, projectItem.Path); }
private ProjectItem CreateProjectItem([NotNull] Project project, [NotNull] FileTreeViewItem fileTreeViewItem) { Debug.ArgumentNotNull(project, nameof(project)); Debug.ArgumentNotNull(fileTreeViewItem, nameof(fileTreeViewItem)); var file = fileTreeViewItem.FileUri.FileName; if (project.Contains(file)) { return(null); } var result = new ProjectFileItem(project) { File = file }; return(result); }
protected override void Process(NewItemWizardPipeline pipeline) { Debug.ArgumentNotNull(pipeline, nameof(pipeline)); var project = ProjectManager.GetProject(pipeline.Item); if (project == null) { return; } var extension = Path.GetExtension(pipeline.Item.GetFileName()) ?? string.Empty; if (string.Compare(extension, ".package", StringComparison.InvariantCultureIgnoreCase) != 0) { return; } var fileName = project.GetProjectItemFileName(pipeline.Item); var projectItem = ProjectFileItem.Load(project, fileName); project.Add(projectItem); }
public override void Execute(object parameter) { var context = parameter as IItemSelectionContext; if (context == null) { return; } var item = context.Items.FirstOrDefault(); if (item == null) { return; } if (AppHost.MessageBox("Are you sure you want to rebind any unbound files?", "Rebind File Items", MessageBoxButton.OKCancel, MessageBoxImage.Question) != MessageBoxResult.OK) { return; } ExecuteCompleted callback = delegate(string response, ExecuteResult executeResult) { if (!DataService.HandleExecute(response, executeResult)) { return; } var root = response.ToXElement(); if (root == null) { return; } var project = GetProject(item.ItemUri); if (project == null) { return; } var total = 0; var added = 0; foreach (var element in root.Elements()) { total++; var id = element.GetAttributeValue("id"); var path = element.GetAttributeValue("path"); if (project.Contains(path)) { continue; } var projectItem = new ProjectFileItem(project); projectItem.Items.Add(new ItemUri(item.ItemUri.DatabaseUri, new ItemId(new Guid(id)))); projectItem.File = path; project.Add(projectItem); added++; } project.Save(); AppHost.MessageBox(string.Format("Rebound {0} of {1} file-based item(s).", added, total), "Information", MessageBoxButton.OK, MessageBoxImage.Information); }; var itemUri = item.ItemUri; itemUri.Site.DataService.ExecuteAsync("Projects.RebindFileItems", callback, itemUri.DatabaseUri.DatabaseName.ToString(), itemUri.ItemId.ToString()); }
protected override void Process(NewItemWizardPipeline pipeline) { Debug.ArgumentNotNull(pipeline, nameof(pipeline)); string fileType; if (!pipeline.Tokens.TryGetValue("$filetype$", out fileType)) { return; } if (fileType != FileType) { return; } pipeline.Abort(); var project = ProjectManager.GetProject(pipeline.Item) ?? GetProject(pipeline); if (project == null) { return; } var site = project.Site; if (site == null) { return; } var itemPath = string.Empty; if (pipeline.DatabaseName == null) { var d = new NewItemWizardDialog(); d.Initialize(site, TemplateName); if (AppHost.Shell.ShowDialog(d) != true) { return; } var itemUri = d.ItemUri; if (itemUri == null || itemUri == ItemUri.Empty) { return; } pipeline.DatabaseName = itemUri.DatabaseName; itemPath = d.SelectedPath ?? string.Empty; if (!string.IsNullOrEmpty(itemPath)) { itemPath += "/" + Path.GetFileNameWithoutExtension(pipeline.Item.Name); } } var fileName = project.GetProjectItemFileName(pipeline.Item); var projectItem = ProjectFileItem.Load(project, fileName); project.Add(projectItem); var busy = true; Handle(pipeline, pipeline.DatabaseName, projectItem, itemPath, (sender, args) => busy = false); AppHost.DoEvents(ref busy); pipeline.ProjectItem = projectItem; }
protected override void Process(NewItemWizardPipeline pipeline) { Debug.ArgumentNotNull(pipeline, nameof(pipeline)); var template = pipeline.Template.Replace(@"xmlns=""http://schemas.microsoft.com/developer/vstemplate/2005""", string.Empty); var doc = XDocument.Parse(template); var itemElements = doc.XPathSelectElements(@"/VSTemplate/SitecoreItems/Item").ToList(); if (!itemElements.Any()) { itemElements = doc.XPathSelectElements(@"/VSTemplate/WizardData/SitecoreItems/Item").ToList(); } if (!itemElements.Any()) { return; } var project = ProjectManager.GetProject(pipeline.Item) ?? GetProject(pipeline); if (project == null) { return; } var site = project.Site; if (site == null) { return; } foreach (var element in itemElements) { var databaseName = Expand(pipeline, element.GetAttributeValue("DatabaseName")); var path = Expand(pipeline, element.GetAttributeValue("Path")); var name = Expand(pipeline, element.GetAttributeValue("Name")); var templateName = Expand(pipeline, element.GetAttributeValue("TemplateName")); var fields = new StringBuilder(); var first = true; foreach (var field in element.Elements()) { if (first) { first = false; } else { fields.Append('|'); } fields.Append(Expand(pipeline, field.GetAttributeValue("Name"))); fields.Append('|'); fields.Append(Expand(pipeline, field.GetAttributeValue("Value"))); } ExecuteCompleted completed = delegate(string response, ExecuteResult result) { if (!DataService.HandleExecute(response, result)) { return; } var parts = response.Split('|'); if (parts.Length != 2) { return; } Guid itemId; if (!Guid.TryParse(parts[0], out itemId)) { return; } Guid parentId; if (!Guid.TryParse(parts[1], out parentId)) { return; } var databaseUri = new DatabaseUri(site, new DatabaseName(databaseName)); var itemUri = new ItemUri(databaseUri, new ItemId(itemId)); var parentUri = new ItemUri(itemUri.DatabaseUri, new ItemId(parentId)); var fileName = project.GetProjectItemFileName(pipeline.Item); var projectItem = ProjectFileItem.Load(project, fileName); project.Add(projectItem); projectItem.Items.Add(itemUri); project.Save(); Notifications.RaiseItemAdded(this, new ItemVersionUri(itemUri, LanguageManager.CurrentLanguage, Data.Version.Latest), parentUri); }; site.DataService.ExecuteAsync("Items.CreateItem", completed, databaseName, path, name, templateName, fields.ToString()); } }
private static void Drop([NotNull] object sender, [NotNull] ItemTreeViewItem item, [NotNull] DragEventArgs args) { Debug.ArgumentNotNull(sender, nameof(sender)); Debug.ArgumentNotNull(item, nameof(item)); Debug.ArgumentNotNull(args, nameof(args)); if (!args.Data.GetDataPresent(@"CF_VSSTGPROJECTITEMS")) { return; } var fileName = args.Data.GetData(@"Text") as string ?? string.Empty; try { if (!File.Exists(fileName)) { return; } } catch { return; } var fileItemHandler = FileItemManager.GetFileItemHandler(fileName); if (fileItemHandler == null) { return; } Project project = null; string relativeFileName = null; foreach (var proj in ProjectManager.Projects) { relativeFileName = proj.GetRelativeFileName(fileName); if (relativeFileName == fileName) { continue; } if (proj.Site != item.ItemUri.Site) { continue; } project = proj; break; } if (project == null) { return; } var projectItem = project.GetProjectItem(relativeFileName) as ProjectFileItem; if (projectItem != null) { if (projectItem.Items.Any()) { return; } } projectItem = ProjectFileItem.Load(project, fileName); project.Add(projectItem); project.Save(); var itemPath = Path.Combine(item.GetPath(), Path.GetFileNameWithoutExtension(fileName) ?? string.Empty); fileItemHandler.Handle(item.ItemUri.DatabaseName, projectItem, itemPath, (s, e) => item.Refresh()); }