private void LoadDirectory(string directoryPath, IProjectItem parentItem) { FileInfo[] files = (new DirectoryInfo(directoryPath)).GetFiles(); for (int i = 0; i < (int)files.Length; i++) { FileInfo fileInfo = files[i]; if ((fileInfo.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) { Microsoft.Expression.Framework.Documents.DocumentReference documentReference = Microsoft.Expression.Framework.Documents.DocumentReference.Create(fileInfo.FullName); IDocumentType documentType = this.GetDocumentType(fileInfo.FullName); this.AddItemDuringLoad(documentType, documentReference, parentItem); } } string[] directories = Directory.GetDirectories(directoryPath); for (int j = 0; j < (int)directories.Length; j++) { string str = directories[j]; if (((new DirectoryInfo(str)).Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) { IDocumentType item = base.Services.DocumentTypes()[DocumentTypeNamesHelper.Folder]; string str1 = string.Concat(str, Path.DirectorySeparatorChar); FolderProjectItem folderProjectItem = this.AddItemDuringLoad(item, Microsoft.Expression.Framework.Documents.DocumentReference.Create(str1), parentItem) as FolderProjectItem; if (this.ShouldInitializeFolder(folderProjectItem)) { this.LoadDirectory(str, folderProjectItem); } } } }
private void EnsureDeepZoomProjectItems(IProjectItem deepZoomProjectItem) { string[] directoryExtensions = DeepZoomHelper.GetDirectoryExtensions(deepZoomProjectItem.DocumentReference.Path); if (directoryExtensions != null) { string[] strArrays = directoryExtensions; for (int i = 0; i < (int)strArrays.Length; i++) { string str = strArrays[i]; Microsoft.Expression.Framework.Documents.DocumentReference documentReference = DeepZoomHelper.CreateDeepZoomDirectoryReference(deepZoomProjectItem.DocumentReference, str); IProjectItem projectItem = base.FindItem(documentReference); if (projectItem != null && !deepZoomProjectItem.Children.ToList <IProjectItem>().Contains(projectItem)) { this.RemoveProjectItem(projectItem, false); projectItem = null; } if (projectItem == null && Microsoft.Expression.Framework.Documents.PathHelper.FileOrDirectoryExists(documentReference.Path)) { IProjectItem folderProjectItem = new FolderProjectItem(this, documentReference, base.Services.DocumentTypes()[DocumentTypeNamesHelper.Folder], base.Services, true, Microsoft.Expression.Project.FileTable.GetImageSource("Resources\\Folder_DeepZoom.png")); if (this.AddProjectItem(folderProjectItem, ProjectItemEventOptions.None)) { deepZoomProjectItem.AddChild(folderProjectItem); } } } } }
public override ICommandBar GetContextMenu(ICommandBarCollection commandBarCollection) { if (this.IsUIBlockingFolder) { return(null); } if (base.Services.ProjectManager().CurrentSolution != null && base.Services.ProjectManager().CurrentSolution.IsSourceControlActive) { FolderProjectItem.DestroyContextMenu(); } if (FolderProjectItem.contextMenu == null) { FolderProjectItem.contextMenu = commandBarCollection.AddContextMenu("Project_FolderProjectItemContextMenu"); FolderProjectItem.contextMenu.Items.AddButton("Application_AddNewItem", StringTable.ProjectItemContextMenuAddNewItem); FolderProjectItem.contextMenu.Items.AddButton("Project_AddExistingItem", StringTable.ProjectItemContextMenuAddExistingItem); FolderProjectItem.contextMenu.Items.AddButton("Project_LinkToExistingItem", StringTable.ProjectItemContextMenuLinkToExistingItem); FolderProjectItem.contextMenu.Items.AddSeparator(); ProjectManager.AddSourceControlMenuItems(FolderProjectItem.contextMenu.Items); FolderProjectItem.contextMenu.Items.AddSeparator(); FolderProjectItem.contextMenu.Items.AddButton("Project_NewFolder", StringTable.ProjectItemContextMenuNewFolder); FolderProjectItem.contextMenu.Items.AddButton("Project_Refresh", StringTable.ProjectItemContextMenuRefresh); FolderProjectItem.contextMenu.Items.AddSeparator(); FolderProjectItem.contextMenu.Items.AddButton("Project_Cut", StringTable.ProjectItemContextMenuCut); FolderProjectItem.contextMenu.Items.AddButton("Project_Copy", StringTable.ProjectItemContextMenuCopy); FolderProjectItem.contextMenu.Items.AddButton("Project_Paste", StringTable.ProjectItemContextMenuPaste); FolderProjectItem.contextMenu.Items.AddButton("Project_RenameProjectItem", StringTable.ProjectItemContextMenuRename); FolderProjectItem.contextMenu.Items.AddSeparator(); FolderProjectItem.contextMenu.Items.AddButton("Project_DeleteProjectItem", StringTable.ProjectItemContextMenuDelete); FolderProjectItem.contextMenu.Items.AddSeparator(); FolderProjectItem.contextMenu.Items.AddButton("Project_ExploreProject", StringTable.ProjectItemContextMenuExplore); } return(FolderProjectItem.contextMenu); }
private bool ShouldInitializeFolder(FolderProjectItem item) { if (item == null) { return(true); } return(!item.IsUIBlockingFolder); }
private void RefreshDirectory(string directoryPath, bool selectNewlyCreatedItems) { if (!Microsoft.Expression.Framework.Documents.PathHelper.DirectoryExists(directoryPath)) { return; } CreationOptions creationOption = (selectNewlyCreatedItems ? CreationOptions.None : CreationOptions.DoNotSelectCreatedItems); foreach (FileInfo fileInfo in (new DirectoryInfo(directoryPath)).EnumerateFiles()) { if ((fileInfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden) { continue; } Microsoft.Expression.Framework.Documents.DocumentReference documentReference = Microsoft.Expression.Framework.Documents.DocumentReference.Create(fileInfo.FullName); IProjectItem projectItem = base.FindItem(documentReference); if (projectItem != null) { IProjectItem updatedItem = this.GetUpdatedItem(projectItem, fileInfo, creationOption); projectItem = (updatedItem != null ? updatedItem : projectItem); } else { IDocumentType documentType = this.GetDocumentType(fileInfo.FullName); DocumentCreationInfo documentCreationInfo = new DocumentCreationInfo() { TargetPath = fileInfo.FullName, CreationOptions = creationOption, DocumentType = documentType }; projectItem = base.CreateProjectItemIfNeeded(documentCreationInfo); if (projectItem == null) { continue; } this.AddProjectItem(projectItem, ProjectItemEventOptions.None); } } foreach (string str in Directory.EnumerateDirectories(directoryPath)) { if (!this.ShouldInitializeFolder(base.FindItem(Microsoft.Expression.Framework.Documents.DocumentReference.Create(str)) as FolderProjectItem)) { continue; } this.RefreshDirectory(str, selectNewlyCreatedItems); } if (directoryPath != base.ProjectRoot.Path) { Microsoft.Expression.Framework.Documents.DocumentReference documentReference1 = Microsoft.Expression.Framework.Documents.DocumentReference.Create(string.Concat(directoryPath, Path.DirectorySeparatorChar)); if (base.FindItem(documentReference1) == null) { IProjectItem folderProjectItem = new FolderProjectItem(this, documentReference1, base.Services.DocumentTypes()[DocumentTypeNamesHelper.Folder], base.Services); base.AddProjectItem(folderProjectItem); } } }
private void PlaceItemInFolder(IProjectItem projectItem) { string parentDirectory = Microsoft.Expression.Framework.Documents.PathHelper.GetParentDirectory(projectItem.DocumentReference.Path); if (!string.IsNullOrEmpty(parentDirectory)) { Microsoft.Expression.Framework.Documents.DocumentReference documentReference = Microsoft.Expression.Framework.Documents.DocumentReference.Create(parentDirectory); if (base.DocumentReference.Equals(documentReference)) { return; } IProjectItem item = base.Items[documentReference.GetHashCode()]; if (item == null) { item = new FolderProjectItem(this, documentReference, base.Services.DocumentTypes()[DocumentTypeNamesHelper.Folder], base.Services); base.AddProjectItem(item); } if (item.CanAddChildren) { item.AddChild(projectItem); } } }