kinugasa.ui
クラス InputMessageWindow

java.lang.Object
  上位を拡張 kinugasa.object.Sprite
      上位を拡張 kinugasa.object.BasicSprite
          上位を拡張 kinugasa.ui.MessageWindow
              上位を拡張 kinugasa.ui.InputMessageWindow
すべての実装されたインタフェース:
java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<Sprite>, Controllable, Drawable, Shapeable

public class InputMessageWindow
extends MessageWindow

Kinugasa : InputMessageWindow : 1つ以上の文字セットから文字列を自由に構築できる入力ウインドウです.
入力メッセージウインドウは指定された文字数までの文字列を、指定された文字セットから1文字ずつ自由に入力できる ウインドウの実装です。
ウインドウから入力された文字列は1行のラベルとして表示可能です。

このウインドウには0行以上の「質問文」、1行の「入力確認ラベル」、いくつかの「文字セット」および、 使用する場合には「コマンドラベル」が表示されます。

質問文とはプレイヤーに何を入力してもらいたいのかを指示するラベルのことです。このラベルはスーパークラスの機能を使用して 作成、描画されます。このラベルは複数行表示することができるので、テキスト中に"\n"を使用することで 改行することができます。

入力確認ラベルとは入力を確定した文字がリアルタイムに表示されるラベルです。このラベルには デフォルトで"_"が最大文字数分表示されており、文字列を取得する際にはこの"_"が""に置換されます。
したがって、入力文字として全角のアンダースコア"_"を使用することはできません。

文字セットとは入力可能な文字のセットです。これはCharSetクラスを使用して定義されます。
文字セットは、通常、操作性をよくするためにいくつかのスペース" "をセット中に含ませることがあります。
したがって、文字セット中の文字は必ずしも重複してはならないというルールはありません。
文字セットはフォントが提供する文字を自由に定義可能です。たとえば漢字や他の文字であっても 入力フォームを作成することができます。

このウインドウにはラベルのプリセットとしてコマンドというラベルを構築する機能が備わっています。
このラベルは、入力を確定したりキャンセルして戻る処理を判定するためのもので、使用する場合は 文字セットの下部に表示されます。


このウインドウの実装では、独自のラベル配置アルゴリズムを用いるため、スーパークラスに設定されるラベルは 「質問文」だけです。それ以外のすべてのラベルはこのクラスに独自に格納されます。

このウインドウは、通常2つ以上表示することはないと考えられるので、 クローニングはシャローコピーとなります。すべてのラベル情報はその参照がコピーされます。


入力メッセージウインドウは、入力された文字が挿入される位置を示すためのキャレットを持ちます。
キャレットは単色の矩形として入力確認ラベルの次に文字が挿入される位置に描画されます。
最大の文字数まで入力されている場合はキャレットは表示されません。
キャレットの色はデフォルトでは透過度50%の白が設定されています。

バージョン:
1.0.0 - 2012/11/25_14:13:24.
作成者:
Dra0211

関連項目:
直列化された形式

フィールドの概要
private  TimeCounter caretBlinkRate
          キャレットの点滅間隔です.
private  java.awt.Color caretColor
          キャレットの色です.
private  int caretIndex
          キャレットを表示する入力確認ラベルに対する文字インデックスです.
private  float caretX
          キャレットを描画するX軸座標です.
private  float caretY
          キャレットを描画するY軸座標です.
private  CharSet[] charSets
          使用する文字セットです.
private  ChoiceEffect choiceEffect
          文字セットの選択ラベルです.
private  TextLabel[][] choiceLabels
          選択肢の配列です.
private  LabelModel choicesLabelModel
          選択肢のモデルです.
static java.lang.String COMMAND_CANCEL
          コマンド用ラベルの"Cancel"処理を定義するラベルの文字列です.
static java.lang.String COMMAND_OK
          コマンド用ラベルの"OK"処理を定義するラベルの文字列です.
private  TextLabel[] commandLabels
          コマンドラベルの配列です.
private  TextLabel inputValueLabel
          入力確認ラベルです.
private  int maxLength
          入力可能な最大文字数です.
private  int selectedIndexX
          選択中ラベルのX軸座標です.
private  int selectedIndexY
          選択中ラベルのY軸座標です.
private static long serialVersionUID
           
 
クラス kinugasa.ui.MessageWindow から継承されたフィールド
labels
 
コンストラクタの概要
InputMessageWindow(float x, float y, float width, float height, MessageWindowModel windowModel, LabelModel messageLabelModel, LabelModel choicesLabelModel, java.lang.String message, ChoiceEffect choiceEffect, int maxLength, boolean useCommandLabels, CharSet... charSet)
          新しい入力メッセージウインドウを作成します.
 
