+++ /dev/null
-using System;\r
-using System.Collections.Generic;\r
-using System.Linq;\r
-using System.Text;\r
-\r
-namespace com.andoutomo.kybernetes.view\r
-{\r
- /// <summary>\r
- /// コマンドヒストリを保持します。\r
- /// </summary>\r
- internal class CmdHistory\r
- {\r
- private string[] commandHist;\r
- private int currentPosition;\r
- const int MAXHIST = 10; \r
-\r
- internal CmdHistory()\r
- {\r
- commandHist = new string[MAXHIST];\r
- currentPosition = 0;\r
- }\r
- /// <summary>\r
- /// 直前に実行されたコマンドをを提示します。\r
- /// 同時にカレント位置を動かし、さらにその前のコマンドを提示する準備を行います。\r
- /// </summary>\r
- /// <returns></returns>\r
- internal string prevCommand()\r
- {\r
- //終点まで来ている場合は最後のコマンドを表示。カレント位置も動かさない。\r
- if (currentPosition == MAXHIST)\r
- {\r
- return commandHist[MAXHIST-1];\r
- }\r
- //次に提示するコマンドがある場合は、カレント位置を動かす。\r
- if (!string.IsNullOrEmpty(commandHist[currentPosition]))\r
- {\r
- currentPosition++;\r
- }\r
- //ヒストリ配列からコマンドを取得してreturn\r
- if (currentPosition > 0)\r
- {\r
- return commandHist[currentPosition - 1];\r
- }\r
- //この段階でcurrentPosition=0(ヒストリがない)場合は、空文字を返す。\r
- else\r
- {\r
- return string.Empty;\r
- }\r
- }\r
- /// <summary>\r
- /// カレント位置の次に実行されたコマンドを提示します。\r
- /// </summary>\r
- /// <returns></returns>\r
- internal string nextCommand()\r
- {\r
- currentPosition--;\r
- if (currentPosition <= 0)\r
- {\r
- currentPosition = 0;\r
- return string.Empty;\r
- }\r
- return commandHist[currentPosition-1];\r
- }\r
- /// <summary>\r
- /// コマンド受け入れを行います。\r
- /// コマンドはスタックされ、10件以上の場合は10番目が破棄されます。\r
- /// また、同一のコマンドを連続入力した場合はスタックを行いません。\r
- /// </summary>\r
- /// <param name="command"></param>\r
- internal void stackCmd(string command)\r
- {\r
- if (command != commandHist[0])\r
- {\r
- //スタックを行う\r
- for (int i = MAXHIST-1; i > 0; i--)\r
- {\r
- commandHist[i] = commandHist[i - 1];\r
- }\r
-\r
- //新たなコマンドを追加する\r
- commandHist[0] = command;\r
- }\r
- //ポジションをリセット\r
- resetPosition();\r
- }\r
- /// <summary>\r
- /// ヒストリで参照するポジションをリセットします。\r
- /// </summary>\r
- internal void resetPosition()\r
- {\r
- currentPosition = 0;\r
- }\r
- }\r
-}\r