コード例 #1
0
 /// <summary>
 /// コンポーネントの設定
 /// 対象となるDirComponent配下のコンポーネントを再帰的に取得、設定する。
 /// </summary>
 /// <param name="dirComponent"></param>
 internal static void SetComponent(DirComponent dirComponent)
 {
     foreach (var dir in Directory.GetDirectories(dirComponent.m_strPath))
     {
         var dirComponentSub = new DirComponent(dir);
         SetComponent(dirComponentSub);
         dirComponent.m_listComponent.Add(dirComponentSub);
     }
     foreach (var file in Directory.GetFiles(dirComponent.m_strPath, "*.txt"))
     {
         var fileComponent = new FileComponent(file);
         dirComponent.m_listComponent.Add(fileComponent);
     }
 }
コード例 #2
0
 /// <summary>
 /// EnterCommandの処理を実行する
 /// </summary>
 /// <param name="context"></param>
 internal override void Execute(Context context)
 {
     if (base.m_component.GetType() == typeof(DirComponent))
     {
         // Undo用にカレントコンポーネントを保持
         this.m_beforeComponent = context.m_currentComponent;
         // カレントコンポーネントを設定
         context.m_currentComponent = (DirComponent)base.m_component;
     }
     else
     {
         Common.FileOpen(base.m_component.m_strPath);
         base.m_bStack = false;
     }
 }
コード例 #3
0
 /// <summary>
 /// ディレクトリを作成する
 /// </summary>
 /// <param name="strPathName"></param>
 private void CreateDir(string strPathName)
 {
     if (!Directory.Exists(strPathName))
     {
         Directory.CreateDirectory(strPathName);
         base.m_component.Add(new DirComponent(strPathName));
         // ディレクトリ配下の全ファイル名を取得
         var lstStrFileName = DirComponent.GetAllFileName((DirComponent)base.m_component);
         Common.OutputFileName(lstStrFileName);
     }
     else
     {
         this.m_strErrMessage = Define.TXT_ALREADY_EXIST;
         base.m_bStack        = false;
     }
 }
コード例 #4
0
 /// <summary>
 /// ファイルを作成する
 /// </summary>
 /// <param name="strPathName"></param>
 private void CreateFile(string strPathName)
 {
     strPathName = strPathName + ".txt";
     if (!File.Exists(strPathName))
     {
         File.CreateText(strPathName);
         base.m_component.Add(new FileComponent(strPathName));
         // ディレクトリ配下の全ファイル名を取得
         var lstStrFileName = DirComponent.GetAllFileName((DirComponent)base.m_component);
         Common.OutputFileName(lstStrFileName);
     }
     else
     {
         this.m_strErrMessage = Define.TXT_ALREADY_EXIST;
         base.m_bStack        = false;
     }
 }
コード例 #5
0
 /// <summary>
 /// 親コンポーネントを取得
 /// 全コンポーネントから対象コンポーネントの親コンポーネントを再帰的に取得する。
 /// ※MemoTree直下の場合、nullが返却される。
 /// </summary>
 /// <param name="parentComponent"></param>
 /// <param name="childComponent"></param>
 /// <returns>親コンポーネント</returns>
 private Component GetParentComponent(DirComponent parentComponent, DirComponent childComponent)
 {
     foreach (var component in parentComponent.m_listComponent)
     {
         if (component == childComponent)
         {
             return(parentComponent);
         }
         if (component.GetType() == typeof(DirComponent))
         {
             var recursiveComponent = GetParentComponent((DirComponent)component, childComponent);
             if (recursiveComponent != null)
             {
                 return(recursiveComponent);
             }
         }
     }
     return(null);
 }
コード例 #6
0
ファイル: Context.cs プロジェクト: susiraw/DesignPatternApp
        /// <summary>
        /// コンストラクタ
        /// MemoTreeの起動を行う
        /// </summary>
        public Context()
        {
            // MemoTreeディレクトリの存在チェック
            var strInitPath = Directory.GetCurrentDirectory() + "/MemoTree";

            if (!Directory.Exists(strInitPath))
            {
                Directory.CreateDirectory(strInitPath);
            }
            this.m_componentMain = new DirComponent(strInitPath);
            // 全ディレクトリ、ファイルを再帰的に取得
            DirComponent.SetComponent(this.m_componentMain);
            this.m_currentComponent = this.m_componentMain;

            // 起動時はキー入力モードを設定
            this.m_stateInvoker = KeyInputStateInvoker.GetInstance();
            // 起動時はEnterコマンドを直接実行
            var enterCommand = new EnterCommand();

            enterCommand.CallExecute(this, this.m_componentMain, false);
        }
コード例 #7
0
 /// <summary>
 /// 対象となるDirComponent直下のコンポーネントの名前を全て取得する。
 /// </summary>
 /// <param name="dirComponent"></param>
 /// <returns>ファイル名のリスト</returns>
 internal static List <string> GetAllFileName(DirComponent dirComponent)
 {
     return(dirComponent.m_listComponent.Select(x => x.m_strName).ToList());
 }