メソッドの概要
 void backSpace()
          直前の入力をキャンセルし、1文字削除します.
 void cancel()
          入力をキャンセルし、ウインドウを閉じます.
private  void clamp()
          選択中ラベルインデックスを有効範囲内に切り詰めます.
 InputMessageWindow clone()
          このスプライトの複製を作成します.
 void draw(java.awt.Graphics2D g)
          メッセージウインドウを描画します.
private  void drawCaret(java.awt.Graphics2D g)
          キャレットを描画します.
 java.lang.String enter()
          選択中の文字を入力し、1文字追加します.
 TimeCounter getCaretBlinkRate()
          キャレットの点滅間隔を取得します.
 java.awt.Color getCaretColor()
          キャレットの色を取得します.
 CharSet[] getCharSets()
          このウインドウに表示されている全ての文字セットを取得します.
 ChoiceEffect getChoiceEffect()
          このウインドウの文字セットに対して使用されている選択エフェクトを取得します.
 TextLabel[][] getChoiceLabels()
          選択肢として表示されているすべてのラベルをその配置の2次元配列として取得します.
 java.util.List<TextLabel> getChoiceLabelsList()
          選択肢として表示されているすべてのラベルをリストとして取得します.
 LabelModel getChoicesLabelModel()
          選択肢として表示されているラベルのモデルを取得します.
 java.lang.String getInputText()
          プレイヤーによって入力された文字列を取得します.
 TextLabel getInputValueLabel()
          プレイヤーが入力したテキストを表示するために使用されているラベルを取得します.
 int getMaxLength()
          入力可能な最大の文字数を取得します.
 int getSelectedIndexX()
          選択中ラベルのY軸のインデックスを取得します.
 int getSelectedIndexY()
          選択中ラベルのY軸のインデックスを取得します.
 TextLabel getSelectedLabel()
          現在選択されているラベルを返します。
 java.lang.String getSelectedLabelText()
          選択中のラベルのテキストを取得します.
private  void initCommandLabels()
          コマンドラベルを使用する場合に、座標などの初期化を行うメソッドです.
private  void initLabels(boolean useCommand)
          質問文、入力確認、選択肢の各ラベルを初期化して配置します.
 boolean isCancelSelected()
          キャンセルコマンドを選択中であるかを調べます.
 boolean isCommandSelect()
          コマンドラベルを選択中であるかを調べます.
 boolean isMaxInput()
          プレイヤーによる現在の入力値が最大の文字数であるかを検査します.
 boolean isNotYetInput()
          プレイヤーによる現在の入力値が0文字であるかを検査します.
 boolean isOkSelected()
          決定コマンドを選択中であるかを調べます.
 java.lang.String ok()
          入力を確定し、ウインドウを閉じます.
 void printAll(java.io.PrintStream stream)
          このウインドウに設定されているすべての文字セット用ラベルをストリームに発行します.
private  CharSet searchCharSet(char c)
          このウインドウが使用している文字セットの中から文字cが含まれる文字セットを検索します.
 void setCaretBlinkRate(TimeCounter cursorBlink)
          キャレットの点滅間隔を設定します.
 void setCaretColor(java.awt.Color caretColor)
          キャレットの色を変更します.
 void setChoiceEffect(ChoiceEffect choiceEffect)
          このウインドウの文字セットに対して使用されている選択エフェクトを変更します.
 void setSelectedIndexX(int selectedIndexX)
          選択中ラベルのX軸のインデックスを設定します.
 void setSelectedIndexY(int selectedIndexY)
          選択中ラベルのY軸のインデックスを設定します.
 void toDown()
          選択を下に移動します.
 void toLeft()
          選択を左に移動します.
 void toRight()
          選択を右に移動します.
 java.lang.String toString()
          スプライトの文字列表記を取得します.
 void toUp()
          選択を上に移動します.
 
クラス kinugasa.ui.MessageWindow から継承されたメソッド
allText, getIcon, getLabel, getLabels, getSeparator, getWindowModel, isAllTextVisible, move, move, move, move, setIcon, setLabels, setSeparator, setSound, setText, setText, setText, setText, setWindowModel, skip
 
クラス kinugasa.object.BasicSprite から継承されたメソッド
getAngle, getMovingModel, getMovingModel, getNextCenter, getNextLocation, getSpeed, getVector, setAngle, setMovingModel, setSpeed, setVector
 
