java.lang.Object
javax.swing.text.GapContent
- すべての実装されたインタフェース:
Serializable,AbstractDocument.Content
public class GapContent extends Object implements AbstractDocument.Content, Serializable
emacsが使うものと類似したギャップ付きバッファを使って実装されたAbstractDocument.Contentインタフェースの実装です。 記憶される内容は、どこかにギャップを持つUnicode文字列の配列です。 ギャップは変更の位置に移動されるので、ほとんどの変更が同じ位置にある場所で、共通の動作を利用できるようになります。 ギャップ境界で生じる変更は一般的に簡単なものなので、配列の内容を直接移動して変更を適用するよりもギャップを移動する方が手間がかかりません。
また、変更を追跡する位置を管理するのも一般的に簡単です。 位置の実装(マーク)は配列インデックスを格納し、現在のギャップ位置から逐次位置を簡単に計算できます。 変更ではギャップの移動時に新旧ギャップ境界間のマークに対する更新を必要とするだけなので、マークの更新は一般に非常に手軽です。 マークはソートされた状態で格納されるので、2等分探索ですばやく見つけられます。 これはマークを追加する手間を増大させる一方で、マークの更新を維持する手間を減らします。
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 GapContent()新しいGapContentオブジェクトを作成します。GapContent(int initialLength)指定された初期サイズで新しいGapContentオブジェクトを生成します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 protected ObjectallocateArray(int len)項目を格納するための適切な型の配列を割り当てます。配列の型は、サブクラスで決定します。PositioncreatePosition(int offset)コンテンツが変更されたときに変更を追跡するコンテンツ内の位置を作成します。protected ObjectgetArray()配列にアクセスします。protected intgetArrayLength()割り当てられた配列の長さを取得します。voidgetChars(int where, int len, Segment chars)コンテンツの一部を取り出します。protected intgetGapEnd()ギャップの終端にアクセスします。protected intgetGapStart()ギャップの先頭にアクセスします。protected VectorgetPositionsInRange(Vector v, int offset, int length)offsetからoffset+lengthの範囲にある位置に対応するUndoPosRefのインスタンスを含むベクターを返します。StringgetString(int where, int len)コンテンツの一部を取り出します。UndoableEditinsertString(int where, String str)コンテンツに文字列を挿入します。intlength()コンテンツの長さを返します。UndoableEditremove(int where, int nitems)コンテンツの一部を削除します。protected voidreplace(int position, int rmSize, Object addItems, int addSize)指定されたストレージ内の論理的位置を、指定された新規項目に置き換えます。protected voidresetMarksAtZero()オフセットが0のマークをすべてリセットして、インデックスも0になるようにします。protected voidshiftEnd(int newSize)ギャップを拡大し、これにより、必要なデータを移動して適切なマークを更新します。protected voidshiftGap(int newGapStart)ギャップの開始位置を新しい位置に移動しますが、ギャップのサイズは変更しません。protected voidshiftGapEndUp(int newGapEnd)ギャップの終端を上方に調節します。protected voidshiftGapStartDown(int newGapStart)ギャップの終端を下方に調節します。protected voidupdateUndoPositions(Vector positions, int offset, int length)positionsのすべてのUndoPosRefインスタンスの位置をリセットします。
-
コンストラクタの詳細
-
GapContent
public GapContent()新しいGapContentオブジェクトを作成します。 初期サイズのデフォルトは10です。 -
GapContent
public GapContent(int initialLength)指定された初期サイズで新しいGapContentオブジェクトを生成します。 初期サイズは、暗黙のブレークとギャップの余地を持たせるため、2以上の値にする必要があります。- パラメータ:
initialLength- 初期サイズ
-
-
メソッドの詳細
-
allocateArray
protected Object allocateArray(int len)項目を格納するための適切な型の配列を割り当てます。配列の型は、サブクラスで決定します。 -
getArrayLength
protected int getArrayLength()割り当てられた配列の長さを取得します。 -
length
public int length()コンテンツの長さを返します。- 定義:
length、インタフェース:AbstractDocument.Content- 戻り値:
- 長さ>= 1
- 関連項目:
AbstractDocument.Content.length()
-
insertString
public UndoableEdit insertString(int where, String str) throws BadLocationExceptionコンテンツに文字列を挿入します。- 定義:
insertString、インタフェース:AbstractDocument.Content- パラメータ:
where- 開始位置。0以上で、length()より小さいstr- 挿入するnull以外の文字列- 戻り値:
- 元に戻すためのUndoableEditオブジェクト
- 例外:
BadLocationException- 指定された位置が無効な場合- 関連項目:
AbstractDocument.Content.insertString(int, java.lang.String)
-
remove
public UndoableEdit remove(int where, int nitems) throws BadLocationExceptionコンテンツの一部を削除します。- 定義:
remove、インタフェース:AbstractDocument.Content- パラメータ:
where- 開始位置。0以上で、where + nitemsがlength()より小さいnitems- 削除対象の文字数>= 0- 戻り値:
- 元に戻すためのUndoableEditオブジェクト
- 例外:
BadLocationException- 指定された位置が無効な場合- 関連項目:
AbstractDocument.Content.remove(int, int)
-
getString
public String getString(int where, int len) throws BadLocationExceptionコンテンツの一部を取り出します。- 定義:
getString、インタフェース:AbstractDocument.Content- パラメータ:
where- 開始位置>= 0len- 取り出す長さ>= 0- 戻り値:
- コンテンツを表す文字列
- 例外:
BadLocationException- 指定された位置が無効な場合- 関連項目:
AbstractDocument.Content.getString(int, int)
-
getChars
public void getChars(int where, int len, Segment chars) throws BadLocationExceptionコンテンツの一部を取り出します。 必要なコンテンツがギャップをまたいでいる場合、コンテンツをコピーします。 必要なコンテンツがギャップをまたいでいない場合、コピーは連続しているものなので、実際の格納内容を返してコピーを避けます。- 定義:
getChars、インタフェース:AbstractDocument.Content- パラメータ:
where- 開始位置。0以上で、where + lenがlength()以下len- 取得対象の文字数>= 0chars- 文字を返す先のSegmentオブジェクト- 例外:
BadLocationException- 指定された位置が無効な場合- 関連項目:
AbstractDocument.Content.getChars(int, int, javax.swing.text.Segment)
-
createPosition
public Position createPosition(int offset) throws BadLocationExceptionコンテンツが変更されたときに変更を追跡するコンテンツ内の位置を作成します。- 定義:
createPosition、インタフェース:AbstractDocument.Content- パラメータ:
offset- 追跡対象のオフセット>= 0- 戻り値:
- 位置
- 例外:
BadLocationException- 指定された位置が無効な場合
-
shiftEnd
protected void shiftEnd(int newSize)ギャップを拡大し、これにより、必要なデータを移動して適切なマークを更新します。 -
shiftGap
protected void shiftGap(int newGapStart)ギャップの開始位置を新しい位置に移動しますが、ギャップのサイズは変更しません。 これによって、配列内のデータは移動され、マークは更新されます。 -
resetMarksAtZero
protected void resetMarksAtZero()オフセットが0のマークをすべてリセットして、インデックスも0になるようにします。 -
shiftGapStartDown
protected void shiftGapStartDown(int newGapStart)ギャップの終端を下方に調節します。 この操作では、データは移動されませんが、境界の変更によって影響を受けるすべてのマークが更新されます。 古いギャップの開始位置と新しいギャップの開始位置の間にあるすべてのマークは、ギャップの終端に押し込まれ、それらの位置は削除されます。 -
shiftGapEndUp
protected void shiftGapEndUp(int newGapEnd)ギャップの終端を上方に調節します。 この操作では、データは移動されませんが、境界の変更によって影響を受けるすべてのマークが更新されます。 古いギャップの終了位置と新しいギャップの終了位置の間にあるすべてのマークは、ギャップの終端に押し込まれ、それらの位置は削除されます。 -
getPositionsInRange
offsetからoffset+lengthの範囲にある位置に対応するUndoPosRefのインスタンスを含むベクターを返します。vがnullではない場合、一致する位置がそこに配置されます。 結果として得られる位置を持つベクターが返されます。- パラメータ:
v- 使用するベクター。nullの場合は新しいベクターが作成されるoffset- 開始オフセット>= 0length- 長さ>= 0- 戻り値:
- インスタンスのセット
-
updateUndoPositions
protected void updateUndoPositions(Vector positions, int offset, int length)positionsのすべてのUndoPosRefインスタンスの位置をリセットします。これは内部での使用を目的としていて、一般にはサブクラスを対象にしていません。
- パラメータ:
positions- リセット対象のUndoPosRefのインスタンスoffset- 文字列が挿入された場所length- 挿入された文字列の長さ
-
getArray
protected final Object getArray()配列にアクセスします。 配列の実際の型は、サブクラスによってのみ認識されます。 -
getGapStart
protected final int getGapStart()ギャップの先頭にアクセスします。 -
getGapEnd
protected final int getGapEnd()ギャップの終端にアクセスします。 -
replace
protected void replace(int position, int rmSize, Object addItems, int addSize)指定されたストレージ内の論理的位置を、指定された新規項目に置き換えます。 ギャップが変更場所に現在配置されていない場合、ギャップは変更される領域に移動します。- パラメータ:
position- 置換えを行う位置。 これは基になるストレージ配列内の位置ではなく、モデル化される連続するスペース内の位置です。rmSize- 削除する項目の数addItems- ストレージ内に配置する新規項目。
-