예제 #1
0
        /// <summary>
        /// コピーメニューボタンイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CopyMenuItem_Click(object sender, EventArgs e)
        {
            DirectoryAnalyzeData[] analyzeDataList = folderViewControl.SelectedItems;

            StringBuilder copyData = new StringBuilder();

            IParser parser = new CsvParser('\t');
            // 現在選択されている行データをコピー
            foreach (DirectoryAnalyzeData analyzeData in analyzeDataList)
            {
                // 各セルのデータはタブで区切る
                foreach (string parseData in analyzeData.Parse(parser))
                {
                    copyData.AppendLine(parseData);
                }
            }

            // クリップボードに登録する。
            if (copyData.Length > 0)
            {
                Clipboard.Clear();
                Clipboard.SetText(copyData.ToString(), new TextDataFormat());
            }
        }
예제 #2
0
        /// <summary>
        /// ファイル保存ボタンクリックイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FileSaveAsMenuItem_Click(object sender, EventArgs e)
        {
            FileDialog fileDialog = new SaveFileDialog();
            fileDialog.Filter = CsvParser.Filter + "|" + HtmlParser.Filter + "|" + TextParser.Filter;

            if (fileDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            IParser parser = null;
            String extension = Path.GetExtension(fileDialog.FileName).ToLower();
            if (0 <= Array.IndexOf(CsvParser.Extentions, extension))
            {
                parser = new CsvParser();
            }
            else if (0 <= Array.IndexOf(HtmlParser.Extentions, extension))
            {
                parser = new HtmlParser();
            }
            else
            {
                parser = new TextParser();
            }

            folderViewControl.Save(parser, fileDialog.FileName);
        }
예제 #3
0
        /// <summary>
        /// 文字列配列のデータをCSV形式に変換を行います。
        /// </summary>
        /// <param name="srcData">変換元のデータ</param>
        public string[] Parse(DirectoryAnalyzeData srcData, bool isAllData)
        {
            List<string> parseData = new List<string>();

            if (isAllData == true)
            {
                // 内部ファイル
                List<DirectoryAnalyzeData> subFileList = new List<DirectoryAnalyzeData>();
                subFileList.AddRange(srcData.FileData);
                subFileList.AddRange(srcData.SubDirectoryData);
                for (int subIndex = 0; subIndex < subFileList.Count; subIndex++)
                {
                    string line = string.Empty;
                    if (subIndex < subFileList.Count -1)
                    {
                        line = " |-";
                    }
                    else
                    {
                        line = " L ";
                    }
                    parseData.Add(line + Parse(subFileList[subIndex], false)[0]);

                    string[] subFileData = Parse(subFileList[subIndex], true);
                    foreach (string subData in subFileData)
                    {
                        line = "   ";
                        if (subIndex < subFileList.Count - 1)
                        {
                            line = " | ";
                        }
                        parseData.Add(line + subData);
                    }
                }
            }
            else
            {
                CsvParser csvParser = new CsvParser('\t');
                parseData.AddRange(csvParser.Parse(srcData, false));
            }

            return parseData.ToArray();
        }