クラス kinugasa.object.Sprite から継承されたメソッド
compareTo, contains, getBounds, getCenter, getCenterX, getCenterY, getHeight, getHitBounds, getLocation, getPersonalCenter, getPersonalCenterX, getPersonalCenterY, getSize, getStatus, getWidth, getX, getY, getZ, isExist, isVisible, setBounds, setBounds, setBounds, setExist, setHeight, setLocation, setLocation, setSize, setSize, setStatus, setVisible, setWidth, setX, setY, setZ, update, updateCenter, updatePersonalCenter
 
クラス java.lang.Object から継承されたメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

serialVersionUID

private static final long serialVersionUID
関連項目:
定数フィールド値

COMMAND_OK

public static java.lang.String COMMAND_OK
コマンド用ラベルの"OK"処理を定義するラベルの文字列です.


COMMAND_CANCEL

public static java.lang.String COMMAND_CANCEL
コマンド用ラベルの"Cancel"処理を定義するラベルの文字列です.


choiceLabels

private TextLabel[][] choiceLabels
選択肢の配列です. コマンドラベルを含みます.


maxLength

private int maxLength
入力可能な最大文字数です.


choicesLabelModel

private LabelModel choicesLabelModel
選択肢のモデルです.


charSets

private CharSet[] charSets
使用する文字セットです.


choiceEffect

private ChoiceEffect choiceEffect
文字セットの選択ラベルです.


selectedIndexX

private int selectedIndexX
選択中ラベルのX軸座標です.


selectedIndexY

private int selectedIndexY
選択中ラベルのY軸座標です.


inputValueLabel

private TextLabel inputValueLabel
入力確認ラベルです.


caretIndex

private int caretIndex
キャレットを表示する入力確認ラベルに対する文字インデックスです.


caretBlinkRate

private TimeCounter caretBlinkRate
キャレットの点滅間隔です.


caretX

private float caretX
キャレットを描画するX軸座標です.


caretY

private float caretY
キャレットを描画するY軸座標です.


caretColor

private java.awt.Color caretColor
キャレットの色です.


commandLabels

private TextLabel[] commandLabels
コマンドラベルの配列です.

コンストラクタの詳細

InputMessageWindow

public InputMessageWindow(float x,
                          float y,
                          float width,
                          float height,
                          MessageWindowModel windowModel,
                          LabelModel messageLabelModel,
                          LabelModel choicesLabelModel,
                          java.lang.String message,
                          ChoiceEffect choiceEffect,
                          int maxLength,
                          boolean useCommandLabels,
                          CharSet... charSet)
                   throws java.lang.IllegalArgumentException,
                          java.lang.NullPointerException
新しい入力メッセージウインドウを作成します.

パラメータ:
x - ウインドウのX座標を指定します。
y - ウインドウのY標を指定します。
width - ウインドウの幅指定します。
height - ウインドウの高さを指定します。
windowModel - メッセージウインドウのモデルを指定します。
messageLabelModel - 質問文と入力確認ラベルのモデルを指定します。
choicesLabelModel - 選択肢とコマンドラベルのモデルを指定します。
message - 質問文です。改行"\n"を使用して複数行にできます。
choiceEffect - 選択肢の選択エフェクトを指定します。
maxLength - 入力可能な最大の文字数を指定します。
useCommandLabels - コマンドラベルを使用する場合はtrue、使用しない場合はfalseを送信します。
charSet - 使用する文字セットを1つ以上送信します。
例外:
java.lang.IllegalArgumentException - charSetかmessageがnullの場合に投げられます。
java.lang.NullPointerException - 文字セットが0個であるか、最大の文字数が0未満である場合に投げられます。
メソッドの詳細

initLabels

private void initLabels(boolean useCommand)
質問文、入力確認、選択肢の各ラベルを初期化して配置します.

パラメータ:
useCommand - コマンドラベルを使用する場合にtrueを送信します。

initCommandLabels

private void initCommandLabels()
コマンドラベルを使用する場合に、座標などの初期化を行うメソッドです. コマンドラベルは選択肢の配列にも追加されます。コマンドラベルの配列と選択肢の配列に含まれる コマンドラベルのインスタンスは同じです。
このメソッドはinitLabelsからコールされます。


searchCharSet

private CharSet searchCharSet(char c)
                       throws java.lang.AssertionError
このウインドウが使用している文字セットの中から文字cが含まれる文字セットを検索します.

パラメータ:
c - 検索する文字を指定します。
戻り値:
文字cが最初に発見された文字セットを返します。
例外:
java.lang.AssertionError - 文字が含まれていない場合に投げられます。通常の使用方法ではこの例外が投げられることはありません。

