JavaTM 2
Platform
Std. Ed. v1.4.0

javax.swing.text
クラス GapContent

java.lang.Object
  |
  +--javax.swing.text.GapVector
        |
        +--javax.swing.text.GapContent
すべての実装インタフェース:
AbstractDocument.Content, Serializable

public class GapContent
extends javax.swing.text.GapVector
implements AbstractDocument.Content, Serializable

emacs が使うものと類似したギャップ付きバッファを使って実装された AbstractDocument.Content インタフェースの実装です。記憶される内容は、どこかにギャップを持つ Unicode 文字列の配列です。ギャップは変更の位置に移動されるので、ほとんどの変更が同じ位置にある場所で、共通の動作を利用できるようになります。ギャップ境界で生じる変更は一般的に簡単なものなので、配列の内容を直接移動して変更を適用するよりもギャップを移動するほうが手間がかかりません。

また、変更を追跡する位置を管理するのも一般的に簡単です。位置の実装 (マーク) は配列インデックスを格納し、現在のギャップ位置から逐次位置を簡単に計算できます。変更ではギャップの移動時に新旧ギャップ境界間のマークに対する更新を必要とするだけなので、マークの更新は一般に非常に手軽です。マークはソートされた状態で格納されるので、2 等分探索ですばやく見つけられます。これはマークを追加する手間を増大させる一方で、マークの更新を維持する手間を減らします。


コンストラクタの概要
GapContent()
          新しい GapContent オブジェクトを作成します。
GapContent(int initialLength)
          指定された初期サイズで新しい GapContent オブジェクトを生成します。
 
メソッドの概要
protected  Object allocateArray(int len)
          項目を格納するための適切な型の配列を割り当てます。
 Position createPosition(int offset)
          コンテンツが変更されたときに変更を追跡するコンテンツ内の位置を作成します。
protected  Object getArray()
          Access to the array.
protected  int getArrayLength()
          割り当てられた配列の長さを返します。
 void getChars(int where, int len, Segment chars)
          コンテンツの一部を取り出します。
protected  int getGapEnd()
          Access to the end of the gap.
protected  int getGapStart()
          Access to the start of the gap.
protected  Vector getPositionsInRange(Vector v, int offset, int length)
          offsetoffset + length の範囲にある位置に対応する UndoPosRef のインスタンスを含むベクタを返します。
 String getString(int where, int len)
          コンテンツの一部を取り出します。
 UndoableEdit insertString(int where, String str)
          コンテンツに文字列を挿入します。
 int length()
          コンテンツの長さを返します。
 UndoableEdit remove(int where, int nitems)
          コンテンツの一部を削除します。
protected  void replace(int position, int rmSize, Object addItems, int addSize)
          Replace the given logical position in the storage with the given new items.
protected  void resetMarksAtZero()
          オフセットが 0 のマークをすべてリセットして、インデックスも 0 になるようにします。
protected  void shiftEnd(int newSize)
          ギャップを拡大し、これにより、必要なデータを移動して適切なマークを更新します。
protected  void shiftGap(int newGapStart)
          ギャップの開始位置を新しい位置に移動します。
protected  void shiftGapEndUp(int newGapEnd)
          ギャップの終端を上方に調節します。
protected  void shiftGapStartDown(int newGapStart)
          ギャップの終端を下方に調節します。
protected  void updateUndoPositions(Vector positions, int offset, int length)
          positions のすべての UndoPosRef インスタンスの位置をリセットします。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

GapContent

public GapContent()
新しい GapContent オブジェクトを作成します。初期サイズのデフォルト値は 10 です。


GapContent

public GapContent(int initialLength)
指定された初期サイズで新しい GapContent オブジェクトを生成します。初期サイズは、暗黙のブレークとギャップの余地を持たせるため、2 以上の値にする必要があります。

パラメータ:
initialLength - 初期サイズ
メソッドの詳細

allocateArray

protected Object allocateArray(int len)
項目を格納するための適切な型の配列を割り当てます。配列の型は、サブクラスで決定します。

定義:
クラス javax.swing.text.GapVector 内の allocateArray

getArrayLength

protected int getArrayLength()
割り当てられた配列の長さを返します。

定義:
クラス javax.swing.text.GapVector 内の getArrayLength

length

public int length()
コンテンツの長さを返します。

定義:
インタフェース AbstractDocument.Content 内の length
戻り値:
長さ >= 1
関連項目:
AbstractDocument.Content.length()

insertString

public UndoableEdit insertString(int where,
                                 String str)
                          throws BadLocationException
コンテンツに文字列を挿入します。

定義:
インタフェース AbstractDocument.Content 内の insertString
パラメータ:
where - 開始位置 >= 0、< length()
str - 挿入する null 以外の文字列
戻り値:
元に戻すための UndoableEdit オブジェクト
例外:
BadLocationException - 指定された位置が無効な場合
関連項目:
AbstractDocument.Content.insertString(int, java.lang.String)

remove

public UndoableEdit remove(int where,
                           int nitems)
                    throws BadLocationException
