예제 #1
0
        /// <summary>
        /// OfficeFileの状態をチェックし、アラート表示、ToolTipの設定を行う。
        /// </summary>
        /// <param name="officeNode"></param>
        private void RefreshOfficeNode(OfficeFileTreeNode officeNode)
        {
            OfficeFile file  = officeNode.TargetFile;
            bool       alert = file.Status != OfficeFileStatus.Normal;

            officeNode.ImageIndex  = officeNode.SelectedImageIndex = (alert ? IMG_EXCEL_ALERT : IMG_EXCEL);
            officeNode.ToolTipText = file.StatusMessage;
        }
예제 #2
0
        private void RefreshFilesDisplay()
        {
            //Filesに存在しないNodeを削除
            //Libraryに存在しないNodeを削除
            //リストの複製を用意し、複製で削除判定。複製のForEach内で本体から削除する。(本体のForEachではないので、列挙中の削除例外は発生しない)
            List <OfficeFileTreeNode> cloneList = this.m_FileRootNode.Nodes.Cast <OfficeFileTreeNode>().ToList();

            cloneList.Where(node => !this.m_TargetProject.ExcelFiles.Any(file => file.FileName == node.TargetFile.FileName)).ToList()
            //このToListの時点で、Librariesに存在しないノードがリストアップされている
            .ForEach(node => this.m_FileRootNode.Nodes.Remove(node));

            //for (int i = this.m_FileRootNode.Nodes.Count - 1; i >= 0; i--) {
            //    OfficeFileTreeNode node = (OfficeFileTreeNode)this.m_FileRootNode.Nodes[i];
            //    if (!this.m_TargetProject.ExcelFiles.Any(x => x.FileName == node.TargetFile.FileName)) {
            //        this.m_FileRootNode.Nodes.Remove(node);
            //    }
            //}

            //FilesとNodeを同期
            for (int i = 0; i < this.m_TargetProject.ExcelFiles.Count; i++)
            {
                OfficeFile file = this.m_TargetProject.ExcelFiles[i];
                AppMain.logger.Debug($"{this.GetType().Name}.RefreshDisplay / Show File. Path={file.FileName}");

                OfficeFileTreeNode node = this.m_FileRootNode.Nodes.Cast <OfficeFileTreeNode>().FirstOrDefault(x => x.TargetFile.FileName == file.FileName);
                if (node == null)
                {
                    node = new OfficeFileTreeNode(file)
                    {
                        ImageIndex = IMG_EXCEL, SelectedImageIndex = IMG_EXCEL
                    };
                    this.m_FileRootNode.Nodes.Add(node);
                }
                node.TargetFile = file;

                //ファイルのエラー状態のチェックなど
                this.RefreshOfficeNode(node);
            }

            if (this.m_FileRootNode.Nodes.Count != 0)
            {
                this.m_FileRootNode.Nodes[0].EnsureVisible();
            }
        }