- 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インスタンスの位置をリセットします。
 
- 
- 
- 
メソッドの詳細- 
allocateArrayprotected Object allocateArray(int len) 項目を格納するための適切な型の配列を割り当てます。配列の型は、サブクラスで決定します。
 - 
getArrayLengthprotected int getArrayLength() 割り当てられた配列の長さを取得します。
 - 
lengthpublic int length() コンテンツの長さを返します。- 定義:
- length、インタフェース:- AbstractDocument.Content
- 戻り値:
- 長さ>= 1
- 関連項目:
- AbstractDocument.Content.length()
 
 - 
insertStringpublic 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)
 
 - 
removepublic 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)
 
 - 
getStringpublic String getString(int where, int len) throws BadLocationException コンテンツの一部を取り出します。- 定義:
- getString、インタフェース:- AbstractDocument.Content
- パラメータ:
- where- 開始位置>= 0
- len- 取り出す長さ>= 0
- 戻り値:
- コンテンツを表す文字列
- 例外:
- BadLocationException- 指定された位置が無効な場合
- 関連項目:
- AbstractDocument.Content.getString(int, int)
 
 - 
getCharspublic void getChars(int where, int len, Segment chars) throws BadLocationExceptionコンテンツの一部を取り出します。 必要なコンテンツがギャップをまたいでいる場合、コンテンツをコピーします。 必要なコンテンツがギャップをまたいでいない場合、コピーは連続しているものなので、実際の格納内容を返してコピーを避けます。- 定義:
- getChars、インタフェース:- AbstractDocument.Content
- パラメータ:
- where- 開始位置。0以上で、where + lenがlength()以下
- len- 取得対象の文字数>= 0
- chars- 文字を返す先のSegmentオブジェクト
- 例外:
- BadLocationException- 指定された位置が無効な場合
- 関連項目:
- AbstractDocument.Content.getChars(int, int, javax.swing.text.Segment)
 
 - 
createPositionpublic Position createPosition(int offset) throws BadLocationException コンテンツが変更されたときに変更を追跡するコンテンツ内の位置を作成します。- 定義:
- createPosition、インタフェース:- AbstractDocument.Content
- パラメータ:
- offset- 追跡対象のオフセット>= 0
- 戻り値:
- 位置
- 例外:
- BadLocationException- 指定された位置が無効な場合
 
 - 
shiftEndprotected void shiftEnd(int newSize) ギャップを拡大し、これにより、必要なデータを移動して適切なマークを更新します。
 - 
shiftGapprotected void shiftGap(int newGapStart) ギャップの開始位置を新しい位置に移動しますが、ギャップのサイズは変更しません。 これによって、配列内のデータは移動され、マークは更新されます。
 - 
resetMarksAtZeroprotected void resetMarksAtZero() オフセットが0のマークをすべてリセットして、インデックスも0になるようにします。
 - 
shiftGapStartDownprotected void shiftGapStartDown(int newGapStart) ギャップの終端を下方に調節します。 この操作では、データは移動されませんが、境界の変更によって影響を受けるすべてのマークが更新されます。 古いギャップの開始位置と新しいギャップの開始位置の間にあるすべてのマークは、ギャップの終端に押し込まれ、それらの位置は削除されます。
 - 
shiftGapEndUpprotected void shiftGapEndUp(int newGapEnd) ギャップの終端を上方に調節します。 この操作では、データは移動されませんが、境界の変更によって影響を受けるすべてのマークが更新されます。 古いギャップの終了位置と新しいギャップの終了位置の間にあるすべてのマークは、ギャップの終端に押し込まれ、それらの位置は削除されます。
 - 
getPositionsInRangeprotected Vector getPositionsInRange(Vector v, int offset, int length) offsetからoffset+lengthの範囲にある位置に対応するUndoPosRefのインスタンスを含むベクターを返します。vがnullではない場合、一致する位置がそこに配置されます。 結果として得られる位置を持つベクターが返されます。- パラメータ:
- v- 使用するベクター。nullの場合は新しいベクターが作成される
- offset- 開始オフセット>= 0
- length- 長さ>= 0
- 戻り値:
- インスタンスのセット
 
 - 
updateUndoPositionsprotected void updateUndoPositions(Vector positions, int offset, int length) positionsのすべてのUndoPosRefインスタンスの位置をリセットします。これは内部での使用を目的としていて、一般にはサブクラスを対象にしていません。 - パラメータ:
- positions- リセット対象のUndoPosRefのインスタンス
- offset- 文字列が挿入された場所
- length- 挿入された文字列の長さ
 
 - 
getArrayprotected final Object getArray() 配列にアクセスします。 配列の実際の型は、サブクラスによってのみ認識されます。
 - 
getGapStartprotected final int getGapStart() ギャップの先頭にアクセスします。
 - 
getGapEndprotected final int getGapEnd() ギャップの終端にアクセスします。
 - 
replaceprotected void replace(int position, int rmSize, Object addItems, int addSize)指定されたストレージ内の論理的位置を、指定された新規項目に置き換えます。 ギャップが変更場所に現在配置されていない場合、ギャップは変更される領域に移動します。- パラメータ:
- position- 置換えを行う位置。 これは基になるストレージ配列内の位置ではなく、モデル化される連続するスペース内の位置です。
- rmSize- 削除する項目の数
- addItems- ストレージ内に配置する新規項目。
 
 
- 
 
-