2 using System.Collections.Generic;
\r
6 namespace com.andoutomo.kybernetes.view
\r
11 public class CmdHistory
\r
13 private string[] commandHist;
\r
14 private int currentPosition;
\r
15 const int MAXHIST = 10;
\r
19 commandHist = new string[MAXHIST];
\r
20 currentPosition = 0;
\r
23 /// 直前に実行されたコマンドをを提示します。
\r
24 /// 同時にカレント位置を動かし、さらにその前のコマンドを提示する準備を行います。
\r
26 /// <returns></returns>
\r
27 public string prevCommand()
\r
29 //終点まで来ている場合は最後のコマンドを表示。カレント位置も動かさない。
\r
30 if (currentPosition == MAXHIST)
\r
32 return commandHist[MAXHIST-1];
\r
34 //次に提示するコマンドがある場合は、カレント位置を動かす。
\r
35 if (!string.IsNullOrEmpty(commandHist[currentPosition]))
\r
39 //ヒストリ配列からコマンドを取得してreturn
\r
40 if (currentPosition > 0)
\r
42 return commandHist[currentPosition - 1];
\r
44 //この段階でcurrentPosition=0(ヒストリがない)場合は、空文字を返す。
\r
47 return string.Empty;
\r
51 /// カレント位置の次に実行されたコマンドを提示します。
\r
53 /// <returns></returns>
\r
54 public string nextCommand()
\r
57 if (currentPosition <= 0)
\r
59 currentPosition = 0;
\r
60 return string.Empty;
\r
62 return commandHist[currentPosition-1];
\r
66 /// コマンドはスタックされ、10件以上の場合は10番目が破棄されます。
\r
67 /// また、同一のコマンドを連続入力した場合はスタックを行いません。
\r
69 /// <param name="command"></param>
\r
70 public void stackCmd(string command)
\r
72 if (command != commandHist[0])
\r
75 for (int i = MAXHIST-1; i > 0; i--)
\r
77 commandHist[i] = commandHist[i - 1];
\r
81 commandHist[0] = command;
\r
87 /// ヒストリで参照するポジションをリセットします。
\r
89 public void resetPosition()
\r
91 currentPosition = 0;
\r