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());
		}
Exemple #9
0
 public static IFolderNode CreateFolder(this IFolderNode folder, string name) =>
 folder.AsContainerNode().CreateFolder(name);
Exemple #10
0
 /// <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());
 }
Exemple #12
0
 /// <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;
 }
Exemple #14
0
 public DirectoryRefreshedEventArgs(IFolderNode dir)
 {
     Directory = dir;
 }
Exemple #15
0
        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();
        }
Exemple #16
0
		/// <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;
Exemple #17
0
		/// <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;
Exemple #18
0
 /// <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;
Exemple #19
0
 /// <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;
Exemple #20
0
 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);
 }
Exemple #25
0
		public bool VisitLeave (IFolderNode folder)
		{
			throw new NotSupportedException ();
		}
Exemple #26
0
 /// <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);
        }
Exemple #29
0
 public static void Delete(this IFolderNode folder) =>
 folder.AsDeletableNode().Delete();
Exemple #30
0
 /// <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>();
Exemple #31
0
 internal static IRemovableNode AsRemovableNode(this IFolderNode folder) =>
 folder.As <IRemovableNode>();
Exemple #32
0
 internal static IProjectItemContainerNode AsContainerNode(this IFolderNode folder) =>
 folder.As <IProjectItemContainerNode>();
Exemple #33
0
 public static void Remove(this IFolderNode folder) =>
 folder.AsRemovableNode().Remove();
 public bool VisitEnter(IFolderNode folder) => false;
Exemple #35
0
 internal static IDeletableNode AsDeletableNode(this IFolderNode folder) =>
 folder.As <IDeletableNode>();