draw

public void draw(java.awt.Graphics2D g)
クラス MessageWindow の記述:
メッセージウインドウを描画します. 描画では、まず、ウインドウ自体の可視状態の判定が行われます.
次にウインドウモデルによってウインドウの下地およびラベルが描画されます.
最後にアイコンが設定されている場合はアイコンを描画します.

定義:
インタフェース Drawable 内の draw
オーバーライド:
クラス MessageWindow 内の draw
パラメータ:
g - 書き込むグラフィックスコンテキスト.

drawCaret

private void drawCaret(java.awt.Graphics2D g)
キャレットを描画します.

パラメータ:
g - 書き込むグラフィックスコンテキストを送信します。

isCommandSelect

public boolean isCommandSelect()
コマンドラベルを選択中であるかを調べます.

戻り値:
コマンドラベルを使用しており、決定かキャンセルのコマンドを選択している場合にtrueを返します。

isOkSelected

public boolean isOkSelected()
決定コマンドを選択中であるかを調べます.

戻り値:
コマンドラベルを使用しており、選択されているラベルが決定ラベルである場合にtrueを返します。

isCancelSelected

public boolean isCancelSelected()
キャンセルコマンドを選択中であるかを調べます.

戻り値:
コマンドラベルを使用しており、選択されているラベルがキャンセルラベルである場合にtrueを返します。

enter

public java.lang.String enter()
選択中の文字を入力し、1文字追加します. 入力が最大文字数である場合は何も行いません。

戻り値:
入力が確定している文字列を返します。今回の呼び出しまでに入力された 文字列を連結したもので、この呼び出しによって新しく追加された文字を含みます。

backSpace

public void backSpace()
直前の入力をキャンセルし、1文字削除します. 入力が0文字である場合は何も行いません。


ok

public java.lang.String ok()
入力を確定し、ウインドウを閉じます. このメソッドを呼び出すとウインドウの生存状態と可視状態をfalseにした後、 getInputTextを返します。

戻り値:
入力された文字列を返します。

cancel

public void cancel()
入力をキャンセルし、ウインドウを閉じます. このメソッドを呼び出すと入力確認ラベルのテキストが空(最大文字数分の"_")になり、 ウインドウの生存状態と可視状態をfalseに設定します。


isMaxInput

public boolean isMaxInput()
プレイヤーによる現在の入力値が最大の文字数であるかを検査します.

戻り値:
プレイヤーの入力が最大の文字数である場合はtrueを、そうでない場合はfalseを返します。

isNotYetInput

public boolean isNotYetInput()
プレイヤーによる現在の入力値が0文字であるかを検査します.

戻り値:
プレイヤーが入力していない場合はtrueを、1文字以上入力している場合はfalseを返します。

toLeft

public void toLeft()
選択を左に移動します. 左に選択肢がない場合(最も左の選択肢の場合)は移動しません。


toRight

public void toRight()
選択を右に移動します. 右に選択肢がない場合(最も右の選択肢の場合)は移動しません。


toDown

public void toDown()
選択を下に移動します. 下に選択肢がない場合(最も下の選択肢の場合)は移動しません。


toUp

public void toUp()
選択を上に移動します. 上に選択肢がない場合(最も上の選択肢の場合)は移動しません。


clamp

private void clamp()
選択中ラベルインデックスを有効範囲内に切り詰めます.


setCaretBlinkRate

public void setCaretBlinkRate(TimeCounter cursorBlink)
キャレットの点滅間隔を設定します.

パラメータ:
cursorBlink - 新しいキャレットの点滅間隔を指定します。

getCaretBlinkRate

public TimeCounter getCaretBlinkRate()
キャレットの点滅間隔を取得します.

戻り値:
キャレットの点熱間隔に使用されてるタイムカウンタを返します。

getCaretColor

public java.awt.Color getCaretColor()
キャレットの色を取得します.

戻り値:
このウインドウのキャレットの色を取得します。デフォルトでは透過度50%の白をです。

setCaretColor

public void setCaretColor(java.awt.Color caretColor)
キャレットの色を変更します.

パラメータ:
caretColor - 新しいキャレットの色を設定します。

getMaxLength

public int getMaxLength()
入力可能な最大の文字数を取得します.

戻り値:
プレイヤーがこのウインドウに入力できる文字数の最大値を返します。

getSelectedLabel

public TextLabel getSelectedLabel()
現在選択されているラベルを返します。

戻り値:
現在選択されているラベルのクローンを返します。

getSelectedLabelText