コンテンツの一部を削除します。

定義:
インタフェース AbstractDocument.Content 内の remove
パラメータ:
where - 開始位置 >= 0、where + nitems < length()
nitems - 削除対象の文字数 >= 0
戻り値:
元に戻すための UndoableEdit オブジェクト
例外:
BadLocationException - 指定された位置が無効な場合
関連項目:
AbstractDocument.Content.remove(int, int)

getString

public String getString(int where,
                        int len)
                 throws BadLocationException
コンテンツの一部を取り出します。

定義:
インタフェース AbstractDocument.Content 内の getString
パラメータ:
where - 開始位置 >= 0
len - 取り出す長さ >= 0
戻り値:
コンテンツを表す文字列
例外:
BadLocationException - 指定された位置が無効な場合
関連項目:
AbstractDocument.Content.getString(int, int)

getChars

public void getChars(int where,
                     int len,
                     Segment chars)
              throws BadLocationException
コンテンツの一部を取り出します。必要なコンテンツがギャップをまたいでいる場合、コンテンツをコピーします。必要なコンテンツがギャップをまたいでいない場合、コピーは連続しているものなので、実際の格納内容を返してコピーを避けます。

定義:
インタフェース AbstractDocument.Content 内の getChars
パラメータ:
where - 開始位置 >= 0。ここで + len <= length()
len - 検索対象の文字数 >= 0
chars - 文字を返す先の Segment オブジェクト
例外:
BadLocationException - 指定された位置が無効な場合
関連項目:
AbstractDocument.Content.getChars(int, int, javax.swing.text.Segment)

createPosition

public Position createPosition(int offset)
                        throws BadLocationException
コンテンツが変更されたときに変更を追跡するコンテンツ内の位置を作成します。

定義:
インタフェース AbstractDocument.Content 内の createPosition
パラメータ:
offset - 追跡対象のオフセット >= 0
戻り値:
位置
例外:
BadLocationException - 指定された位置が無効な場合

shiftEnd

protected void shiftEnd(int newSize)
ギャップを拡大し、これにより、必要なデータを移動して適切なマークを更新します。

オーバーライド:
クラス javax.swing.text.GapVector 内の shiftEnd

shiftGap

protected void shiftGap(int newGapStart)
ギャップの開始位置を新しい位置に移動します。この際、ギャップのサイズは変更しません。これによって、配列内のデータは移動され、マークは更新されます。

オーバーライド:
クラス javax.swing.text.GapVector 内の shiftGap

resetMarksAtZero

protected void resetMarksAtZero()
オフセットが 0 のマークをすべてリセットして、インデックスも 0 になるようにします。


shiftGapStartDown

protected void shiftGapStartDown(int newGapStart)
ギャップの終端を下方に調節します。この操作では、データは移動されませんが、境界の変更によって影響を受けるすべてのマークが更新されます。古いギャップの開始位置と新しいギャップの開始位置の間にあるすべてのマークは、ギャップの終端に押し込まれ、それらの位置は削除されます。

オーバーライド:
クラス javax.swing.text.GapVector 内の shiftGapStartDown

shiftGapEndUp

protected void shiftGapEndUp(int newGapEnd)
ギャップの終端を上方に調節します。この操作では、データは移動されませんが、境界の変更によって影響を受けるすべてのマークが更新されます。古いギャップの終了位置と新しいギャップの終了位置の間にあるすべてのマークは、ギャップの終端に押し込まれ、それらの位置は削除されます。

オーバーライド:
クラス javax.swing.text.GapVector 内の shiftGapEndUp

getPositionsInRange

protected Vector getPositionsInRange(Vector v,
                                     int offset,
                                     int length)
offsetoffset + length の範囲にある位置に対応する UndoPosRef のインスタンスを含むベクタを返します。v が null ではない場合、一致する位置がそこに配置されます。結果の位置を持つベクタが返されます。

パラメータ:
v - 使用するベクタ。null の場合は新しいベクタが作成される
offset - 開始オフセット >= 0
length - 長さ >= 0
戻り値:
インスタンスのセット

updateUndoPositions

protected void updateUndoPositions(Vector positions,
                                   int offset,
                                   int length)
positions のすべての UndoPosRef インスタンスの位置をリセットします。

これは内部での使用を目的としていて、一般にはサブクラスを対象にしていません。

パラメータ:
positions - リセット対象の UndoPosRef のインスタンス

getArray

protected final Object getArray()
Access to the array. The actual type of the array is known only by the subclass.


getGapStart

protected final int getGapStart()
Access to the start of the gap.


getGapEnd

protected final int getGapEnd()
Access to the end of the gap.


replace

protected void replace(int position,
                       int rmSize,
                       Object addItems,
                       int addSize)
Replace the given logical position in the storage with the given new items. This will move the gap to the area being changed if the gap is not currently located at the change location.

パラメータ:
position - the location to make the replacement. This is not the location in the underlying storage array, but the location in the contiguous space being modeled.
rmSize - the number of items to remove
addItems - the new items to place in storage.

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.