public ProjectItemContainerNode(IFolderNode node, Lazy <ISolutionExplorerNodeFactory> nodeFactory) : this( node, nodeFactory, new Lazy <IVsHierarchyItem>(() => node.AsVsHierarchyItem()), new Lazy <ProjectItems>(() => node.AsVsHierarchyItem().GetExtenderObject <ProjectItem>().ProjectItems)) { }
public bool VisitLeave(IFolderNode folder) { if (filterItem(folder)) return false; stack.Pop(); nodesToBeDeleted.Add(folder); return true; }
public static string NewFolderName(this IFolderNode node) { var subdirs = node.Children.OfType <IFolderNode>().ToList(); if (subdirs.Any(x => x.Name.StartsWith("New Folder"))) { var lastIndex = FindLastNewFolder(subdirs); return(string.Format("New Folder ({0})", lastIndex + 1)); } return("New Folder"); }
public bool VisitLeave(IFolderNode folder) { if (filterItem(folder)) { return(false); } stack.Pop(); nodesToBeDeleted.Add(folder); return(true); }
/// <summary> /// Visists the given visitor with the specified folder. /// </summary> public static bool Accept(IFolderNode folder, ISolutionVisitor visitor) { if (visitor.VisitEnter(folder)) { foreach (var node in folder.Nodes) { if (!node.Accept(visitor)) { break; } } } return(visitor.VisitLeave(folder)); }
public bool VisitEnter(IFolderNode folder) { if (filterItem(folder)) return false; var parent = stack.Peek(); var targetFolder = parent .Nodes .FirstOrDefault(x => string.Equals(x.Name, folder.Name, StringComparison.OrdinalIgnoreCase)); if (targetFolder == null) targetFolder = parent.As<IProjectItemContainerNode>().CreateFolder(folder.Name); stack.Push(targetFolder); return true; }
public bool VisitEnter(IFolderNode folder) { if (filterItem(folder)) { return(false); } var parent = stack.Peek(); var targetFolder = parent .Nodes .FirstOrDefault(x => string.Equals(x.Name, folder.Name, StringComparison.OrdinalIgnoreCase)); if (targetFolder == null) { targetFolder = parent.As <IProjectItemContainerNode>().CreateFolder(folder.Name); } stack.Push(targetFolder); return(true); }
public RemovableProjectItemNode(IFolderNode node) { hierarchyNode = new Lazy<IVsHierarchyItem>(() => node.AsVsHierarchyItem()); }
public static IFolderNode CreateFolder(this IFolderNode folder, string name) => folder.AsContainerNode().CreateFolder(name);
/// <summary> /// Adapts a <see cref="IFolderNode"/> to an <see cref="IVsHierarchy"/>. /// </summary> /// <returns>The <see cref="IVsHierarchy"/> or <see langword="null"/> if conversion is not possible.</returns> public static IVsHierarchy AsVsHierarchy(this IFolderNode folder) => folder.As <IVsHierarchy>();
public DeletableProjectItemNode(IFolderNode node) { hierarchyNode = new Lazy <IVsHierarchyItem>(() => node.AsVsHierarchyItem()); }
/// <summary> /// Begins visiting a project folder. /// </summary> /// <param name="folder">The project folder being visited.</param> /// <returns> /// <see langword="true" /> if the project folder children should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitEnter(IFolderNode folder) { return(true); }
/// <summary> /// Ends visiting a project folder. /// </summary> /// <param name="folder">The project folder being visited.</param> /// <returns> /// <see langword="true" /> if the project folder siblings should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitLeave(IFolderNode folder) { return true; }
public DirectoryRefreshedEventArgs(IFolderNode dir) { Directory = dir; }
public async Task AddRecord(PasswordRecord record, string folderUid) { IFolderNode node = null; if (!string.IsNullOrEmpty(folderUid)) { userFolders.TryGetValue(folderUid, out node); } var recordKey = CryptoUtils.GenerateEncryptionKey(); var recordAdd = new RecordAddCommand { recordUid = CryptoUtils.GenerateUid(), recordKey = CryptoUtils.EncryptAesV1(recordKey, Auth.DataKey).Base64UrlEncode(), recordType = "password" }; if (node == null) { recordAdd.folderType = "user_folder"; } else { switch (node.Type) { case FolderType.UserFolder: recordAdd.folderType = "user_folder"; recordAdd.folderUid = node.FolderUid; break; case FolderType.SharedFolder: case FolderType.SharedFolderForder: recordAdd.folderUid = node.FolderUid; recordAdd.folderType = node.Type == FolderType.SharedFolder ? "shared_folder" : "shared_folder_folder"; if (node is ISharedFolderNode sfn) { if (sharedFolders.TryGetValue(sfn.SharedFolderUid, out SyncDownSharedFolder sf)) { recordAdd.folderKey = CryptoUtils.EncryptAesV1(recordKey, sf.unencryptedSharedFolderKey).Base64UrlEncode(); } } if (string.IsNullOrEmpty(recordAdd.folderKey)) { throw new Exception(string.Format("Cannot resolve shared folder for folder UID", folderUid)); } break; } } var settings = new DataContractJsonSerializerSettings { UseSimpleDictionaryFormat = true }; var dataSerializer = new DataContractJsonSerializer(typeof(RecordData), settings); var data = record.ExtractRecordData(); using (var ms = new MemoryStream()) { dataSerializer.WriteObject(ms, data); recordAdd.data = CryptoUtils.EncryptAesV1(ms.ToArray(), recordKey).Base64UrlEncode(); } await Auth.ExecuteAuthCommand <RecordAddCommand>(recordAdd); await this.SyncDown(); }
/// <summary> /// Ends visiting a project folder. /// </summary> /// <param name="folder">The project folder being visited.</param> /// <returns> /// <see langword="true" /> if the project folder siblings should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitLeave (IFolderNode folder) => true;
/// <summary> /// Begins visiting a project folder. /// </summary> /// <param name="folder">The project folder being visited.</param> /// <returns> /// <see langword="true" /> if the project folder children should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitEnter (IFolderNode folder) => true;
/// <summary> /// Ends visiting a project folder. /// </summary> /// <param name="folder">The project folder being visited.</param> /// <returns> /// <see langword="true" /> if the project folder siblings should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitLeave(IFolderNode folder) => true;
/// <summary> /// Begins visiting a project folder. /// </summary> /// <param name="folder">The project folder being visited.</param> /// <returns> /// <see langword="true" /> if the project folder children should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitEnter(IFolderNode folder) => true;
public static IProjectItemNode AddItem(this IFolderNode folder, string path) => folder.AsContainerNode().AddItem(path);
public static IList <IFileNode> Files(this IFolderNode node) { return(node.Children.OfType <IFileNode>().ToList()); }
/// <summary> /// Begins visiting a project folder. /// </summary> /// <param name="folder">The project folder being visited.</param> /// <returns> /// <see langword="true" /> if the project folder children should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitEnter(IFolderNode folder) { return true; }
public bool VisitLeave(IFolderNode folder) { throw new NotSupportedException(); }
public virtual void Visit(IFolderNode node) { DefaultVisit(node); }
public bool VisitLeave (IFolderNode folder) { throw new NotSupportedException (); }
/// <summary> /// Ends visiting a project folder. /// </summary> /// <param name="folder">The project folder being visited.</param> /// <returns> /// <see langword="true" /> if the project folder siblings should be visited; <see langword="false" /> otherwise. /// </returns> public virtual bool VisitLeave(IFolderNode folder) { return(true); }
public bool VisitLeave(IFolderNode folder) => false;
/// <summary> /// Visists the given visitor with the specified folder. /// </summary> public static bool Accept(IFolderNode folder, ISolutionVisitor visitor) { if (visitor.VisitEnter(folder)) { foreach (var node in folder.Nodes) { if (!node.Accept(visitor)) break; } } return visitor.VisitLeave(folder); }
public static void Delete(this IFolderNode folder) => folder.AsDeletableNode().Delete();
/// <summary> /// Adapts a <see cref="IFolderNode"/> to an <see cref="IVsHierarchyItem"/>. /// </summary> /// <returns>The <see cref="IVsHierarchyItem"/> or <see langword="null"/> if conversion is not possible.</returns> public static IVsHierarchyItem AsVsHierarchyItem(this IFolderNode folder) => folder.As <IVsHierarchyItem>();
internal static IRemovableNode AsRemovableNode(this IFolderNode folder) => folder.As <IRemovableNode>();
internal static IProjectItemContainerNode AsContainerNode(this IFolderNode folder) => folder.As <IProjectItemContainerNode>();
public static void Remove(this IFolderNode folder) => folder.AsRemovableNode().Remove();
public bool VisitEnter(IFolderNode folder) => false;
internal static IDeletableNode AsDeletableNode(this IFolderNode folder) => folder.As <IDeletableNode>();