public java.lang.String getSelectedLabelText()
選択中のラベルのテキストを取得します.

戻り値:
選択中のラベルのテキストを返します。getSelectedLabel().getText()と同じ結果です。

getSelectedIndexX

public int getSelectedIndexX()
選択中ラベルのY軸のインデックスを取得します.

戻り値:
選択エフェクトが適用されるラベルのX軸のインデックスを返します。

setSelectedIndexX

public void setSelectedIndexX(int selectedIndexX)
選択中ラベルのX軸のインデックスを設定します.

パラメータ:
selectedIndexX - 選択エフェクトが適用されるラベルのX軸のインデックスを送信します。

getSelectedIndexY

public int getSelectedIndexY()
選択中ラベルのY軸のインデックスを取得します.

戻り値:
選択エフェクトが適用されるラベルのY軸のインデックスを返します。

setSelectedIndexY

public void setSelectedIndexY(int selectedIndexY)
選択中ラベルのY軸のインデックスを設定します.

パラメータ:
selectedIndexY - 選択エフェクトが適用されるラベルのY軸のインデックスを送信します。

getCharSets

public CharSet[] getCharSets()
このウインドウに表示されている全ての文字セットを取得します. このメソッドは参照を戻します。戻り値に対する操作はウインドウに影響を与えます。

戻り値:
このウインドウが使用中の全ての文字セットを返します。

getChoiceLabelsList

public java.util.List<TextLabel> getChoiceLabelsList()
選択肢として表示されているすべてのラベルをリストとして取得します. このメソッドの戻り値には操作性のために確保されているスペース" "のラベルや コマンドラベルが含まれます。
このメソッドは参照を戻します。戻り値に対する操作はこのウインドウの選択肢ラベルに影響します。

戻り値:
全ての選択肢をリストとして返します。

getChoiceLabels

public TextLabel[][] getChoiceLabels()
選択肢として表示されているすべてのラベルをその配置の2次元配列として取得します. このメソッドの戻り値には操作性のために確保されているスペース" "のラベルや コマンドラベルが含まれます。
このメソッドは参照を戻します。戻り値に対する操作はこのウインドウの選択肢ラベルに影響します。

戻り値:
全ての選択肢を2次元配列として返します。

getChoicesLabelModel

public LabelModel getChoicesLabelModel()
選択肢として表示されているラベルのモデルを取得します.

戻り値:
選択肢ラベルのモデルを返します。

getChoiceEffect

public ChoiceEffect getChoiceEffect()
このウインドウの文字セットに対して使用されている選択エフェクトを取得します.

戻り値:
現在の選択エフェクトを返します。設定されていない場合はnullを返します。

setChoiceEffect

public void setChoiceEffect(ChoiceEffect choiceEffect)
このウインドウの文字セットに対して使用されている選択エフェクトを変更します.

パラメータ:
choiceEffect - 新しい選択エフェクトを指定します。表示しない場合はnullを使用できます。

getInputValueLabel

public TextLabel getInputValueLabel()
プレイヤーが入力したテキストを表示するために使用されているラベルを取得します. このラベルはプレイヤーに入力可能な文字数を伝えるために未入力文字は"_" に置換されています。
純粋な入力された文字だけを取得するにはgetInputTextを使用します。

戻り値:
プレイヤーが入力したテキストを表示しているラベルを取得します。クローンを返します。

getInputText

public java.lang.String getInputText()
プレイヤーによって入力された文字列を取得します. このメソッドでは、実際に表示されているラベルのテキストの "_"を""に置換して返します。
"_"を含めた実際に表示されている文字列を取得するにはgetInputValueLabelを 使用します。

戻り値:
プレイヤーによって入力された文字列を取得します。

printAll

public void printAll(java.io.PrintStream stream)
このウインドウに設定されているすべての文字セット用ラベルをストリームに発行します. このメソッドはデバッグ用です。

パラメータ:
stream - 発行するストリームを指定します。

clone

public InputMessageWindow clone()
クラス BasicSprite の記述:
このスプライトの複製を作成します. このメソッドでは、全てのフィールドをクローニングします.
このメソッドはサブクラスで適切にオーバーライドしてください.

オーバーライド:
クラス MessageWindow 内の clone
戻り値:
このスプライトと同じ設定の新しいインスタンス.

toString

public java.lang.String toString()
クラス BasicSprite の記述:
スプライトの文字列表記を取得します. 文字列にはスプライトのフィールド情報が含まれています.これらの値はすべてアクセサを通して取得可能です.

オーバーライド:
クラス BasicSprite 内の toString
戻り値:
スプライトの情報.