JavaTM 2 Platform
Standard Ed. 5.0

javax.swing.text
クラス GapContent

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  Object allocateArray(int len)
          項目を格納するための適切 な型の配列を割り当てます。
 Position createPosition(int offset)
          コンテンツが変更されたと きに変更を追跡するコンテンツ内の位置を作成します。
protected  Object getArray()
          配列にアクセスします。
protected  int getArrayLength()
          割り当てられた配列の長さ を返します。
 void getChars(int where, int len, Segment chars)
          コンテンツの一部を取り出 します。
protected  int getGapEnd()
          ギャップの最後にアクセスします。
protected  int getGapStart()
          ギャップの最初にアクセスします。
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)
          記憶領域の任意の論理位置を任意の新しい項目で置換します。
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)
項目を格納するための適切な型の配列を割り当てます。配列の型は、サブクラスで決定します。


getArrayLength

protected int 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)
ギャップを拡大し、これにより、必要なデータを移動して適切なマークを更新します。


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

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()
配列にアクセスします。配列の実際の型はサブクラスのみが認識します。


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 - 記憶領域に置かれる新しい項目

JavaTM 2 Platform
Standard Ed. 5.0

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

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。