Java プラットフォーム 1.2

javax.swing.text
クラス GapContent

java.lang.Object
  |
  +--javax.swing.text.GapVector
        |
        +--javax.swing.text.GapContent

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  int getArrayLength()
          割り当てられた配列の長さを取得します。
 void getChars(int where, int len, Segment chars)
          コンテンツの一部を取得します。
protected  Vector getPositionsInRange(Vector v, int offset, int length)
          offsetoffset + length の範囲の Position に対応する、UndoPosRef のインスタンスが格納されている Vector を返します。
 String getString(int where, int len)
          コンテンツの一部を取得します。
 UndoableEdit insertString(int where, String str)
          文字列をコンテンツに挿入します。
 int length()
          コンテンツの長さを返します。
 UndoableEdit remove(int where, int nitems)
          コンテンツの一部を削除します。
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 のインスタンスに対して、位置をリセットします。
 
クラス javax.swing.text.GapVector から継承したメソッド
getArray, getGapEnd, getGapStart, replace
 
クラス 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 オブジェクトを、指定された初期サイズで作成します。
パラメータ:
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、where + 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 の範囲の Position に対応する、UndoPosRef のインスタンスが格納されている Vector を返します。v が null ではない場合は、適合した Position がその中に置かれます。適合した Position が格納されている Vector が返されます。
パラメータ:
v - 使用する Vector。null の場合は、新しく作成される
offset - 開始位置のオフセット >= 0
length - 範囲の長さ >= 0
戻り値:
インスタンスのセット

updateUndoPositions

protected void updateUndoPositions(Vector positions,
                                   int offset,
                                   int length)
positions 内にあるすべての UndoPosRef のインスタンスに対して、位置をリセットします。
パラメータ:
positions - リセット対象の UndoPosRef のインスタンス

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.